软件工程第12章_第1页
软件工程第12章_第2页
软件工程第12章_第3页
软件工程第12章_第4页
软件工程第12章_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

15九月20241软件工程第12章软件测试第一讲基础知识引言基本概念测试原则测试方法15九月20242复习:软件开发过程一一对应

计划&&实施单元测试组装测试验收测试详细设计概要设计需求分析15九月20243软件问题案例中~外系统时钟误差累积联通2001年某市话费核算系统平均100元话费误差0.20元美国航天局火星登陆事故

系统测试衔接问题

15九月20244软件测试人才的现状三个招聘案慧谷-博为峰软件测试工作室曾经接受企业委托,招聘二十名软件测试工程师,结果收到的简历不到十份,合格的只有三份,最后录用的只有一人;而招聘一名程序员就会收到六十多份简历。上海一位软件企业的副总裁说,他们曾招聘8名基于Unix操作系统的测试工程师,但是半年多招不到合适的人。微软亚洲工程院院长张宏江博士曾经告诉媒体:“过去两三个月,我最主要的精力都花在雇人上。遗憾的是,1万多名应聘者中,居然找不到足够合适的人。”微软最紧缺的人才包括软件测试人员、软件项目管理员、软件架构师,1万多名应聘者中最后合格的只有50多人。15九月20245软件测试人才的现状(续)软件测试人才紧缺软件测试人才需求快速增长,体现在:(1)中国软件产业正在快速增长,需要大量软件相关人才;(2)软件企业的发展要求测试人才达到一个合适的比例。近一两年软件企业开始认识到软件测试对于提高软件质量的重要性,开始重视软件测试,但由于历史的原因,找不到合适的软件测试人员。15九月20246软件测试人员的合理比例在软件产业发达的国家:软件测试在人员配备和资金投入方面占据相当的比重。微软为打造Windows2000,1700多个开发人员,以及3200个测试人员,开发和测试人员之比约为三比五。HP公司的测试人员和开发人员的比例为一比一,这是很多先进软件企业通常的人员配比。在国内:企业往往忽视软件测试,很多企业都没有软件测试部门,甚至不设置软件测试的岗位,造成产品质量得不到保证。测试人员大都不到开发人员的5%,随着产业和企业的发展,企业必然需要大量的测试人员。15九月20247软件测试职业素质软件测试员的目标:

——发现潜在的软件缺陷软件测试员应具备的素质:①具有探索精神②具有创造性③坚持不懈精神④故障排除专家⑤判断准确⑥追求完美⑦沟通能力15九月20248软件测试基本概念定义执行程序、排除的错误的过程;是对软件规格说明、设计和编码的最全面最后的审查作用发现软件中的错误提高正确性、可靠性、质量工作量工作量占的40%以上,甚至3~5倍以上目标执行,以发现错误好用例,发现尚未发现的错误好测试,发现错的测试用例15九月20249微软核心项目组的人员构成ExchangeServer2000Windows2000程序经理约25人约250人开发工程师约140人约1700人测试工程师约350人约3200人测试\开发人员比例2.5:11.9:115九月202410软件测试阶段的信息流测试评价纠错可靠性评价软件配置测试配置测试结果错误错误统计预期结果正确的程序预期的可靠性15九月202411软件测试过程部件代码部件代码部件代码单元测试单元测试单元测试…其他软件需求设计规格说明系统功能需求用户需求规格说明集成测试集成后的模块功能测试功能系统性能测试验证,生效的软件验收测试被接受的系统安装测试用户环境在使用中的系统测试后的模块15九月202412软件测试的原则①尽早不断地进行软件“测试”②输入数据,合理不合理都要选③按阶段制定测试计划,严格执行④错多重测。⑤避免自测⑥勿用穷举⑦长期保存文档15九月202413软件测试方法静态测试采用人工检测和计算机辅助静态分析的方法对程序进行检测2种方法动态测试事先设计好一组测试用例,然后通过运行程序来发现错误15九月202414举例(穷举法)

