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

下载本文档

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

文档简介

1、软件工程的测试软件工程软件工程软件工程的测试第六章第六章软件项目的测试软件项目的测试软件测试基本概念软件测试基本概念1软件测试计划与测试分析报告软件测试计划与测试分析报告5软件测试的方法软件测试的方法2软件测试的步骤软件测试的步骤3程序调试程序调试4软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念 测试的目的是确保软件的质量,尽量找出软件测试的目的是确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没有错。错误并加以纠正,而不是证明软件没有错。v 19631963年美国飞往火星的火箭爆炸,原因是年美国飞往火星的火箭爆炸,原因是FORTRANFORTRAN程序:程序:v D

2、O 5 I=1DO 5 I=1,3 3 误写为:误写为:DO 5 I=1. 3 DO 5 I=1. 3 损失损失10001000万美元。万美元。v 19671967年苏联年苏联“联盟一号联盟一号”宇宙飞船返回时因忽略一个小数点,在进入宇宙飞船返回时因忽略一个小数点,在进入大气层时打不开降落伞而烧毁。大气层时打不开降落伞而烧毁。软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 一、为什么要进行软件测试一、为什么要进行软件测试 软件中存在错误是不可避免的软件中存在错误是不可避免的 软件是一种高密集度的智力产品软件是一种高密集度的智力产品 客观系统的复杂性客观系统的复杂性 人主观认识

3、的局限性人主观认识的局限性 信息通信不一致信息通信不一致 协调管理不完善协调管理不完善软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 二、测试的概念二、测试的概念v 1 1、软件测试、软件测试 软件测试是对软件计划、软件设计、软件编码进软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工行查错和纠错的活动(包括代码执行活动与人工活动)。活动)。测试的目的是找出软件设计开发全周期测试的目的是找出软件设计开发全周期中各个阶段的错误,以便分析错误的性质与位置中各个阶段的错误,以便分析错误的性质与位置而加以纠正。而加以纠正。纠正过程可能涉及到改正或者重

4、新纠正过程可能涉及到改正或者重新设计相关的文档活动。找错活动称为设计相关的文档活动。找错活动称为测试测试,纠错,纠错活动称为活动称为调试调试。软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 2 2、程序测试、程序测试 程序测试是早已流行的概念。它是对编码阶段的语法程序测试是早已流行的概念。它是对编码阶段的语法错、语义错、运行错进行查找的编码执行活动。找出错、语义错、运行错进行查找的编码执行活动。找出编码中错误的代码执行活动称程序测试。纠正编码中编码中错误的代码执行活动称程序测试。纠正编码中的错误的执行活动称程序调试。通过查找编码错与纠的错误的执行活动称程序调试。通过查找编码错

5、与纠正编码错来保证算法的正确实现。正编码错来保证算法的正确实现。 v 软件测试与调试覆盖软件生存周期的整个阶段,而程序测软件测试与调试覆盖软件生存周期的整个阶段,而程序测试与调试则仅限于编码阶段,软件测试中的单元测试与程试与调试则仅限于编码阶段,软件测试中的单元测试与程序测试十分相似,不同在于,单元测试还要测试模块间的序测试十分相似,不同在于,单元测试还要测试模块间的接口,并要设计与接口相关的模块。接口,并要设计与接口相关的模块。软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 3 3、软件确认与程序确认、软件确认与程序确认v 软件确认是广义上的软件测试,它是企图软件确认是广义

6、上的软件测试,它是企图证明程序软件在给定的外部环境中的逻辑正确证明程序软件在给定的外部环境中的逻辑正确性的一系列活动和过程,指需求说明书的确认,性的一系列活动和过程,指需求说明书的确认,程序的确认。程序确认又分成静态确认与动态程序的确认。程序确认又分成静态确认与动态确认。静态确认包括,正确性证明,人工分析,确认。静态确认包括,正确性证明,人工分析,静态分析。动态分析包括动态确认与动态测试。静态分析。动态分析包括动态确认与动态测试。软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 静态分析是不执行程序本身,分析程序正文可能导致错误静态分析是不执行程序本身,分析程序正文可能导致错误

7、的异常情况。可以人工的进行分析,也可以用测试工具静态分析的异常情况。可以人工的进行分析,也可以用测试工具静态分析程序来进行,被测试程序的正文做为输入,经静态分析程序分析程序来进行,被测试程序的正文做为输入,经静态分析程序分析得出分析结果。静态分析包括结构检查,流图分析,符号执行。得出分析结果。静态分析包括结构检查,流图分析,符号执行。v 动态分析是执行被测程序,从执行结果分析程序可能出现动态分析是执行被测程序,从执行结果分析程序可能出现的错误。可以人工设计程序测试用例,也可以由测试工具动态分的错误。可以人工设计程序测试用例,也可以由测试工具动态分析程序来做检测与分析。动态测试包括功能测试和结构

