软件工程软件测试精.ppt
软件工程软件测试第1页,本讲稿共49页软软 件件 工工 程程-软件测试软件测试2第2页,本讲稿共49页防不胜防的软件错误防不胜防的软件错误 例:例:1963年年,美国美国,飞往火星的火箭爆炸飞往火星的火箭爆炸,损失损失$10 million.原因原因:FORTRAN循环循环 DO 5 I=1,3 误写为误写为 DO 5 I=1.3软软 件件 测测 试试 (Testing)软件测试是保证软件质量的关键步骤,是对软件规格软件测试是保证软件质量的关键步骤,是对软件规格说明、设计和编码的最后复审,其工件量约占总工作说明、设计和编码的最后复审,其工件量约占总工作量量40%以上(对于人命关天的情况,测试相当于其它以上(对于人命关天的情况,测试相当于其它部分总成本的部分总成本的3 5倍倍)。)。3第3页,本讲稿共49页1.基本概念基本概念1、定义:测试是为了、定义:测试是为了发现程序中的错误发现程序中的错误而执行程序的过而执行程序的过程。程。注意:注意:只能尽可能查错,不能证明程序中只能尽可能查错,不能证明程序中 没有错;没有错;测试员与程序员不应是同一个人。测试员与程序员不应是同一个人。2、黑盒和白盒测试、黑盒和白盒测试 黑盒测试黑盒测试(black-box,or closed-box testing):不不考考虑虑程程序序内内部部的的结结构构,只只观观察察程程序序的的入入口口和和出出口口,是是否否能能完成规格要求的输入输出完成规格要求的输入输出.功能测试功能测试4第4页,本讲稿共49页 白盒测试白盒测试(white-box,or open-box,clear-box testing):程序的结构和处理过程象白盒子一样透明程序的结构和处理过程象白盒子一样透明.结构测试结构测试1.基本概念基本概念若若程程序序执执行行需需10-3秒秒,则则对对于于所所有有合合法法输输入入的的测测试试大约需用一万年,而且还应测试输入非法数据的情况。大约需用一万年,而且还应测试输入非法数据的情况。主要问题:穷尽测试主要问题:穷尽测试(complete test)通常是不可能的。通常是不可能的。例:例:(Black-box)程序要求输入程序要求输入3个整形数据。若字长个整形数据。若字长16位,位,则各种可能输入的排列组合共有则各种可能输入的排列组合共有 (种)(种)5第5页,本讲稿共49页例:例:(White-box)下图所示的程序中共有下图所示的程序中共有 520 1014条可能条可能的执行通路,显然,每条通路都执行一遍是不的执行通路,显然,每条通路都执行一遍是不现实的。现实的。1.基本概念基本概念循环循环2020次次6第6页,本讲稿共49页3、测试步骤:测试步骤:(1)单元测试单元测试 程序设计程序设计&编码编码 bugs(2)集成测试集成测试 模块之间的连接模块之间的连接(3)系统测试系统测试 需求需求&系统设计系统设计(4)验收测试验收测试 用户参与用户参与(5)平行测试平行测试 新老系统进行比较新老系统进行比较.综合综合测试测试1.基本概念基本概念测试阶段的信息流:测试阶段的信息流:测试测试评价评价调试调试可靠性可靠性模型模型软件配置软件配置测试配置测试配置测试结果测试结果可靠性预测可靠性预测错错 误误正正 确确错误率数据错误率数据预期结果预期结果7第7页,本讲稿共49页2.单元测试(白盒)单元测试(白盒)主要测试以下五个方面:主要测试以下五个方面:1、模块接口:、模块接口:内部检查:传输参数的数目、属性、单位、次序是否内部检查:传输参数的数目、属性、单位、次序是否匹配;全程变量的定义是否一致;只做输入的变元匹配;全程变量的定义是否一致;只做输入的变元有无被修改,等等。有无被修改,等等。外部检查:打开、结束、关闭文件的操作;文件和属外部检查:打开、结束、关闭文件的操作;文件和属性;性;IO错误处理;输出拼写,等等。错误处理;输出拼写,等等。2、局部数据结构:、局部数据结构:数据说明数据说明(declaration);初始化与缺省值的设置;变;初始化与缺省值的设置;变量名拼写;数据类型的相容性;上量名拼写;数据类型的相容性;上下溢出及地址异下溢出及地址异常,等等。常,等等。8第8页,本讲稿共49页2.单元测试单元测试3、重要的执行通路:、重要的执行通路:由于穷尽测试不可能,故通常针对最常见的错由于穷尽测试不可能,故通常针对最常见的错误设计测试方案。误设计测试方案。4、出错处理通路:、出错处理通路:预见出现错误的条件,设置处理。预见出现错误的条件,设置处理。5、边界条件、边界条件 单元测试中最后,也可能是最重要的单元测试中最后,也可能是最重要的任务,因为软件常在其边界失效。任务,因为软件常在其边界失效。9第9页,本讲稿共49页1、代码审查、代码审查(code inspection)彻彻底底检检查查:例例如如 Lucent Technologies 的的测测试试策策略略,是是由由三三人人一组一组(包括包括 author,reader,和和recorder),逐行检查源代码。,逐行检查源代码。演习:由人扮演演习:由人扮演computer,模拟执行情况。,模拟执行情况。2.单元测试单元测试优点优点:一次审查可发现多个错误,不必改一个测一个。一次审查可发现多个错误,不必改一个测一个。单元测试的主要手段单元测试的主要手段:2、制作测试软件:、制作测试软件:Stub(存根)和(存根)和 Driver(驱动)软件的编(驱动)软件的编写,属额外开支。模块高内聚可简化这一过程。写,属额外开支。模块高内聚可简化这一过程。10第10页,本讲稿共49页3.集成测试集成测试 (Integration Testing)1、非渐增式测试、非渐增式测试(Big-bang testing)Test A,B,C,DTestATestBTestCTestD11第11页,本讲稿共49页3.集成测试集成测试两种方式的比较:两种方式的比较:Incremental testing 可以较早发现模块间的接口错误;可以较早发现模块间的接口错误;Big-bang testing 最后才组装,因此错误发现得晚。最后才组装,因此错误发现得晚。Big-bang testing 中发现错误后难以诊断定位;中发现错误后难以诊断定位;Incremental testing 中,出现的错误往往跟最新加入的模块有关。中,出现的错误往往跟最新加入的模块有关。Incremental testing 在不断集成的过程中使模块不断在新的条在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底。件下受到新的检测,测试更彻底。Incremental testing 较较 Big-bang testing 费时。费时。Big-bang testing 可以同时并行测试所有模块,能充分利用人力。可以同时并行测试所有模块,能充分利用人力。2、渐增式测试、渐增式测试(Incremental testing)12第12页,本讲稿共49页 自顶向下测试自顶向下测试第第1步:测试顶端模块,用存根程序步:测试顶端模块,用存根程序(stub)代替直接附属的下层模块代替直接附属的下层模块 Stub:模拟未测试模块的活动模拟未测试模块的活动.3.集成测试集成测试3、Incremental testing 的几种策略的几种策略MS1S213第13页,本讲稿共49页第第2步:根据深度优先或宽度优先的策略,每次用一个步:根据深度优先或宽度优先的策略,每次用一个实际模块代换一个实际模块代换一个stub。3.集成测试集成测试第第3步:在结合进一个模块的同时进行测试。步:在结合进一个模块的同时进行测试。MS1S2M1S3S4M2S2第第4步:回归测试步:回归测试(regression testing)全部或部分全部或部分地重复以前做过的测试。地重复以前做过的测试。14第14页,本讲稿共49页 自底向上测试自底向上测试第第1步:把低层模块组合成族,每族实现一个子功能。步:把低层模块组合成族,每族实现一个子功能。第第2步:用驱动程序步:用驱动程序(Driver)协调测试数据的协调测试数据的IO,测试,测试子功能族。子功能族。3.集成测试集成测试优点:在早期即对主要控制及关键的抉择进行检验。优点:在早期即对主要控制及关键的抉择进行检验。问题:问题:Stub只是对低层模块的模拟,测试时没有重要的数只是对低层模块的模拟,测试时没有重要的数据自下往上流,许多重要的测试须推迟进行,而且据自下往上流,许多重要的测试须推迟进行,而且在早期不能充分展开人力。在早期不能充分展开人力。Driver:调用模块细节逐个进行测试调用模块细节逐个进行测试.DM1M215第15页,本讲稿共49页第第3 3步:去掉步:去掉DriverDriver,自下而上把子功能族合成更,自下而上把子功能族合成更大的子功能族。大的子功能族。MMMMMMMMMMMMDDDDDD3.集成测试集成测试注意:注意:两种策略的两种策略的优、缺点刚好互补,优、缺点刚好互补,但单用其中任一种但单用其中任一种都不实际,通常根都不实际,通常根据软件的特点将二据软件的特点将二者混用。者混用。16第16页,本讲稿共49页 Sandwich testing(三文治测试)(三文治测试)3.集成测试集成测试Target layerTop-downBottom-up17第17页,本讲稿共49页4.验收测试验收测试(Acceptance testing)任务:验收软件的有效性(功能和性能达标)。任务:验收软件的有效性(功能和性能达标)。手段:黑盒测试;用户参与;主要用实际数据进行手段:黑盒测试;用户参与;主要用实际数据进行测试。测试。内容:按合同规定审查软件配置;内容:按合同规定审查软件配置;设计测设计测试计划,使通过测试保证软件能满足所有功试计划,使通过测试保证软件能满足所有功能、性能要求;能、性能要求;文档与程序一致,文档与程序一致,具有维护阶段所必须的细节;具有维护阶段所必须的细节;严格按用户手册操作,以检查手册的完整性严格按用户手册操作,以检查手册的完整性和正确性。和正确性。18第18页,本讲稿共49页5.设计测试方案设计测试方案(Plan of testing)主要技术:主要技术:1、逻辑覆盖、逻辑覆盖(Logical coverage)适用于白盒测试适用于白盒测试 覆盖程度由弱到强顺次为:覆盖程度由弱到强顺次为:语句覆盖语句覆盖(Statement coverage):每个语句至少执行一每个语句至少执行一次。次。任务:任务:预定要测试的功能预定要测试的功能 设计输入的测试数据设计输入的测试数据(test cases)列出预期结果列出预期结果(expected output)19第19页,本讲稿共49页5.设计测试方案设计测试方案例:例:问问题题:若若AND错错写写为为OR,或或 X1错错写写为为X 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FFTest case:A=2,B=0,X=4.20第20页,本讲稿共49页判定覆盖判定覆盖(Branch coverage):在:在的基础上,每个的基础上,每个判定的每个分支至少执行一次。判定的每个分支至少执行一次。5.设计测试方案设计测试方案Test cases:A=3,B=0,X=3A=2,B=1,X=1问题:若问题:若X1错写错写为为X 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FF21第21页,本讲稿共49页 条件覆盖条件覆盖(Condition coverage):在:在的基础上,使每个的基础上,使每个判定表达式的每个条件都取到各种可能的结果。判定表达式的每个条件都取到各种可能的结果。5.设计测试方案设计测试方案Test cases:A=2,B=0,X=4(满足(满足A1,B=0;A=2,X1)A=1,B=1,X=1(满足满足A 1,B 0;A 2,X 1)问:条件覆盖问:条件覆盖?判定覆盖判定覆盖 答答:不一定。不一定。反例反例:A=2,B=0,X=1 A=1,B=1,X=2 判定判定/条件覆盖:即条件覆盖:即判定覆盖判定覆盖 条件覆盖条件覆盖 入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FF22第22页,本讲稿共49页 条件组合覆盖:每个判定表达式中条件组合覆盖:每个判定表达式中条件的各种可能组合都至少出现一条件的各种可能组合都至少出现一次。次。5.设计测试方案设计测试方案入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FF全部可能的条件组合为:全部可能的条件组合为:A1,B=0 A1,B 0 A 1,B=0 A 1,B 0 A=2,X1 A=2,X 1 A 2,X1 A 2,X 1 Test cases:A=2,B=0,X=4 (T T)A=2.B=1,X=1 (F T)A=1,B=0,X=2 (F T)A=1,B=1,X=1 (F F)问题:没有测试到问题:没有测试到(T F)的情形的情形23第23页,本讲稿共49页考察考察control flow graph 的角度,还可考虑下述覆盖:的角度,还可考虑下述覆盖:点覆盖点覆盖5.设计测试方案设计测试方案 边覆盖边覆盖=语句覆盖语句覆盖 路径覆盖路径覆盖(Path coverage):每条可能的路径都至少执行一每条可能的路径都至少执行一次,若图中有环,则每个环至少经次,若图中有环,则每个环至少经过一次。过一次。=判定覆盖判定覆盖Test cases:A=1,B=1,X=1 A=1,B=1,X=2 A=3,B=0,X=1 A=2,B=0,X=4 路径覆盖路径覆盖 条件组合覆盖条件组合覆盖24第24页,本讲稿共49页 划分经验划分经验 当规定了输入范围时:当规定了输入范围时:5.设计测试方案设计测试方案2、等价划分、等价划分(Equivalence Partitioning)适用于黑盒测试适用于黑盒测试 划划分分一一组组 等等价价类类 描描绘绘一一组组输输入入条条件件的的有有效效或或无无效效条条件件,测测试试程程序序是是否否有设计方案中该有的输出结果有设计方案中该有的输出结果.无效类无效类 有效类有效类 无效类无效类 当当规规定定了了输输入入的的一一组组值值,且且对对不不同同值值做做不不同同处处理理时时:例例:教教工工分分房房方方案案中中,按按教教授授、副副教教授授、讲讲师师、助助教教分分别别计计分分 有效类有效类4个;无效类个;无效类1个个25第25页,本讲稿共49页 当规定了输入的规则时:当规定了输入的规则时:例:例:(PASCAL)语言规定,每个语句以语言规定,每个语句以“;”结结 束束 有效有效类类1个;无效类若干(以个;无效类若干(以“,”结束、以结束、以“:”结束、以结束、以空格结束等等)空格结束等等)当输入为整型时:有效类可分为当输入为整型时:有效类可分为Z+、0、Z 三种三种 当处理表格时:有效类可分为空表、含一项的表、含当处理表格时:有效类可分为空表、含一项的表、含多项的表等多项的表等注:注:以上经验亦适用于输出数据;以上经验亦适用于输出数据;不需要测试编译程序肯定能发现的错误不需要测试编译程序肯定能发现的错误。5.设计测试方案设计测试方案26第26页,本讲稿共49页 设计步骤设计步骤 设计一个新方案以设计一个新方案以尽可能多尽可能多地覆盖尚未被覆盖的地覆盖尚未被覆盖的有效有效等价类;重复这一步骤直到所有等价类;重复这一步骤直到所有有效类有效类都被覆盖为都被覆盖为止。止。设计一个新方案以覆盖设计一个新方案以覆盖一个且仅一个一个且仅一个尚未被覆盖的尚未被覆盖的无无效效等价类;重复这一步骤直到所有等价类;重复这一步骤直到所有无效类无效类都被覆盖都被覆盖为止。(通常程序执行一个错误后即不继续检测为止。(通常程序执行一个错误后即不继续检测其它错误,故每次只测一个无效类)其它错误,故每次只测一个无效类)5.设计测试方案设计测试方案27第27页,本讲稿共49页3、边界值分析、边界值分析(Boundary Value Analysis)注意:注意:程序最容易在边界发生错误;程序最容易在边界发生错误;通常与等价划分结合进行。通常与等价划分结合进行。4、错误推测、错误推测(Failure Prediction)思路:思路:列出可能有的错误;列出可能有的错误;列出容列出容易发生错误的特殊情况。易发生错误的特殊情况。以此为基础设计以此为基础设计测试方案。测试方案。根据:直觉、经验根据:直觉、经验工具:常见错误清单、判定表等。工具:常见错误清单、判定表等。5.设计测试方案设计测试方案28第28页,本讲稿共49页5、实用策略、实用策略(Practical Strategies)黑盒设黑盒设计计 白盒补充白盒补充 在任何情况下都应该使用在任何情况下都应该使用边界值分析边界值分析的方法;的方法;必要时用必要时用等价划分法等价划分法补充;补充;必要时再用必要时再用错误推测法错误推测法补充;补充;对照程序逻辑,检查测试方案。可根据对程序对照程序逻辑,检查测试方案。可根据对程序可靠性的要求采用不同的可靠性的要求采用不同的逻辑覆盖标准逻辑覆盖标准,必要时,必要时补充一些测试方案。补充一些测试方案。注注:即使用上述综合策略设计测试方案,仍不能保证发即使用上述综合策略设计测试方案,仍不能保证发现一切错误。例如现一切错误。例如Lucent公司经过包括逐行检查公司经过包括逐行检查源代码在内的多方面测试之后,其软件能达标运源代码在内的多方面测试之后,其软件能达标运行的成功率为行的成功率为 5.设计测试方案设计测试方案80%。29第29页,本讲稿共49页6.调调 试试(Debugging)测试测试 发现错误发现错误调试调试 改正错误改正错误第第1步:确定错误的位置步:确定错误的位置(95%工作量工作量);第第2步:步:改正错误。改正错误。Failure(外错误)(外错误)通常是由系统设计产生的通常是由系统设计产生的.Fault(故障、内错误、(故障、内错误、error、bug)起因于软件生产中的人为错误起因于软件生产中的人为错误.程序的程序的 failure 通常有一个清晰的表现特征,但是通常有一个清晰的表现特征,但是 fault 往往很难被发现。往往很难被发现。30第30页,本讲稿共49页Execution of casesTestcasesResultsDebuggingAdditional testsSuspected causesIdentified causesCorrectionsRegression testsDebugging6.调调 试试31第31页,本讲稿共49页1、调试技术、调试技术 输出存储器内容输出存储器内容(memory dump):以八进制以八进制或十六进制的形式印出存储器的内容。或十六进制的形式印出存储器的内容。缺点:缺点:输出信息量极大,输出信息量极大,不易解读且大多不易解读且大多无用;无用;输出的是程序在某一输出的是程序在某一 时刻的时刻的静态情况,且静态情况,且 往往不是出错往往不是出错时的状态。时的状态。6.调调 试试32第32页,本讲稿共49页 插入插入“watch points”(或称或称“spy points”)人工插入打印人工插入打印 缺点:缺点:改动源代码,增加了出错机会;改动源代码,增加了出错机会;打印打印信息可能太多。信息可能太多。自动调试工具自动调试工具 无须打印额外信息,且不改动无须打印额外信息,且不改动源代码源代码6.调调 试试33第33页,本讲稿共49页2、调试策略、调试策略 调试过程的关调试过程的关键不是调试技术,而是用来推断错误原因的基本键不是调试技术,而是用来推断错误原因的基本策略。主要有:策略。主要有:试探法,凭经验猜测。试探法,凭经验猜测。回溯法:由症状回溯法:由症状(symptom)最先出现的地方,沿最先出现的地方,沿control flow向回检查。适用于小型程序。向回检查。适用于小型程序。对分法:在关键点插入变量的正确值,则:对分法:在关键点插入变量的正确值,则:6.调调 试试输出正确输出正确错误在前半段错误在前半段错误在后半段错误在后半段NY34第34页,本讲稿共49页收集数据收集数据组织数据组织数据研究数据研究数据间的关系间的关系提出假设提出假设证明假设证明假设纠正错误纠正错误能能能能不不能能不能不能6.调调 试试 归纳法:从错误症状中找出规律,推断根源。归纳法:从错误症状中找出规律,推断根源。35第35页,本讲稿共49页列举可能列举可能的原因的原因排除不正确排除不正确的假设的假设精化余下精化余下的假设的假设证明证明假设假设收集更多数据收集更多数据纠正纠正错误错误有剩余有剩余能能不能不能无剩余无剩余 演绎法:普通演绎法:普通 特殊特殊 从假设中逐从假设中逐步排除、精化,从而导出错误根源。步排除、精化,从而导出错误根源。6.调调 试试36第36页,本讲稿共49页7.软件可靠性软件可靠性(Reliability)1、基本概念、基本概念 可靠性可靠性(Reliability):程序在给定的程序在给定的时间间隔内时间间隔内,按照,按照说明书的规定,成功地运行的概率。说明书的规定,成功地运行的概率。可用性可用性(Usability):程序在给定的:程序在给定的时间点时间点,按照说,按照说明书的规定,成功地运行的概率。明书的规定,成功地运行的概率。正确性正确性(Correctness):程序的功能正确。程序的功能正确。ReliabilityCorrectnessUsability37第37页,本讲稿共49页7.软件可靠性软件可靠性设系统故障停机时间为设系统故障停机时间为td1,td2,;正常运行时间为正常运行时间为tu1,tu2,;则系统的则系统的“稳态可用性稳态可用性”为为Availability=(Shooman,1983)其中其中 MTTF=Mean Time To Failure=MTTR=Mean Time To Repair=0ttu1td1tu2td238第38页,本讲稿共49页2、估算、估算 MTTF:MTTF=7.软件可靠性软件可靠性其中:其中:K为经验常数(典型值约在为经验常数(典型值约在200左右);左右);ET为测试前故障总数;为测试前故障总数;IT为程序长度(机器指令总数);为程序长度(机器指令总数);为测试(包括调试)时间;为测试(包括调试)时间;EC()为时间从为时间从0至至 期间改正的错误数。期间改正的错误数。前提假设:前提假设:ET/IT Constant(通常为(通常为0.5 2%)调试中没有引入新故障(即调试中没有引入新故障(即ET与时间与时间 无关)无关)MTTF与剩余故障成反比与剩余故障成反比39第39页,本讲稿共49页换个角度看问题换个角度看问题7.软件可靠性软件可靠性意义:可根据对软件平稳运行时间的要求,估算需改正意义:可根据对软件平稳运行时间的要求,估算需改正多少个错误后才能结束测试。多少个错误后才能结束测试。还有一个问题还有一个问题 ET=?估算方法:估算方法:植入故障法:植入故障法:人为植入人为植入NS个故障,测后发现个故障,测后发现ns个植入故障和个植入故障和n个原有个原有故障,则设故障,则设40第40页,本讲稿共49页 Hyman 分别测试法:分别测试法:二人(组)分别独立测试同一程序,甲测得故障总数二人(组)分别独立测试同一程序,甲测得故障总数为为B1,乙测得为,乙测得为B2,其中有,其中有bc是相同的,设以甲的测是相同的,设以甲的测试结果为基准(即相当于试结果为基准(即相当于中的植入故障),则设中的植入故障),则设7.软件可靠性软件可靠性一般多测几个一般多测几个 取平均。取平均。41第41页,本讲稿共49页3、正确性说明、正确性说明 目标:研究能证明程序正确性的自动系统。目标:研究能证明程序正确性的自动系统。7.软件可靠性软件可靠性p1p2p3pn-1pna(1)=inputa(2)a(3)a(n-1)a(n)=outputa(i):断言断言(assertion)证明:对任一个证明:对任一个i,执行了,执行了pi到到pi+1之间的语句后,可将之间的语句后,可将a(i)变为变为a(i+1),则证明由,则证明由a(1)可可导出导出a(n)。若。若a(1)和和a(n)正确,正确,且程序确定可终止,则证明且程序确定可终止,则证明程序正确。程序正确。但是:即使有了正确性证明程序,软件测试也仍然是需但是:即使有了正确性证明程序,软件测试也仍然是需要的。要的。因为:因为:正确性证明只证明程序功能正确,但不能正确性证明只证明程序功能正确,但不能验证动态特性;验证动态特性;证明过程本身也可能发生错误。证明过程本身也可能发生错误。原理:原理:42第42页,本讲稿共49页100%50%100%测试用例完成率测试用例完成率 =已完成用例已完成用例 /全部用例全部用例测试时间使用率测试时间使用率 =所所用时间用时间 /总时间总时间第一第一阶段阶段第二第二阶段阶段第三第三阶段阶段8.日立预测法日立预测法日立预测法日立预测法 测试期间绘制并检查两种曲线测试期间绘制并检查两种曲线1、测试完成率曲线:、测试完成率曲线:经验:经验:工程的成败取决工程的成败取决于第一阶段向第于第一阶段向第二阶段转移断点二阶段转移断点的位置,一般成的位置,一般成功的工程其转折功的工程其转折点位于点位于15%;若;若超过超过55%则破则破产不可避免。产不可避免。43第43页,本讲稿共49页错误发现率错误发现率=单位时间内发现的错误数单位时间内发现的错误数时间时间峰值时间峰值时间成成功功的的工工程程失败的工失败的工程程极坏的工程极坏的工程8.日立预测法日立预测法2、错误发现率曲线:、错误发现率曲线:经验:经验:刚过峰值点后刚过峰值点后曲线的导数关曲线的导数关系到工程的成系到工程的成败。若导数值败。若导数值大于大于-0.3,则失,则失败不可避免败不可避免。44第44页,本讲稿共49页其它可靠性预测模型其它可靠性预测模型(reliability prediction model):最早:最早:Jelinski-Moranda model (1972)最广泛应用:最广泛应用:Musa model (1990)最近:最近:Fenton-Pfleeger model (1997)8.日立预测法日立预测法45第45页,本讲稿共49页9.自动测试工具自动测试工具1、测试数据生成程序、测试数据生成程序(Test case generator):功能:自动生成大量输入数据功能:自动生成大量输入数据主要用于:主要用于:测试系统测试系统在实际环境中的性能(例如测试数据库管理系统)在实际环境中的性能(例如测试数据库管理系统)自动校核系统输出自动校核系统输出(若输出数据的语法可以被形式若输出数据的语法可以被形式地说明地说明)缺点:不能自动生成预期的输出,因此用途有限。缺点:不能自动生成预期的输出,因此用途有限。46第46页,本讲稿共49页9.自动测试工具自动测试工具2、动态分析程序、动态分析程序(Dynamic analyzer)功能:分析程序中每个语句的执行次数。功能:分析程序中每个语句的执行次数。组成:组成:检测部分:插检测部分:插入检测语句,负责收集、整理语句执行次数;入检测语句,负责收集、整理语句执行次数;显示部分:以容易理解的形式印出收集的信息。显示部分:以容易理解的形式印出收集的信息。用途:用途:发现测试中没有发现测试中没有执行的语句,以增加相应的测试用例;执行的语句,以增加相应的测试用例;发现不按要求终结的循环;发现不按要求终结的循环;发现发现不应执行却执行了的代码,及应执行而未执行的代码。不应执行却执行了的代码,及应执行而未执行的代码。47第47页,本讲稿共49页3、静态分析程序、静态分析程序(Static analyzer)不执行程序,仅扫描程序的正文,从中寻找可能导不执行程序,仅扫描程序的正文,从中寻找可能导致错误的异常情况。致错误的异常情况。9.自动测试工具自动测试工具4、文件比较程序、文件比较程序(File inspector)主要步骤:主要步骤:建立一个文件存放预期的正确结果;建立一个文件存放预期的正确结果;执行测试,将输出数据存进另一个文件;执行测试,将输出数据存进另一个文件;使用文件比较程序来比较上述两个文件,印出两者之使用文件比较程序来比较上述两个文件,印出两者之差异。差异。48第48页,本讲稿共49页小结小结F 软件设计软件设计主要任务是根据需求规格说明导出系统的实主要任务是根据需求规格说明导出系统的实现方案,分为概要设计和详细设计两部分现方案,分为概要设计和详细设计两部分 主要概念:主要概念:模块化模块化、抽象抽象、信息隐蔽信息隐蔽。尽量保证。尽量保证模模块的独立性块的独立性。SDSD分析方法分析方法分为变换分析和事务分析,要将分为变换分析和事务分析,要将DFDDFD转换为转换为SCSC图,最后完成概要设计的文档图,最后完成概要设计的文档概要设计概要设计49第49页,本讲稿共49页