一个简单程序:输入x、y,输出r,假定此程序在32位计算机上运行,且x,y均为整数,则输入数据可能的组合数目有几种?232*232=264(种)

15九月202415合理的输入:

x=4,y=2黑盒测试输入输出预期结果:

r=4x=-4,y=4x值有误x=0,y=0y值有误r=x+4/y输入整数x、y,求r值不合理的输入:

x=3.5,y=2.6值不正确???x=a,y=&又称功能测试,不考虑内部结构和处理过程,测试仅在接口上进行。主要应用于快速应用开发环境(RAD)。

RAD:RapidApplicationDevelopment

15九月202416

白盒测试完全了解程序的内部结构和详细的处理过程,测试在程序内部结构上进行。主要应用于结构化开发环境。15九月2024179.输出r值3.x值错10.结束6.y值错1.输入x,y2.x<0N4.r1=sqrt(x)5.y==07.r2=4/yN8.r=r1+r2路径1:1,2,3,10路径2:1,2,4,5,6,10路径3:1,2,4,5,

7,8,9,10测试数据1:x=-2,y=7测试数据2:x=4,y=0测试数据3:x=4,y=7YYYNYNNr=x+4/y开始15九月202418黑、白盒对比分析总结类型测试依据开发环境测试原则黑盒功能需求快速应用开发环境所有可能的输入及其结果白盒程序内部结构结构化开发环境覆盖所有的路径(语句)15九月202419软件测试中常见的错误类型性质、范围不同可分为代码数据功能系统15九月20242012.2软件测试技术一.白盒测试基础:内部逻辑结构原则:

独立路径、分支路径、条件结果、循环边界/一般条件、内部数据的有效性,至少各执行一次15九月202421白盒测试——逻辑覆盖名称测试内容弱强语句覆盖每条语句一次,查语句,不查判定条件判定覆盖判定每种结果(分支),含1,只覆全部路径一半条件覆盖每个条件的所有值,都满足判定/条件每个条件所有值;每个判定表达式的所有结果条件组合每个判定式条件各种可能值的组合路径所有可能路径(x>1)AND(y=0)(x=2)OR(z>1)语句段1语句段2开始结束TTFFabcde15九月2024224个条件,共有8种组合:①x>1,y=0;②x>1,y≠0;③x≤1,y=0;④x≤1,y≠0;⑤x=2,z>1;⑥x=2,z≤1;⑦x≠2,z>1;⑧x≠2,z≤1。(x>1)AND(y=0)(x=2)OR(z>1)语句段1语句段2开始结束TTFFabcdex=2,y=0,z=3;覆盖条件组合①和⑤,通过路径abcde;x=2,y=1,z=1;覆盖条件组合②和⑥,通过路径acde;x=0,y=0,z=3;覆盖条件组合③和⑦,通过路径acde;x=1,y=1,z=1;覆盖条件组合④和⑧,通过路径ace。但未通过路径abce。条件组合覆盖15九月202423路径覆盖共有4条路径,设计4组测试用例,就可以覆盖这4条路径:x=2,y=0,z=3;覆盖路径abcdex=2,y=1,z=1;覆盖路径acdex=1,y=1,z=1;覆盖路径acex=3,y=0,z=1;覆盖路径abce(x>1)AND(y=0)(x=2)OR(z>1)语句段1语句段2开始结束TTFFabcde没有覆盖条件组合③和⑦③x≤1,y=0⑦x≠2,z>115九月202424开始i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和6789101112举例15九月202425白盒测试——基本路径控制流程已知流图1环形复杂性2基本路径集合3测试用例412345689111012R1R2R4R67步骤2:据流图确定环形复杂性度量V(G):

1)V(G)=E–N+2=16–12+2=6;其中E为流图中的边数,N为结点数;

2)V(G)=6(个区域);