8、测试。动析程序来做检测与分析。动态测试包括功能测试和结构测试。动态测试的内容包括:单元测试,也称逻辑测试,模块测试,功能态测试的内容包括:单元测试,也称逻辑测试,模块测试,功能测试。组装测试也称集成测试,综合测试,或结构测试,子系统测试。组装测试也称集成测试,综合测试,或结构测试,子系统测试。系统测试是软硬件或子系统的组装测试。测试。系统测试是软硬件或子系统的组装测试。软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 4 4、各种软件错误的出现比例、各种软件错误的出现比例v 功能错,占整个软件错误功能错,占整个软件错误2727,是需求分析设计不完整,是需求分析设计不完整而引起的

9、。而引起的。v 系统错,占整个软件错误系统错,占整个软件错误1616,是总体设计错误而引起,是总体设计错误而引起v 数据错,占整个软件错误数据错,占整个软件错误1010,由编码错误引起的,由编码错误引起的v 编码错,占整个软件错误编码错,占整个软件错误4 4,程序员编码错误引起的,程序员编码错误引起的v 其它错,占整个软件错误其它错,占整个软件错误1616,文档错和硬件错所引起,文档错和硬件错所引起软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念n 三、软件测试的目标三、软件测试的目标n测试是为了发现程序中的错误而执行程序的过程;测试是为了发现程序中的错误而执行程序的过程;n好的

10、测试方案是极可能发现迄今为止尚未发现的错误好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;的测试方案;n成功的测试是发现了至今为止尚未发现的错误的测试成功的测试是发现了至今为止尚未发现的错误的测试软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 四、软件测试的原则四、软件测试的原则v 1 1、测试前要认定被测试软件有错,不要认为软件设有错。、测试前要认定被测试软件有错,不要认为软件设有错。v 2 2、要预先确定被测试软件的测试结果。、要预先确定被测试软件的测试结果。v 3 3、要尽量避免测试自己编写的程序。、要尽量避免测试自己编写的程序。v 4 4、测试要兼顾合理输入

11、与不合理输入数据。、测试要兼顾合理输入与不合理输入数据。v 5 5、测试要以软件需求规格说明书为标准。、测试要以软件需求规格说明书为标准。v 6 6、测试是相对的,不能穷尽所有的测试,要据人力物力安、测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法。排测试,并选择好测试用例与测试方法。v 7 7、充分注意测试中的群集现象、充分注意测试中的群集现象: :测试中发现的测试中发现的80%80%的错误可的错误可能来自于能来自于20%20%的程序代码的程序代码软件工程的测试6.1 6.1 软件测试基本概念软件测试基本概念v 四、软件测试的原则四、软件测试的原则n8 8、

12、严格执行测试计划、严格执行测试计划, ,尽量避免测试的随意性,尽量避免测试的随意性,从工程的角度理解软件测试,它是有组织、有从工程的角度理解软件测试,它是有组织、有计划、有步骤的活动计划、有步骤的活动n9 9、妥善保存测试计划、测试用例、出错统计和、妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便最终分析报告,为维护提供方便n1010、应当把、应当把“尽早地和不断地进行软件测试尽早地和不断地进行软件测试”作为软件测试人的座右铭作为软件测试人的座右铭软件工程的测试6.2 6.2 软件测试的方法软件测试的方法v 6.2.1 6.2.1 软件测试方法的分类软件测试方法的分类v 软件

13、测试方法分为两类:静态分析、动态测试。软件测试方法分为两类:静态分析、动态测试。v 一、静态分析技术一、静态分析技术v 不执行被测软件,可对需求分析说明书、软件设计说不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软明书、源程序做结构检查、流程分析、符号执行来找出软件错误。件错误。v 二、动态测试技术二、动态测试技术v 当把程序作为一个函数,输入的全体称为函数的定义当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。义域与输出值域的关

14、系。软件工程的测试6.2 6.2 软件测试的方法软件测试的方法v 动态测试的算法有:动态测试的算法有:选取定义域中的有效值,或定义域外无效值。选取定义域中的有效值,或定义域外无效值。对已选取值决定预期的结果。对已选取值决定预期的结果。用选取值执行程序。用选取值执行程序。观察程序行为,记录执行结果。观察程序行为,记录执行结果。将的结果与的结果相比较,不吻合则程序有错。将的结果与的结果相比较,不吻合则程序有错。软件工程的测试6.2 6.2 软件测试的方法软件测试的方法v 三、黑盒测试与白盒测试三、黑盒测试与白盒测试v 动态测试既可以采用白盒法对模块进行逻辑结构的测试,又动态测试既可以采用白盒法对模

15、块进行逻辑结构的测试,又可以用黑盒法做功能结枸的测试,接口的测试,它们都是以可以用黑盒法做功能结枸的测试,接口的测试,它们都是以执行程序并分析执行结果来查错的。执行程序并分析执行结果来查错的。v 1 1、黑盒测试法、黑盒测试法v 黑盒测试法把程序看成一个黑盒子,完全不考虑程序的黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,内部结构和处理过程。黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且程序是否能适当

16、地接收输入数据产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。保持外部信息的完整性。黑盒测试又称为功能测试。软件工程的测试6.2 6.2 软件测试的方法软件测试的方法v 2 2、白盒测试法、白盒测试法v 白盒测试法的前提是可以把程序看成装在一个透明的白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,白盒测试又称为结构测路是否都能按预定要求正确工作,白

