《软件工程软件测试.ppt》由会员分享,可在线阅读,更多相关《软件工程软件测试.ppt(50页珍藏版)》请在优知文库上搜索。
1、第第 五五 章章 一、软件测试的目的和重要性一、软件测试的目的和重要性因为开发工作的前期不可避免地会引入错误,测因为开发工作的前期不可避免地会引入错误,测试的试的目的是为了发现和改正错误目的是为了发现和改正错误,这对于某些涉,这对于某些涉及人的生命安全或重要的军事、经济目标的项目及人的生命安全或重要的军事、经济目标的项目显得尤其重要。显得尤其重要。19631963年美国飞往火星的火箭爆炸,原因是年美国飞往火星的火箭爆炸,原因是FORTRANFORTRAN程序:程序:DO 5 I=1DO 5 I=1,3 3 误写为:误写为:DO 5 I=1. 3 DO 5 I=1. 3 损失损失10001000
2、万美元。万美元。19671967年苏联年苏联“联盟一号联盟一号”宇宙飞船返回时因忽略宇宙飞船返回时因忽略一个小数点,在进入大气层时打不开降落伞而一个小数点,在进入大气层时打不开降落伞而烧毁。烧毁。1、软件测试的开销大、软件测试的开销大按照按照Boehm的统计,软件测试的开销大约占总成的统计,软件测试的开销大约占总成本的本的30%-50%。例如:。例如:APPOLLO登月计划,登月计划,80%的经费用于软件测试。的经费用于软件测试。2、不能进行、不能进行“穷举穷举”测试测试只有将所有可能的情况都测试到,才有可能检查只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的:出所有的错
3、误。但这是不可能的:例:程序例:程序P有两个整型输入量有两个整型输入量 X、Y,输出量为输出量为Z,在在32位机上运行。所有的测试数据组(位机上运行。所有的测试数据组(Xi,Yi)的的数目为:数目为: 2 2 = 2 1毫秒执行毫秒执行1次,共需次,共需5亿年。亿年。323264PXYZ3、软件测试难度大、软件测试难度大根据上述分析,既然不能进行根据上述分析,既然不能进行 “穷举穷举”测试,测试,又要查出尽可能多的错误,软件测试工作的难又要查出尽可能多的错误,软件测试工作的难度大。只有选择度大。只有选择 “高效的测试用例高效的测试用例”什么是什么是“高效的测试用例高效的测试用例”?如何选择如何
4、选择“高效的测试用例高效的测试用例”?这就是本章讨论的主要问题!这就是本章讨论的主要问题!3 3、充分注意测试中的群集现象。、充分注意测试中的群集现象。1 1、尽量不由程序设计者进行测试。、尽量不由程序设计者进行测试。2 2、关键是注重测试用例的选择。、关键是注重测试用例的选择。输入数据的组成(输入数据、预期的输出结果)输入数据的组成(输入数据、预期的输出结果)既有合理输入数据,也有不合理的输入数据。既有合理输入数据,也有不合理的输入数据。用例既能检查应完成的任务,也能够检查不应该用例既能检查应完成的任务,也能够检查不应该完成的任务。完成的任务。长期保存测试用例。长期保存测试用例。软件测试方法
5、分为两类:静态分析、动态测试软件测试方法分为两类:静态分析、动态测试一、静态分析方法一、静态分析方法指以人工的、非形式化的方法对程序进行分析和指以人工的、非形式化的方法对程序进行分析和测试。测试。桌前检查桌前检查代码会审代码会审步行检查步行检查步行检查时,还常使用以下分析方法:步行检查时,还常使用以下分析方法: 调用图调用图从语义的角度考察程序的控制路线。从语义的角度考察程序的控制路线。 数据流分析图数据流分析图检查分析变量的定义和引用情况。检查分析变量的定义和引用情况。无论无论Y 为何值,都为何值,都不能够调用子程序不能够调用子程序。READYY0NX:=YX1) AND (B=0) A1)
6、 AND (B=0) THEN X:=X/A ; THEN X:=X/A ; IF (A=2) OR (X1) IF (A=2) OR (X1) THEN X:=X+1 THEN X:=X+1END;END;1 1)选择逻辑覆盖标准。)选择逻辑覆盖标准。2 2)按照覆盖标准列出所有情况。)按照覆盖标准列出所有情况。3 3)选择确定测试用例。)选择确定测试用例。4 4)验证分析运行结果与预期结果。)验证分析运行结果与预期结果。逻辑结构逻辑结构Procedure Procedure (VAR A,B,X:REALVAR A,B,X:REAL);); BEGIN BEGIN IF IF(A1) AN
7、D (B=0) A1) AND (B=0) THEN X:=X/A ; THEN X:=X/A ; IF (A=2) OR (X1) IF (A=2) OR (X1) THEN X:=X+1 THEN X:=X+1 END; END;A1ANDB=0X:=X/AA=2OR X1X:=X+1YNYN逻辑结构逻辑结构使得程序中每个语句至少使得程序中每个语句至少都能被执行一次。都能被执行一次。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde满足语句覆盖的情况:满足语句覆盖的情况: 执行路径:执行路径:aceace选择用例:选择用例:(2,0,4),(2,0,3)(2,0,4),(2
8、,0,3) 用例格式:用例格式: 输入输入(A,B,X)(A,B,X),输出,输出(A,B,X)(A,B,X)YNYN使得程序中每个判定至少为使得程序中每个判定至少为TRUE TRUE 或或FALSEFALSE各一次。各一次。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde覆盖情况:覆盖情况:应执行路径应执行路径ace abd 或:或: acd 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)
9、abe (2,1,1),(2,1,2) abe (3,0,3),(3,1,1) acd (3,0,3),(3,1,1) acdYYNNA1ANDB=0X:=X/AA=2OR X1X:=X+1abcde使得判定中的每个条件获使得判定中的每个条件获得各种可能的结果。得各种可能的结果。应满足以下覆盖情况:应满足以下覆盖情况:判定一判定一: A1, A1, B=0, B0判定二判定二: A=2, A2, X1, X1选择用例:选择用例: (2,0,4),(2,0,3) (2,0,4),(2,0,3) (1,1,1),(1,1,1) (1,1,1),(1,1,1) NNYY2 2A1A20 0B=04
10、4X11 1A1A=21 1B01 1X1注意注意:(1,0,3),(1,0,4):(1,0,3),(1,0,4)(2,1,1),(2,1,2)(2,1,1),(2,1,2)满足条件覆盖,但不满足判断满足条件覆盖,但不满足判断覆盖。覆盖。同时满足判断覆盖和条同时满足判断覆盖和条件覆盖。件覆盖。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde应满足以下覆盖情况:应满足以下覆盖情况: 条件条件: A1, A1, B=0, B0 A=2, A2, X1, X1 应执行路径应执行路径ace abd 或:或: acd abe选择用例:选择用例: (2,0,4),(2,0,3) (2,0
11、,4),(2,0,3)(ace)ace) (1,1,1),(1,1,1) (abd) (1,1,1),(1,1,1) (abd)YYNN使得每个判定中条件的各种使得每个判定中条件的各种可能组合都至少出现一次。可能组合都至少出现一次。A1X:=X/AA=2X:=X+1abcdeB=0X1YNYNYNYN编译系统下的执行情况:编译系统下的执行情况:部分路径未被执行。部分路径未被执行。满足以下覆盖情况:满足以下覆盖情况: A1, B =0 A1, B0 A1, B =0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1选择用例:选择用例:(2,0,4),(2,0,3) (2,
12、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) STARTINPUT(A,B,C)IF A5 THEN X=10 ELSE X=1END IFIF B10 THEN Y=20 ELSE Y=2END IFIF C15 THEN Z=30 ELSE Z=3END IFPRINT(X,Y,Z)STOP共有共有8条可能的执行路径条可能的执行路径 三个判定表达式之值依次为假、假、假:三个判定表达式之值依次为假、假、假:输入:输入:A=
13、1,B=1,C=1;预期输出:;预期输出:X=1,Y=2,Z=3三个判定表达式之值依次为假、假、真:三个判定表达式之值依次为假、假、真:输入:输入:A=2,B=3,C=23;预期输出:;预期输出:X=1,Y=2,Z=30三个判定表达式之值依次为假、真、假:三个判定表达式之值依次为假、真、假:输入:输入:A=3,B=12,C=6;预期输出:;预期输出:X=1,Y=20,Z=3三个判定表达式之值依次为假、真、真:三个判定表达式之值依次为假、真、真:输入:输入:A=4,B=13,C=16;预期输出:;预期输出:X=1,Y=20,Z=30三个判定表达式之值依次为真、假、假:三个判定表达式之值依次为真、
14、假、假:输入:输入:A=6,B=7,C=9;预期输出:;预期输出:X=10,Y=2,Z=3三个判定表达式之值依次为真、假、真:三个判定表达式之值依次为真、假、真:输入:输入:A=8,B=8,C=18;预期输出:;预期输出:X=10,Y=2,Z=30 三个判定表达式之值依次为真、真、假:三个判定表达式之值依次为真、真、假:输入:输入:A=10,B=12,C=6;预期输出:;预期输出:X=10,Y=20,Z=3三个判定表达式之值依次为真、真、真:三个判定表达式之值依次为真、真、真:输入:输入:A=11,B=14,C=57;预期输出:;预期输出:X=10,Y=20,Z=30等等价价分分类类法法边边值
15、值分分析析法法错错误误推推测测法法因因果果图图法法(2)(2)黑盒法黑盒法 不考虑程序的内部结构与特性,不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性只根据程序功能或程序的外部特性设计测试用例。设计测试用例。基本思想:基本思想:根据程序的根据程序的I/O特性,将程序的定义特性,将程序的定义域划分为有限个等价区段域划分为有限个等价区段 “等价类等价类”,从,从等价类中选择出的用例,具有等价类中选择出的用例,具有“代表性代表性”。等价类分为:等价类分为:有效等价类有效等价类 对于程序的规格说明是合理的、对于程序的规格说明是合理的、有意义的输入数据构成的集合。有意义的输入数据构成的集合。
16、无效等价类无效等价类 对于程序的规格说明,是不合理对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。的,是没有意义的输入数据构成的集合。 应应按照输入条件按照输入条件(如输入值的范围,值的个数,值的集合,输入(如输入值的范围,值的个数,值的集合,输入条件必须如何)划分为有效等价类和无效等价类。条件必须如何)划分为有效等价类和无效等价类。例如:每个学生可选修例如:每个学生可选修1-31-3门课程门课程 可以划分一个有效等价类:选修可以划分一个有效等价类:选修1-31-3门课程。门课程。 可以划分两个无效等价类:未选修课,选修课超过可以划分两个无效等价类:未选修课,选修课超过3 3门。门。又如:标识符的第一个字符必须是字母。又如:标识符的第一个字符必须是字母。 可以划分为一个有效等价类:第一个字符是字母。可以划分为一个有效等价类:第一个字符是字母。 可以划分一个无效等价类:第一个字符不是字母。可以划分一个无效等价类:第一个字符不是字母。 显然,关键是显然,关键是如何划分等价类如何划分等价类A A、为每个等价类编号;为每个等价类编号;B B、使一个测试用例尽可能覆盖多个有效等价