3)V(G)=P+1=5+1=6;其中P为谓词结点的个数。在流图中,结点2、3、5、6、9是谓词结点。步骤3:确定基本路径集合(即独立路径集合)。路径1:1—2—…—2—9—10—12路径2:1—2—9—11—12路径3:1—2—3—9—10—12路径4:1—2—3—4—5—8—2…路径5:1—2—3—4—5—6—8—2…路径6:1—2—3—4—5—6—7—8—2…步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。15九月2024261)路径1的测试用例:

score[k]=有效分数值,当k<i;

score[i]=–1,2≤i≤50;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。2)路径2的测试用例:

score[1]=–1;期望的结果:average=–1,其他量保持初值。3)路径3的测试用例:输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;期望结果:n1=50、且算出正确的总分和平均分。4)路径4的测试用例:

score[i]=有效分数,当i<50;

score[k]<0,k<i;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。15九月2024275)路径5的测试用例:

score[i]=有效分数,当i<50;

score[k]>100,k<i;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。6)路径6的测试用例:

score[i]=有效分数,当i<50;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。15九月202428白盒测试——循环测试1)对于最多为n次的单循环,可设计测试用例实现下列测试:①跳过循环,即一次也不执行;②仅循环1次;③循环2次;④循环m次,m<n;⑤分别循环n–1次,n次,n+1次。2)对于嵌套循环的测试:①从最内层循环开始测试,此时外层循环都取最小值,对内层进行单循环的测试;②向外退一层进行测试,此时其内层循环取一些典型值,其外层循环仍取最小值;③继续向外层扩展,直至测试完成。15九月202429

黑盒测试目的:主要是测试软件是否满足功能需求。测试的错误类型有:①不正确或遗漏的功能;②接口错误;③性能错误;④数据结构或外部数据访问错误;⑤初始化或终止条件错误等等。黑盒测试设计测试用例的方法:等价类的划分、边界值分析、错误推测、组合数据测试等。15九月202430黑盒测试——等价类划分【例14.1】设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2003年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。1)划分等价类并编号表14-1等价类划分的结果输入等价类有效等价类无效等价类日期的类型及长度①6位数字字符②有非数字字符③少于6位数字字符④多于6位数字字符年份范围⑤在1990~2003之间⑥小于1990⑦大于2003月份范围⑧在01~12之间⑨等于00⑩大于1215九月202431黑盒测试——等价类划分2)设计测试用例,以便覆盖所有的有效等价类(每个用例尽可能多地覆盖尚未被覆盖过的有效等价类)在表14-1中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:测试数据期望结果覆盖的有效等价类200211输入有效①、⑤、⑧15九月202432黑盒测试——等价类划分3)为每一个无效等价类设计一个测试用例,设计结果如下:

测试数据期望结果覆盖的无效等价类

95June无效输入②

20036无效输入③

2001006无效输入④

198912无效输入⑥

200401无效输入⑦

200100无效输入⑨