17、盒测试又称为结构测试。试。 使用白盒测试法,为了做到穷尽测试,程序中每条可能的通路至少都应该执行一次,但即使测试很小的程序,通常也不能做到这一点。一段程序对嵌套的语句循环执行20次,而循环体中有5条可能的路径,则在这段程序中共有520条可能的通路,即使每条通路只执行一次,也是不可能的,因此,要注意,不可能进行穷尽测试,也说明,测试不可能发现程序中的所有错误。软件工程的测试6.2 6.2 软件测试的方法软件测试的方法软件工程的测试6.2 6.2 软件测试的方法软件测试的方法v 6.2.2 6.2.2 测试方案设计测试方案设计v 一、白盒法一、白盒法v 白盒法又称为逻辑覆盖法,其测试用例选择,是按

18、照不同白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。覆盖标准确定的。语语句句覆覆盖盖判判定定覆覆盖盖条条件件覆覆盖盖判判定定条条件件覆覆盖盖条条件件组组合合覆覆盖盖弱弱强强软件工程的测试6.2 6.2 软件测试的方法软件测试的方法 语句覆盖语句覆盖: 选择足够的测试用例,使得程序中每个语句选择足够的测试用例,使得程序中每个语句至少都能被执行一次。至少都能被执行一次。 判定覆盖判定覆盖: 执行足够的测试用例,使得程序中每个判定执行足够的测试用例,使得程序中每个判定至少都获得一次至少都获得一次“真真”值和值和“假假”值。值。 条件覆盖条件覆盖:执行足够的测试用例,使得判定中的每

19、个条:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。件获得各种可能的结果。 判定判定/ /条件覆盖条件覆盖: 执行足够的测试用例,使得判定中每个执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的条件取到各种可能的值,并使每个判定取到各种可能的结果。结果。 条件组合覆盖条件组合覆盖: 执行足够的例子,使得每个判定中条件执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。的各种可能组合都至少出现一次。软件工程的测试6.2 6.2 软件测试的方法软件测试的方法v 白盒测试法步骤白盒测试法步骤: : 选择逻辑覆盖标准。选择逻辑覆盖标准。 按照覆

20、盖标准列出所有情况。按照覆盖标准列出所有情况。 选择确定测试用例。选择确定测试用例。 验证分析运行结果与预期结果。验证分析运行结果与预期结果。v 例:用白盒法测试以下程序段:例:用白盒法测试以下程序段:v ProcedureProcedure(VAR AVAR A,B B,X X:REALREAL););v BEGINBEGINv IF IF (A1) AND (B=0) A1) AND (B=0) v THEN X:=X/A ; THEN X:=X/A ;v IF (A=2) OR (X1) IF (A=2) OR (X1) v THEN X:=X+1 THEN X:=X+1v END;EN

21、D;软件工程的测试满足语句覆盖的情况:满足语句覆盖的情况:执行路径:执行路径:aceace用例格式:用例格式: 输入输入(A,B,X)(A,B,X),输出,输出(A,B,X)(A,B,X)选择用例:选择用例:(2,0,4),(2,0,3)(2,0,4),(2,0,3)1 1、语句覆盖、语句覆盖使得程序中每个语句至使得程序中每个语句至少都能被执行一次少都能被执行一次6.2 6.2 软件测试的方法软件测试的方法A1A1ANDANDB=0B=0X=X/AX=X/AA=2A=2OR OR X1X1X=X+1X=X+1a ab bc cd de eY YN NY YN N软件工程的测试覆盖情况:应执行路

22、径覆盖情况:应执行路径ace ace abd abd或:或: acd acd abe abe选择用例选择用例( (其一):其一): (2,0,4),(2,0,3) ace (2,0,4),(2,0,3) ace (1,1,1),(1,1,1) abd (1,1,1),(1,1,1) abd (2,1,1),(2,1,2) abe (2,1,1),(2,1,2) abe (3,0,3),(3,1,1) acd (3,0,3),(3,1,1) acd2 2、判定覆盖、判定覆盖使得程序中每个判定至少使得程序中每个判定至少为为TRUE TRUE 或或FALSEFALSE各一次。各一次。6.2 6.2

23、软件测试的方法软件测试的方法A1A1ANDANDB=0B=0X=X/AX=X/AA=2A=2OR OR X1X1X=X+1X=X+1a ab bc cd de eY YN NY YN N软件工程的测试 3 3、条件覆盖、条件覆盖 使得判定中的每个条件获得各使得判定中的每个条件获得各种可能的结果。种可能的结果。应满足以下覆盖情况:应满足以下覆盖情况:判定一判定一: A1, A1, B=0, B0: A1, A1, B=0, B0判定二判定二: A=2, A2, X1, X1: A=2, A2, X1, X1选择用例:选择用例: (2,0,4),(2,0,3) (2,0,4),(2,0,3) (1

24、,1,1),(1,1,1) (1,1,1),(1,1,1) 注意注意: :(1,0,3),(1,0,4)(1,0,3),(1,0,4)(2,1,1),(2,1,2)(2,1,1),(2,1,2)满足条件覆盖,但不满足判断覆盖满足条件覆盖,但不满足判断覆盖6.2 6.2 软件测试的方法软件测试的方法A1A1ANDANDB=0B=0X=X/AX=X/AA=2A=2OR OR X1X1X=X+1X=X+1a ab bc cd de eY YN NY YN N软件工程的测试v 4 4、判定、判定/ /条件覆盖条件覆盖v 同时满足判断覆盖和条件覆盖同时满足判断覆盖和条件覆盖应满足以下覆盖情况:应满足以下