200113无效输入⑩15九月202433等价类划分的几条经验性原则①如果规定了输入值的范围,则可划分出一个有效的和两个无效的等价类。②如果规定了数据输入的个数,则可划分出一个有效的和两个无效的等价类。③如果规定了输入数据的一组值,而且程序对不同的输入值进行不同的处理,则每个允许的输入值是一个有效的等价类,有一个无效的等价类(这组值以外的值)。④如果规定了输入数据必须遵循的规则,则有一个有效的等价类和若干个无效的等价类(从不同的角度违反规则)。⑤如果输入条件规定了一个集合,则可划分出一个有效的等价类和一个无效的等价类。15九月202434黑盒测试——边界值分析边界值分析(boundaryvalueanalysis,BVA)是指设计测试用例,使程序在输入或输出的边界值或者边界值左右的值执行。边界值分析方法可以单独设计测试用例,也可以作为等价类划分方法的补充,即在各个等价类中主要是选择边界上及其左右的值。例如例14.1中对月份范围的测试就可以选择00、01、02、11、12、13等数据作为测试用例。15九月202435边界值分析方法设计测试用例的经验性原则1)如果输入条件指定了范围[a,b],则a、b以及紧挨a、b左右的各一个值都应作为测试用例。比如,学生成绩为[0,100],应取-1、0、1、99、100、101共6个值作为测试用例。2)如果输入条件指定了输入数据的个数范围,则按最大、最小个数及其左右的个数各设计一个测试用例。比如,一个输入文件应包括1~255个记录,则应分别设计输入0个、1个、2个、254个、255个、256个记录的测试用例。3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。15九月202436黑盒测试——错误推测基本思想是:程序测试员通过已经掌握的测试理论和实际测试中积累的经验,推测程序在哪些情况下可能发生错误,并将可能发生错误的情况列出,然后为每一可能发生错误的情况各设计一个测试用例。例如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:1)输入的线性表为空表;2)表中只含有一个元素;3)输入表中所有元素已排好序;4)输入表已按逆序排好;5)输入表中部分或全部元素相同。可以针对以上列出的每一种情况各设计一个测试用例。15九月202437黑盒测试——组合数据测试实践表明,在单个测试用例没有测试出错误的情况下,采用测试数据的某种组合却可能检测出程序中隐藏很深的错误。组合数据测试法可以采用的有效工具有判定表、判定树等。以判定表为例,即列出输入数据的各种组合情况和程序相应的动作、可能的输出结果之间的对应关系,然后为判定表的每一列至少设计一个测试用例。15九月202438测试执行的步骤:单元测试单元测试的内容

1)接口

2)局部数据结构

3)重要的执行路径

4)错误处理

5)边界测试模块(部件)详细设计15九月202439测试执行的步骤:集成测试集成测试的内容:①通过接口的数据②模块间的功能影响③子功能组合起来有没有实现主功能;④全局数据结构⑤误差积累接口概要设计15九月202440测试执行的步骤:集成测试自顶向下自底向上深度优先或广度优先15九月202441测试执行的步骤:验收测试集成测试的内容:又称为确认测试。确认测试是一种验收形式的测试,主要是检查软件是否满足软件需求规格说明书中的确认标准,即测试软件能否按照合同的要求运行。功能需求分析15九月202442测试执行的步骤:系统测试几类系统测试简介恢复测试安全测试强度测试压力测试性能测试其他15九月20244312.4调试——调试的概念

调试是在进行了一次成功的测试之后立即开始的。1调试的目的是确定错误的位置和引起错误的原因,并加以改正。因此,又称为排错或纠错。2错误定位是软件工程中最困难的工作,确定发生错误的位置和内在原因所需的工作量几乎占整个调试工作量的90%。315九月202444隐藏在程序中的错误的特殊的性质包括:①错误的表现远离引起错误的位置和内在原因,尤其对高度耦合的程序结构更是如此;②某些错误现象可能是假象;③纠正一个错误可能引起多个错误,也可能掩盖其他错误;④由于操作员的疏忽致使错误现象无法重现,很难追踪;⑤错误可能不是直接由程序引起的;⑥某些输入条件难于精确地再构造(如某些实时系统的输入次序不确定);⑦错误现象时有时无。12.4调试——调试的概念15九月20244512.4.2调试策略分为三类:原始类;归纳法排除类;回溯类。演绎法1.原始类(bruteforce)其主要思想是“通过程序运行现场找错”。例如输出存储器、寄存器的内容,在程序中插入打印语句等等。这种方法的效率低,还需要修改程序,更依赖测试人员的能力和经验。15九月20244612.4.2调试策略

2.归纳法调试1收集数据收集程序做对了什么和做错了什么的有关全部数据2整理、分析数据对收集的数据进行分析、比较和整理,注意观察数据间的关系,从错误的症状中发现线索3提出假设对这些线索进行研究和推测,提出有关错误产生的原因和部位的一个或多个假设。如果有多个假设,首先选择可能性最大的一个。4证明假设由数据验证或反正假设,如果假设得到证实,据此阅读程序找出出错原因和位置并进行改正;如果无法验证,则可能假设错误或有多重错误,需要提出新的假设,进行新的验证。15九月20244712.4.2调试策略3.演绎法调试演绎法是枚举所有可能引起出错的原因作为假设,然后从中排除不可能发生的原因和假设,对余下的假设进行不断地验证和改进,最后从中推演出出错的原因和部位。4.回溯法调试对小型程序进行调试,回溯法是一种有效的方法。该方法是从发现错误现象的地方出发,人工沿程序的控制流程向回追踪,直至找到产生错误的原因为止。但是,当程序的规模较大时,由于需回溯的路线显著增加,因此无法做到完全回溯,只好采用其他的调试方法。15九月20244812.5软件可靠性度量1.软件可靠性由于大型软件投入使用后还是要残留一定数量的错误。于是,当某些操作或输入数据导致遇到这些错误时,就会使程序失效,从而出现软件故障。软件可靠性定义为在某个给定时间间隔内,程序按照规格说明成功运行的概率。12.5.1软件可靠性的有关概念15九月2024491.软件可靠性令:随机变量t表示发生故障的时刻,t∈[0,∞];函数f(t)为随机变量t的概率密度函数,

F(t)表示分布函数;

P(0≤t≤t1)表示从初始时刻到t1时刻程序发生故障的概率。设:初始时刻程序运行正常,即F(0)=0。于是有:

F(t)=∫

f(x)dx(12-1)

f(t)=dF(t)(12-2)dt0t15九月202450令:Pf(t1)表示从0到t1时刻程序发生故障的概率,有:Pf(t1)=P(0≤t≤t1)=F(t1)–F(0)=F(t1)如果在[0,t]区间程序成功运行的概率为Ps(t)、发生故障的概率为Pf(t),则有:

Ps(t)+Pf(t)=1Ps(t)就是可靠性,一般标记为R(t)。由以上几个式子可导出:R(t)=1–Pf(t)=1–F(t)=1–∫f(x)dx(12-3)上式说明,当软件残留的错误数一定时,程序运行的时间越长,发生故障的次数越多,软件的可靠性越小。0t1.软件可靠性15九月202451dR(t)

R(t)下面引入故障率函数Z(t),以比较一个程序在不同时期、或不同程序在同一时期的可靠性。设系统一直成功运行至时刻t,t∈[t1,t1+△t],P(t1≤t≤t1+△t,t>t1)是系统在[t1,t1+△t]时间间隔且t>t1时发生故障的概率。故障率函数Z(t1)的值定义为:Z(t1)=limP(t1≤t≤t1+△t,t>t1)/△t(12-4)可以证明:

Z(t)=·

(12-5)对式(12-3)的两端对时间t求导得:

dF(t)/dt=–dR(t)/dt,代入上式,得:

=–Z(t)dt(12-6)

1R(t)dF(t)

d(t)1.软件可靠性15九月202452对上式两端积分,利用初始条件R(0)=1,可得:

R(t)=exp[–∫Z(x)dx](12-7)上式即为可靠性和故障率的基本方程式。据此可以导出几个常用的故障模型:

1)Z(t)=λ,其中λ是常数。将λ代入式(12-7),可得:

R(t)=e–λt

(12-8)上式称为故障率为常数的可靠性模型。由于故障率是常数,可靠性将随着时间t的增加呈指数衰减。t01.软件可靠性15九月2024532)Z(t)=kt,这里k为常数,t≥0。将kt代入式(12-7),可得:

R(t)=e–kt2/2