25、覆盖情况: 条件条件: A1, A1, B=0, B0: A1, A1, B=0, B0 A=2, A2, X1, X1 A=2, A2, X1, X1 应执行路径应执行路径ace ace abd abd或:或: acd acd abe abe选择用例:选择用例: (2,0,4),(2,0,3) (2,0,4),(2,0,3)(ace)ace) (1,1,1),(1,1,1) (abd) (1,1,1),(1,1,1) (abd)6.2 6.2 软件测试的方法软件测试的方法A1A1ANDANDB=0B=0X=X/AX=X/AA=2A=2OR OR X1X1X=X+1X=X+1a ab bc c

26、d de eY YN NY YN N软件工程的测试 5 5、条件组合覆盖、条件组合覆盖 使得每个判定中条件的各种使得每个判定中条件的各种可能组合都至少出现一次。可能组合都至少出现一次。编译系统下的执行情况:编译系统下的执行情况:部分路径未被执行。部分路径未被执行。满足以下覆盖情况:满足以下覆盖情况: A1, B =0 A1, B =0 A1, B0 A1, B0 A1, B =0 A1, B =0 A1, B0 A1, B0 A=2, X1 A=2, X1 A=2, X1 A=2, X1 A2, X1 A2, X1 A A2 2, X1, X1选择用例:选择用例:(2,0,4),(2,0,3)

27、 (2,0,4),(2,0,3) (2,1,1),(2,1,2) (2,1,1),(2,1,2) (1,0,3),(1,0,4) (1,0,3),(1,0,4) (1,1,1),(1,1,1) (1,1,1),(1,1,1) A1X=X/AA=2X=X+1a ab bcd de eB=0X1YNYNYNYN6.2 6.2 软件测试的方法软件测试的方法软件工程的测试 6 6、路径覆盖、路径覆盖 被测程序的每条可能执行到被测程序的每条可能执行到的路径都至少经过一次。的路径都至少经过一次。选择用例:选择用例:(2,0,4),(2,0,3) (2,0,4),(2,0,3) a a、c c、e e(2,

28、1,1),(2,1,2) (2,1,1),(2,1,2) a a、b b、e e( (3 3,0,3),(,0,3),(3 3,0,0,1 1) ) a a、c c、d d(1,1,1),(1,1,1) (1,1,1),(1,1,1) a a、b b、d d6.2 6.2 软件测试的方法软件测试的方法A1A1ANDANDB=0B=0X=X/AX=X/AA=2A=2OR OR X1X1X=X+1X=X+1a ab bc cd de eY YN NY YN N软件工程的测试6.2 6.2 软件测试的方法软件测试的方法v 二、黑盒法二、黑盒法 不考虑程序的内部结构与特性,只根据程序不考虑程序的内部结

29、构与特性,只根据程序功能或程序的外部特性设计测试用例。功能或程序的外部特性设计测试用例。等等价价分分类类法法边边值值分分析析法法错错误误推推测测法法因因果果图图法法软件工程的测试v 1 1、等价分类法、等价分类法v 基本思想:根据程序的基本思想:根据程序的I/OI/O特性,将程序的定义域划分特性,将程序的定义域划分为有限个等价区段为有限个等价区段 “ “等价类等价类”,从等价类中选择出,从等价类中选择出的用例,具有的用例,具有“代表性代表性”。v 等价类分为:等价类分为:v 有效等价类有效等价类 对于程序的规格说明是合理的、有意义对于程序的规格说明是合理的、有意义的输入数据构成的集合。的输入数

30、据构成的集合。v 无效等价类无效等价类 对于程序的规格说明,是不合理的,是对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。没有意义的输入数据构成的集合。6.2 软件测试的方法软件测试的方法软件工程的测试 应应按照输入条件(按照输入条件(如输入值的范围,值的个数,值的集合,输入如输入值的范围,值的个数,值的集合,输入条件必须如何)划分为有效等价类和无效等价类。条件必须如何)划分为有效等价类和无效等价类。例如:每个学生可选修例如:每个学生可选修1-31-3门课程门课程 可以划分一个有效等价类:选修可以划分一个有效等价类:选修1-31-3门课程。门课程。 可以划分两个无效等价类:未选

31、修课,选修课超过可以划分两个无效等价类:未选修课,选修课超过3 3门。门。又如:标识符的第一个字符必须是字母。又如:标识符的第一个字符必须是字母。 可以划分为一个有效等价类:第一个字符是字母。可以划分为一个有效等价类:第一个字符是字母。 可以划分一个无效等价类:第一个字符不是字母。可以划分一个无效等价类:第一个字符不是字母。 A A、为每个等价类编号;为每个等价类编号; B B、使一个测试用例尽可能覆盖多个有效等价类使一个测试用例尽可能覆盖多个有效等价类 C C、特别要注意的是:一个测试用例只能覆盖一个无效等价类。特别要注意的是:一个测试用例只能覆盖一个无效等价类。等价分类法步骤等价分类法步骤

32、软件工程的测试v 2 2、边值分析法、边值分析法 v 基本思想:基本思想: 选择等价类的边缘值作为测试用例,让每个等价类选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。的边界都得到测试,选择测试用例既考虑输入亦考虑输出。v 分析步骤:分析步骤: vA A、先划分等价类。先划分等价类。vB B、选择测试用例,测试等价类边界。选择测试用例,测试等价类边界。v 边界边界选择原则:选择原则: vA A、按照输入值范围的边界。按照输入值范围的边界。vB B、按照输入按照输入/ /输出值个数的边界。输出值个数的边界。vC C、输出值域的边界。输出值域的边界。

33、vD D、输入输入/ /输出有序集的边界。输出有序集的边界。6.2 6.2 软件测试的方法软件测试的方法软件工程的测试按照输入值范围的边界。按照输入值范围的边界。 例如:输入值的范围是例如:输入值的范围是-1.0-1.0至至1.01.0,则可选择用例,则可选择用例 1.01.0、1.01.0、-1.001-1.001、1.0011.001。按照输入按照输入/ /输出值个数的边界。输出值个数的边界。 例如:输入文件可有例如:输入文件可有1-2551-255个记录,则个记录,则 设计用例:文件的记录设计用例:文件的记录数为数为 0 0个、个、1 1个、个、255255个、个、256256个。个。

34、C C、输出值域的边界。输出值域的边界。 例如:检索文献摘要,最多例如:检索文献摘要,最多4 4篇。设计用例:可检索篇。设计用例:可检索0 0篇、篇、1 1篇、篇、4 4篇,和篇,和5 5篇(错误)。篇(错误)。 D D、输入输入/ /输出有序集(如顺序文件、线性表)的边界。输出有序集(如顺序文件、线性表)的边界。 应选择第一个元素和最后一个元素。应选择第一个元素和最后一个元素。6.2 软件测试的方法软件测试的方法软件工程的测试3 3、错误推测法、错误推测法凭经验或直觉推测可能的错误,列出程序中可能有的错误凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例