(12-9)上式称为故障率是时间的线性函数时的可靠性模型。即当存在损耗和退化时,故障率将随着时间的增加而线性增加。该模型一般不适合于软件产品。需要指出,软件中的错误一般都是人为的设计错误,其中多数是逻辑错误。随着对软件的测试及修复,软件系统中的错误会越来越少。因此,实际软件系统的故障率函数曲线应如图2-5-1所示,即软件故障率不是常数、也不是线性函数,而是按指数规律下降。实际的统计结果也说明了这一点。1.软件可靠性15九月202454图12-12软件系统故障率Z(t)Ot2.软件的有效性及其度量15九月2024552.软件的有效性及其度量软件的有效性函数A(t)定义为软件系统在时刻t按照规格说明成功运行的概率。可靠性与有效性之间的差别是,可靠性强调软件系统在0~t这段时间间隔内都有效,而有效性强调软件系统在时刻t这一时间点有效。A(200)=0.93表示假设有100个相同的系统同时启动运行,运行到200小时这一时刻,其中有93个处于正常运行状态,7个出现故障,等待修复。R(200)=0.93表示假设有100个相同的系统有93个无故障运行了200小时,有7个在此期间发生故障。15九月2024562.软件的有效性及其度量一般来说,对R(200)=0.93的要求比对A(200)=0.93的要求要严格得多。对于不可修复系统(即不允许程序停止运行的系统)或没有修复能力的情况:

A(t)=R(t)对于可修复系统并能及时修复的情况:

A(t)≥R(t)。15九月202457软件稳态有效性的两种度量方法1)软件系统投入运行后,在一段时间内,可统计软件系统的故障停机时间tdi和正常运行时间tuj,则软件系统的稳态有效性为:

A(t)=Tu/(Tu+Td

)(12-10)其中:t=Tu+Td,Td=∑tdi,Tu=∑tuj15九月202458软件稳态有效性的两种度量方法2)软件系统在稳态运行时,可统计其平均故障间隔时间MTBF(meantimebetweenfailurs,即程序正常运行时间的平均值)和平均修复时间MTTR(meantimetorepair,即平均停机时间),则软件系统的稳态有效性为:

A=MTBF/(MTBF+MTTR)(12-11)采用上述方法,在开发阶段和投入运行后都可以定量地度量软件系统的有效性和可靠性。软件系统投入运行的一段时间内,可以用各种输入和操作来引发程序中残留的错误,经过多次修复后错误将逐渐减少,有效性和可靠性将不断提高。15九月2024592.5.2软件可靠性的估算软件可靠性估算模型大致分为宏观和微观模型两类。宏观模型是从程序中残留错误数的角度建立模型,并用统计方法确定模型参数。而微观模型则以程序的控制结构和语句分析为基础。下面仅介绍几个典型的宏观模型。1.残留错误总数的估算模型对残留错误总数的估算是可靠性估算的基础。典型的估算模型:错误植入模型;分别测试模型。15九月2024601)错误植入模型Mills首先提出了估算程序中残留错误总数的错误植入模型。即在进行测试之前,由专人(比如统计人员)在程序中随机地植入一些错误(称为带有标记的错误),测试人员测试之后,通过统计测试人员发现的原有错误和植入错误的比例来估算程序中原有错误总数。设:Nt—

植入的错误数,n—

测试发现原有的错误数,

nt—发现植入的错误数,ET—

原有的错误总数。则有:ET/Nt≈n/nt于是ET的估算模型为:

ET=Nt·n/nt

(12-12)15九月2024612)分别测试模型1973年,Hyman对错误植入模型做了改进,即用甲、乙两个程序测试员同时对一个程序的两个副本进行独立测试。设:ET——程序中原有的残留错误总数,

E1——甲在[0,τ]时间内发现的错误数,

E2——乙在[0,τ]时间内发现的错误数,

E0——两人在[0,τ]时间内发现的相同的错误的个数,则有:ET=E1·E2/E0

(12-13)

Hyman提出的分别测试模型无论在技术上还是在经济上都比错误植入模型优越。15九月2024622.软件平均故障间隔时间的估算软件的平均故障间隔时间MTBF是可靠性度量的一个重要参数,往往作为一个重要的质量指标由用户提出来。下面介绍MTBF的估算方法。

1)软件故障率为常数当软件故障率λ为常数时,假设程序运行H小时,共发生r次故障,则λ的估算值为:

λ≈r/H于是有:

MTBF=1/λ=H/r(12-14)15九月2024632)软件故障率与程序残留错误数成正比设:IT—

程序代码长度;

ET—

测试之前程序中残留错误总数;

Ec(τ)—[0,τ]区间内改正的错误数;

Er(τ)—

在τ时刻程序中剩余的错误数;其中τ为调试和排错时间。于是,剩余的错误数为:

Er(τ)=ET

–Ec(τ)(12-15)15九月2024642)软件故障率与程序残留错误数成正比Er(τ)=ET

–Ec(τ)(12-16)用IT去除上式的两边,有:

Er(τ)/IT=ET/IT

–Ec(τ)/IT令:εr(τ)=Er(τ)/IT,εT=ET/IT,

εc(τ)=Ec(τ)/IT,于是有:

εr(τ)=εT

–εc(τ)(12-17)

15九月2024652)软件故障率与程序残留错误数成正比

由于软件故障率λ=λ(τ)与程序残留错误数成正比,所以有:

λ=kεr(τ)=k(εT–εc(τ))(12-18)

其中的比例因子k可通过实验测试和统计的方法来估算。设进行n次软件排错实验,时间区间为[0,τj],到τj

时刻为止,共排除了Ec(τj)个错误,而在时间区间[0,τj]内,程序运行了Hj小时,出现了rj个错误,

j=1,2,…,n。此时k的估计值为:

k

=∑rj/∑Hj[εT

–εc(τj)](12-19)nj=1nj=115九月2024662)软件故障率与程序残留错误数成正比k

=∑rj/∑Hj[εT

–εc(τj)](12-19)当n=1时,

k=r/H[εT

–εc(τ)](12-20)当n=2时,k=(r1+r2)/{H1[εT

–εc(τ1)]++H2[εT

–εc(τ2)]}(12-21)k的值估算出来之后,即可利用式(12-21)估算MTBF,它是τ的函数。15九月2024672)软件故障率与程序残留错误数成正比对于确定的τ值,λ=kεr(τ)为常数,于是,经过[0,τ]区间的排错后,软件可靠性估算为:

R(t)=exp[–kεr(τ)t]=exp(–t/MTBF)(12-22)上式中时间参数τ以月计,表示对程序调试和维护的时间,t∈[0,τ],以小时计,表示程序运行的时间。式2-46可理解为经过τ个月的调试后所达到的软件可靠性。15九月202468【例12-3】对一个包含10000LOC的程序进行一个月的测试后,总共改正了15个错误,此时MTBF=10h,又经过一个月测试后,改正了10个错误,此时MTBF=15h。试求出:1)测试前程序中的错误总数;2)为做到MTBF=100h,应进行多长时间的测试?此时程序中还残留多少个错误?3)分析测试各阶段的可靠性。解:1)∵λ=kεr(τ),MTBF=1/λEr(τ)=ITεr(τ)=IT/(k·MTBF)∴EC(τ)=ET

–IT/(k·MTBF)即:15=ET

–10000/(k·10)

15+10=ET

–10000/(k·15)解上述方程组,得:ET=45,k=100/312.5.3软件可靠性估算举例

15九月2024692)假设:单位时间内改正错误后剩余的错误数与改正前错误总数成正比,于是有:

Er(1)=k1ET

(1)

Er(2)=k1Er(1)=k12ET

(2)∴Er(τ)=k1τET

(3)由(1)式,45–15=k1×45,得k1=2/3,∴MTBF(τ)=IT/(kEr(τ))

=IT/(kk1τET

=10000/[(100/3)×(2/3)τ×45)]=6.666667×(3/2)τ

(4)

12.5.3软件可靠性估算举例

15九月202470MTBF(τ)=6.666667×(3/2)τ

(4)将已知MTBF(τ)=100,代入(4)式:

MTBF(τ)=(20/3)×(3/2)τ

100=(20/3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论