35、。和容易发生错误的特殊情况,选择测试用例。4 4、因果图法(、因果图法(cause effcet graphiceicause effcet graphicei)把输入条件视为把输入条件视为“因因”,把输出条件视为,把输出条件视为“果果”,将黑,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。达功能说明书中输入条件的各种组合与输出的关系。根据这种关系可选择高效的测试用例。因果图是一种根据这种关系可选择高效的测试用例。因果图是一种形式化语言,是一种组合逻辑。形式化语言,是一种组合逻辑。6.2 软件测试的

36、方法软件测试的方法软件工程的测试v 因果图的基本符号因果图的基本符号: : 0 - 0 - 表示表示“不出现不出现”,1 - ,1 - 表示表示“出现出现”v 恒等恒等: :若若a a为为1 1,则,则b b为为1 1,否则,否则b b为为0 0。v “非非”函数函数 : :若若a a为为1 1,则,则b b为为0 0,否则,否则b b为为1 1。v “或或”函数函数: :若若a a或或b b为为1 1,则,则d d为为1 1,否则,否则d d为为0 0。v “与与”函数函数: :若若a a与与b b同为同为1 1,则,则d d为为1 1,否则,否则d d为为0 0。abababd dabd

37、d6.2 软件测试的方法软件测试的方法软件工程的测试v 对对“与与”、“或或”函数的限制符号函数的限制符号v E E约束(异)约束(异) 排斥排斥v 即即a a、b b不能同时为不能同时为1 1。v I I约束(或)约束(或) 包容包容v a a、b b、c c不能同时为不能同时为0 0。v O O约束(唯一约束(唯一) 选一选一v a a、b b中仅有一个为中仅有一个为1 1。v R R约束(要求约束(要求) 需要需要v a a为为1 1时,时,b b必须为必须为1 1v MM约束(强制约束(强制) 屏蔽屏蔽v 若若a a为为1 1时,则时,则b b强制为强制为1 1。abEabcIabRa

38、bO OabM6.2 软件测试的方法软件测试的方法软件工程的测试v 因果图法的步骤因果图法的步骤v 分析规范,即将问题分为若干可工作的步骤。分析规范,即将问题分为若干可工作的步骤。v 标识出规范中的原因与结果。标识出规范中的原因与结果。 原因原因输入条件输入条件 结果结果输出或系统变换输出或系统变换v 分析规范语义、内容,转换为因果图分析规范语义、内容,转换为因果图v 将因果图转换为有限项判断表。将因果图转换为有限项判断表。v 将判断表的每一列,转换为一个测试用例。将判断表的每一列,转换为一个测试用例。6.2 软件测试的方法软件测试的方法软件工程的测试 因果图法应用举例因果图法应用举例 规范:

39、文件名第一列字符必须为规范:文件名第一列字符必须为A A或或B B,第二列字第二列字 符必须为数字。满足则修改文件。第一字符不正符必须为数字。满足则修改文件。第一字符不正 确发出信息确发出信息X12X12,第二个字符不正确发出信息第二个字符不正确发出信息X13X13。v、分析规范、分析规范v原原 因因 结结 果果v1 1 第一列字符为第一列字符为A A5050修改文件修改文件v2 2 第一列字符为第一列字符为B B 5151发信息发信息X12X12v3 3 第二列字符为数字第二列字符为数字 5252发信息发信息X13X136.2 软件测试的方法软件测试的方法软件工程的测试画出因果图画出因果图

40、中间结点中间结点是导出结果的进一步原因。是导出结果的进一步原因。v考虑到原因考虑到原因1 1、2 2不可能同时为不可能同时为1 1,加上,加上E E约束。约束。1111515035212E发发 X 12发发 X 13 修改文件修改文件6.2 软件测试的方法软件测试的方法软件工程的测试将因果图转换为判断表将因果图转换为判断表1 12 23 34 45 56 67 78 8条条件件原原因因1 11 11 11 10 00 00 00 01 11 10 00 01 11 10 00 01 10 01 10 01 10 01 10 01 11 11 11 10 00 0动动作作结结果果0 00 00

41、00 01 11 11 10 01 10 00 00 00 01 10 01 10 01 1测试用例测试用例A3A3A8A8AMAAMA?B5B5B4B4BNBNB B!C2C2X6X6DYDYPIPI11115151505052526.2 软件测试的方法软件测试的方法软件工程的测试v 测试步骤及策略测试步骤及策略v 所有测试过程都应采用综合测试策略;即先作静态分析,所有测试过程都应采用综合测试策略;即先作静态分析,再作动态测试。并事先制订测试计划。再作动态测试。并事先制订测试计划。v 测试过程通常可分测试过程通常可分4 4步进行:步进行:单元单元测试测试单元单元测试测试单元单元测试测试被测被

42、测模块模块被测被测模块模块集成集成测试测试设计设计信息信息已测试已测试的模块的模块确认确认测试测试已集成已集成的模块的模块软件软件需求需求系统系统测试测试已确认已确认的软件的软件可交付可交付的软件的软件系统其系统其他元素他元素6.3 6.3 软件测试步骤软件测试步骤软件工程的测试6.3 6.3 软件测试步骤软件测试步骤V V模型:软件开发各阶段与测试策略之间的对应关系。模型:软件开发各阶段与测试策略之间的对应关系。系统工程系统工程需求分析需求分析设计设计编码编码系统测试系统测试确认测试确认测试集成测试集成测试单元测试单元测试软件工程的测试 1 1、单元测试(、单元测试(unit testing

43、 )unit testing )的测试内容的测试内容模块模块模块接口测试模块接口测试局部数据结构测试局部数据结构测试重要路径测试重要路径测试错误处理测试错误处理测试边界条件测试边界条件测试I/O I/O 参数值的个数、类参数值的个数、类型、次序、格式是否正型、次序、格式是否正确,确,I/OI/O文件属性、操作文件属性、操作是否正确等。是否正确等。数据说明是否正确、数据说明是否正确、一致,变量及其初一致,变量及其初值定义是否正确等。值定义是否正确等。检查检查“错误处错误处理程序理程序”本身本身的错误。的错误。边界条件常包括循环边边界条件常包括循环边界,最大最小值、控制界,最大最小值、控制流中等于

44、、大于、小于流中等于、大于、小于的比较值等。的比较值等。重要路径通常是指完成重要路径通常是指完成模块功能的主要路径,模块功能的主要路径,一般是控制结构。一般是控制结构。一、单元测试(一、单元测试(unit testing )unit testing )软件工程的测试n2 2、模块测试步骤、模块测试步骤n考虑到被测模块与其它模块的联系,因此测试时需要使考虑到被测模块与其它模块的联系,因此测试时需要使用两类辅助模块来模拟其他模块。用两类辅助模块来模拟其他模块。n驱动模块(驱动模块(driverdriver) 模拟主程序功模拟主程序功能,用于向被测模块传递数据,接能,用于向被测模块传递数据,接收、打

45、印从被测模块返回的数据。收、打印从被测模块返回的数据。n桩模块(桩模块(stubstub) 又称为假模块,用又称为假模块,用于模拟那些由被测模块所调用的下于模拟那些由被测模块所调用的下属模块功能。属模块功能。n一般,驱动模块比桩模块容易设计。但都是额外开一般,驱动模块比桩模块容易设计。但都是额外开销。测试方法以白盒法为主。销。测试方法以白盒法为主。被测模块被测模块驱动模块驱动模块桩模块桩模块桩模块桩模块桩模块桩模块一、单元测试(一、单元测试(unit testing )unit testing )软件工程的测试n1 1、组装测试的任务、组装测试的任务n确定模块组装方案,将经过测试的模块组装为一

46、个完确定模块组装方案,将经过测试的模块组装为一个完整的系统。组装方案分为渐增式及非渐增式。整的系统。组装方案分为渐增式及非渐增式。n测试方法以黑盒法为主,按照组装方案进行测试。测试方法以黑盒法为主,按照组装方案进行测试。n 也称为联合测试或集成测试,重点测试模块的接口也称为联合测试或集成测试,重点测试模块的接口部分,需设计测试过程使用的驱动模块或桩模块。部分,需设计测试过程使用的驱动模块或桩模块。二、组装测试(二、组装测试(Integration testing )软件工程的测试v 2 2、渐增式组装测试、渐增式组装测试v 渐增式是先进行模块测试,然后将这些模块逐步组装成较渐增式是先进行模块测

47、试,然后将这些模块逐步组装成较大的系统,每连接一个模块进行一次测试大的系统,每连接一个模块进行一次测试。两种方案:两种方案: 设计驱动模块或桩模块,对每一个新组装的子系统进设计驱动模块或桩模块,对每一个新组装的子系统进行测试,对发现问题较多的子系统或模块应该用白盒行测试,对发现问题较多的子系统或模块应该用白盒法作回归测试。法作回归测试。自顶而下增值自顶而下增值增值增值二、组装测试(二、组装测试(Integration testing )软件工程的测试M1M4M3M2M6M5程序模块示意图程序模块示意图S5M1S1S1S1S2S2S2S3S3S3第一步,测试主控模块第一步,测试主控模块M1M1设

48、计桩模设计桩模块块S1S1、S2S2、S3S3,模拟被模拟被M1M1调用的调用的M2M2、M3M3、M4M4。M2M3M4第二步,依次用第二步,依次用M2M2、M3M3、M4M4替代替代桩模块桩模块S1S1、S2S2、S3S3,每替代一次进每替代一次进行一次测试。行一次测试。S4S4S4S5S5第三步,对由主控模块第三步,对由主控模块M1M1和模块和模块M2M2、M3M3、M4M4构成的子系统进行测构成的子系统进行测试,设计桩模块试,设计桩模块S4S4、S5S5。M5M6第四步,依次用模块第四步,依次用模块M5M5和和M6M6替代替代桩模块桩模块S4S4、S5S5,并同时进行新的测并同时进行新

49、的测试。组装测试完毕。试。组装测试完毕。自顶而下增值自顶而下增值软件工程的测试M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把已测试的子系统按程第四步,把已测试的子系统按程序结构连接起来完成程序整体的序结构连接起来完成程序整体的组装测试。组装测试。D4D4D4D5D5D5M1M4M3M2M6M5程序模块示意图程序模块示意图第一步,对最底层的模块第一步,对最底层的模块M3M3、M5M5、M6M6进行测试,设计驱动模块进行测试,设计驱动模块D1D1、D2D2、D3D3来模拟调用。来模拟调用。第三步,设计驱动模块第三步,设计驱动模块D4D4、D5 D5 和和D6D6模拟调用,分

50、别对新子系统进行测试。模拟调用,分别对新子系统进行测试。第二步,用实际模块第二步,用实际模块M2M2、M1M1和和M4M4替换驱动模块替换驱动模块D1D1、D2D2、D3D3。D6自底而上增值自底而上增值软件工程的测试确定组装过程的原则确定组装过程的原则n 自顶而下增值自顶而下增值n 优点:能够尽早发现系统主控方面的问题。优点:能够尽早发现系统主控方面的问题。n 缺点:无法验证桩模块是否完全模拟了下属模块的功能。缺点:无法验证桩模块是否完全模拟了下属模块的功能。增值增值n 优点:驱动模块较容易编写桩模块,能够尽早查出底层涉及优点:驱动模块较容易编写桩模块,能够尽早查出底层涉及较复杂的算法和实际

51、的较复杂的算法和实际的I/OI/O模块中的错误。模块中的错误。n 缺点:最后才能发现系统主控方面的问题。缺点:最后才能发现系统主控方面的问题。集成过程的原则集成过程的原则二、组装测试(二、组装测试(Integration testing )软件工程的测试 3 3、混合增值,常见的混合增值方案有:、混合增值,常见的混合增值方案有: 衍变的自顶而下衍变的自顶而下 先自底而上集成子系统,再自顶而下集成总系统。先自底而上集成子系统,再自顶而下集成总系统。 自底而上自底而上自顶而下增值自顶而下增值 对含有读操作的子系统采用自底而上。对含有读操作的子系统采用自底而上。 对含有写操作的子系统采用自顶而下。对

52、含有写操作的子系统采用自顶而下。 回归测试回归测试 在回归测试中自底而上,对其余部分(尤其是对修改过的在回归测试中自底而上,对其余部分(尤其是对修改过的子系统)采用自顶而下。子系统)采用自顶而下。二、组装测试(二、组装测试(Integration testing )软件工程的测试1 1、任务、任务 又称为有效性测试或功能测试。其任务是验证又称为有效性测试或功能测试。其任务是验证系统的功能、性能等特性是否符合需求规格说明。系统的功能、性能等特性是否符合需求规格说明。选择测试人员选择测试人员选择测试用例选择测试用例实际运行测试实际运行测试软件计划软件计划用户文档用户文档开发文档开发文档源程序文本源

53、程序文本支持环境支持环境有效性有效性测试测试软件软件配置配置审查审查管理管理机构机构裁决裁决专家专家鉴定会鉴定会交用户交用户运行维护运行维护测试报告测试报告软件配置软件配置三、确认测试(三、确认测试(Validation testing )软件工程的测试(1 1)有效性测试)有效性测试制定测试计划,运用黑盒法,验证软件特性是否与需求制定测试计划,运用黑盒法,验证软件特性是否与需求符合。符合。(2 2)软件配置复查)软件配置复查 软件配置软件配置 指软件工程过程中所产生的所有信息项指软件工程过程中所产生的所有信息项: :文文档、报告、程序、表格、数据。随着软件工程过程的档、报告、程序、表格、数据

54、。随着软件工程过程的进展软件配置项(进展软件配置项(SCI software Configuration ItemSCI software Configuration Item)快快速增加和变化。应复查速增加和变化。应复查SCISCI是否齐全。是否齐全。2 2、确认测试的步骤、确认测试的步骤三、确认测试(三、确认测试(Validation testing )Validation testing )软件工程的测试unction Testing unction Testing 功能测试功能测试ocal Area Testing ocal Area Testing 局域化测试局域化测试sabilit

55、y Testing sability Testing 可使用性测试可使用性测试egression Testing egression Testing 回归测试回归测试erformance Testing erformance Testing 性能测试性能测试upportability Testing upportability Testing 可支持可支持性测试性测试(3 3) 测试和测试和 测试测试 测试测试 :是在开发机构的监督下,由个别用户在确认测试阶段后:是在开发机构的监督下,由个别用户在确认测试阶段后期对软件进行测试,目的是评价软件的期对软件进行测试,目的是评价软件的FLURPSFL

56、URPS(功能、局域化、功能、局域化、可使用性、可靠性、性能和支持),注重界面和特色。可使用性、可靠性、性能和支持),注重界面和特色。 测试测试:由支持软件预发行的客户对:由支持软件预发行的客户对FLURPSFLURPS进行测试,主要目的进行测试,主要目的是测试系统的可支持性。是测试系统的可支持性。三、确认测试(三、确认测试(Validation testing )软件工程的测试四、系统测试四、系统测试(system testing system testing )将经过确认测试的软件,与计算机硬件、外设、将经过确认测试的软件,与计算机硬件、外设、支持软件等一起,在实际运行环境下测试。支持软件

57、等一起,在实际运行环境下测试。6.3 6.3 软件测试步骤软件测试步骤软件工程的测试6.4 6.4 程序调试程序调试v 软件调试是在进行了成功的测试之后才开始的工作。它与软件调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是软件测试不同,调试的任务是进一步诊断和改正程序中潜进一步诊断和改正程序中潜在的错误。在的错误。v 调试活动由两部分组成:调试活动由两部分组成: 确定程序中可疑错误的确切性质和位置。确定程序中可疑错误的确切性质和位置。 对程序对程序( (设计设计, ,编码编码) )进行修改,排除这个错误。进行修改,排除这个错误。v 调试工作是一个具有很强技巧性的工作。调

58、试工作是一个具有很强技巧性的工作。软件运行失效或软件运行失效或出现问题,往往只是潜在错误的外部表现,而外部表现与出现问题,往往只是潜在错误的外部表现,而外部表现与内在原因之间常常没有明显的联系。内在原因之间常常没有明显的联系。如果要找出真正的原如果要找出真正的原因,排除潜在的错误,不是一件易事。可以说,因,排除潜在的错误,不是一件易事。可以说,调试是通调试是通过现象,找出原因的一个思维分析的过程过现象,找出原因的一个思维分析的过程软件工程的测试调试过程软件工程的测试一、调试的步骤一、调试的步骤(1) (1) 从错误的外部表现形式入手,确定程序中出错位置;从错误的外部表现形式入手,确定程序中出错

59、位置;(2) (2) 研究有关部分的程序,找出错误的内在原因;研究有关部分的程序,找出错误的内在原因;(3) (3) 修改设计和代码,以排除这个错误;修改设计和代码,以排除这个错误;(4) (4) 重复进行暴露了这个错误的原始测试或某些有关测试。重复进行暴露了这个错误的原始测试或某些有关测试。6.4 6.4 程序调试程序调试从技术角度来看,查找错误的难度在于:从技术角度来看,查找错误的难度在于:n 现象与原因所处的位置可能相距甚远。现象与原因所处的位置可能相距甚远。n 当其它错误得到纠正时,这一错误所表现出的现象当其它错误得到纠正时,这一错误所表现出的现象可能会暂时消失,但并未实际排除。可能会

60、暂时消失,但并未实际排除。软件工程的测试n现象实际上是由一些非错误原因现象实际上是由一些非错误原因( (例如,舍入不精确例如,舍入不精确) )引起的。引起的。n 现象可能是由于一些不容易发现的人为错误引起的。现象可能是由于一些不容易发现的人为错误引起的。n 错误是由于时序问题引起的,与处理过程无关。错误是由于时序问题引起的,与处理过程无关。n 现象是由于难于精确再现的输入状态(例如,实时应现象是由于难于精确再现的输入状态(例如,实时应用中输入顺序不确定)引起。用中输入顺序不确定)引起。n 现象可能是周期出现的。在软、硬件结合的嵌入式系现象可能是周期出现的。在软、硬件结合的嵌入式系统中常常遇到。

温馨提示

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

评论

0/150

提交评论