《第三章 黑盒测试课件.pptx》由会员分享,可在线阅读,更多相关《第三章 黑盒测试课件.pptx(116页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件测试技术软件测试技术 第第3 3章黑盒测试章黑盒测试第第3 3章章 测试用例设计技术测试用例设计技术1.1. 对于黑盒测试的基本认识对于黑盒测试的基本认识2.2. 等价类划分法等价类划分法3.3. 边界值分析法边界值分析法4.4. 判定表驱动法判定表驱动法5.5. 因果图法因果图法6.6. 正交实验法正交实验法7.7. 场景法场景法8.8. 错误推测法错误推测法9.9. 黑盒测试应用策略黑盒测试应用策略10.10.黑盒测试与白盒测试的优缺点与对比黑盒测试与白盒测试的优缺点与对比2/1163.1 3.1 对于黑盒测试的基本认识对于黑盒测试的基本认识n定义:从用户的角度去验证软件功能,重点关注
2、的是用户的需求,通过程序界面和接口的外部操作实现端到端的测试。n分类:黑盒测试一般可分为功能测试和非功能测试两大类。3/116黑盒测试主要检测如下一些错误:黑盒测试主要检测如下一些错误:l软件功能不满足需求或者有遗漏。软件功能不满足需求或者有遗漏。l人机交互界面错误。人机交互界面错误。l数据库访问错误以及不能保持外部信息完数据库访问错误以及不能保持外部信息完整性错误。整性错误。l软件性能、安全性、可靠性和兼容性等非软件性能、安全性、可靠性和兼容性等非功能特性不满足需求。功能特性不满足需求。l程序初始化和终止错误。程序初始化和终止错误。4/116黑盒测试的优点:黑盒测试的优点:黑盒测试与软件具体
3、实现无关,因此黑盒黑盒测试与软件具体实现无关,因此黑盒测试用例在程序具体实现方法变化后仍可测试用例在程序具体实现方法变化后仍可使用。使用。软件具体实现与黑盒测试用例设计可以同软件具体实现与黑盒测试用例设计可以同步进行,因此能够节约软件项目总体开发步进行,因此能够节约软件项目总体开发时间。时间。5/116 3.2 3.2 等价类划分法等价类划分法3.2.1 等价类划分思想3.2.2 等价类划分的规则3.2.3 测试用例设计步骤与实例6/1163.2.1 3.2.1 等价类划分思想等价类划分思想基本思想基本思想:如何将输入数据集合划分为多个适当的数据子集合(即等价类),使得每个等价类中选取的数据可
4、以代表该类中的其它数据。优点:优点:通过等价类划分法,我们可以将不能穷举的输入数据合理划分为有限个数的等价类,然后在每个等价类中选取少量数据来代替对于这一类其它数据的测试。7/116划分的基础:在分析需求规格说明的基础上划分等价类,不需要考虑程在分析需求规格说明的基础上划分等价类,不需要考虑程序的内部结构。序的内部结构。将所有可能的输入数据划分为若干个互不相交的子集。也将所有可能的输入数据划分为若干个互不相交的子集。也就是说,所有等价类的并集即是整个输入域,各等价类数就是说,所有等价类的并集即是整个输入域,各等价类数据之间互不相交。据之间互不相交。每个等价类中的各个输入数据对于揭示程序错误都是
5、等效每个等价类中的各个输入数据对于揭示程序错误都是等效的,如果用等价类中的一个数据进行测试不能发现程序错的,如果用等价类中的一个数据进行测试不能发现程序错误,那么用该等价类中的其它数据进行测试也不可能发现误,那么用该等价类中的其它数据进行测试也不可能发现程序错误。程序错误。8/116整数相加程序的等价类划分例子:整数相加程序的等价类划分例子:对两个整型数据相加的程序,可以将其输入域划分为如表3-1所示的9个等价类,用9个测试用例代表了众多输入数据组合情况。表表3-1 3-1 整数相加程序的等价类划分整数相加程序的等价类划分等价类编号等价类编号加数加数1 1加数加数2 2测试用例测试用例1 1正
6、整数正整数正整数正整数4+64+62 2正整数正整数零零5+05+03 3正整数正整数负整数负整数6+(-7)6+(-7)4 4零零正整数正整数0+80+85 5零零零零0+00+06 6零零负整数负整数0+(-9)0+(-9)7 7负整数负整数正整数正整数(-2)+(-5)(-2)+(-5)8 8负整数负整数零零(-7)+0(-7)+09 9负整数负整数负整数负整数(-6)+(-10)(-6)+(-10)9/116“有效等价类有效等价类”和和“无效等价类无效等价类”u“有效等价类有效等价类”是指对于程序的规格说明来说是是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合,利用有合理
7、的、有意义的输入数据构成的集合,利用有效等价类可以检验程序是否实现了规格说明中所效等价类可以检验程序是否实现了规格说明中所规定的功能和性能要求。规定的功能和性能要求。u“无效等价类无效等价类”与有效等价类相反,是指对程序与有效等价类相反,是指对程序的规格说明来说是无意义、不合理的输入数据构的规格说明来说是无意义、不合理的输入数据构成的集合,利用无效等价类可以检验程序是否具成的集合,利用无效等价类可以检验程序是否具有容错性和较高的可靠性。有容错性和较高的可靠性。10/1163.2.2 3.2.2 等价类划分的规则等价类划分的规则(1 1)按输入区间划分)按输入区间划分 如果规格说明规定了输入数据
8、的取值范围或者是规定了取值数量的情况下,可以确定一个有效等价类和两个无效等价类。第一种情况,在确定了取值范围的情况下,例如统计学生成绩的程序规定学生成绩范围是0成绩100,其等价类的划分如图3-1所示。图3-1 按输入区间划分等价类11/1163.2.2 3.2.2 等价类划分的规则等价类划分的规则(2 2)按数值集合划分)按数值集合划分(3 3)按离散数值划分)按离散数值划分(4 4)按限制条件或规则划分)按限制条件或规则划分(5 5)按布尔量取值划分)按布尔量取值划分(6 6)细分等价类)细分等价类12/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例步骤:(1
9、1)按照表)按照表3-23-2所示建立等价类表,列举出所有划分的有效所示建立等价类表,列举出所有划分的有效等价类和无效等价类等价类和无效等价类。表表3-2 3-2 等价类表等价类表(2 2)给每一个等价类规定一个唯一的编号。)给每一个等价类规定一个唯一的编号。(3 3)设计一个有效等价类测试用例,使其尽可能多的覆盖尚)设计一个有效等价类测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类。重复这一步骤,直到所有的有效等价未覆盖的有效等价类。重复这一步骤,直到所有的有效等价类都被测试用例所覆盖。类都被测试用例所覆盖。(4 4)设计一个无效等价类测试用例,使其只覆盖一个无效等)设计一个无效等价类测试用
10、例,使其只覆盖一个无效等价类。重复这一步骤,直到所有的无效等价类都被测试用例价类。重复这一步骤,直到所有的无效等价类都被测试用例所覆盖。所覆盖。输入条件输入条件有效等价类有效等价类无效等价类无效等价类13/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例实例:三角形问题可以按照表3-3所示建立等价类表,列举出所有的有效等价类和无效等价类,并且给每一个等价类规定一个唯一的编号。表表3-3 3-3 三角形问题的等价类表三角形问题的等价类表输入条件输入条件有效等价类有效等价类无效等价类无效等价类是否为一般三角形是否为一般三角形A0 (1)A0 (1)B0 (2)B0 (2)
11、C0 (3)C0 (3)A+BC (4)A+BC (4)B+CA (5)B+CA (5)A+CB (6)A+CB (6)A0 (7)A0 (7)B0 (8)B0 (8)C0 (9)C0 (9)A+BC (10)A+BC (10)B+CA (11)B+CA (11)A+CB (12)A+CB (12)14/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例实例:三角形问题表表3-3 3-3 续表续表输入条件输入条件有效等价类有效等价类无效等价类无效等价类是否为等腰三角形是否为等腰三角形A=B (13)A=B (13)B=C (14)B=C (14)A=C (15)A=C
12、(15)AB and BC AB and BC andandA AC (16)C (16)是否为等边三角形是否为等边三角形A=B and B=C and A=C A=B and B=C and A=C (17(17) )AB (18)AB (18)BC (19)BC (19)AC (20)AC (20)15/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例实例:三角形问题表表3-4 3-4 三角形问题的等价类测试用例三角形问题的等价类测试用例用例编号用例编号A A,B B,C C覆盖等价类编号覆盖等价类编号输出输出1 14 4,5 5,8 81616一般三角形一般三角
13、形2 26 6,6 6,8 81616,1313等腰三角形等腰三角形3 37 7,5 5,5 51616,14144 45 5,6 6,5 51616,15155 56 6,6 6,6 61616,1717等边三角形等边三角形6 60 0,4 4,5 57 7不能构成一个三角形不能构成一个三角形7 75 5,-3-3,7 78 88 83 3,4 4,0 09 99 93 3,5 5,8 8101010108 8,3 3,4 4111111115 5,9 9,4 4121212126 6,7 7,8 81616,1616非等腰三角形非等腰三角形13135 5,6 6,6 61616,1414,
14、1818非等边三角形非等边三角形14145 5,6 6,5 51616,1515,191915156 6,6 6,7 71616,1313,202016/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例实例:我国的固定电话号码一般由“地区码+电话号码”组成,主要的编码规则如下:(1 1)地区码是以)地区码是以0 0开头的开头的3 3位或者位或者4 4位数字,区内通话时可位数字,区内通话时可以为空白。以为空白。(2 2)电话号码是以非)电话号码是以非0 0和非和非1 1开头的开头的7 7位或者位或者8 8位数字。位数字。一个应用程序接受符合上述规则的电话号码,需要设计等
15、价类测试用例对其进行测试。该问题的等价类划分如表3-5所示,相应的测试用例如表3-6所示。17/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例表表3-5 3-5 电话号码问题的等价类表电话号码问题的等价类表输输入入条条件件有效等价类有效等价类无效等价类无效等价类地地区区码码空白空白 (1) (1)以以0 0开头的开头的3 3位地区码位地区码 (2) (2)以以0 0开头的开头的4 4位地区码位地区码 (3) (3)以非以非0 0开头的开头的3 3位数字位数字 (4) (4)以非以非0 0开头的开头的4 4位数字位数字 (5) (5)以以0 0开头小于开头小于3 3位
16、的数字位的数字 (6) (6)以以0 0开头大于开头大于4 4位的数字位的数字 (7) (7)以以0 0开头含有非数字字符开头含有非数字字符 (8) (8)电电话话号号码码以非以非0 0和非和非1 1开头的开头的7 7位号码位号码 (9)(9)以非以非0 0和非和非1 1开头的开头的8 8位号码位号码 (10)(10)以以0 0开头的开头的7 7位或位或8 8位数字位数字 (11) (11)以以1 1开头的开头的7 7位或位或8 8位数字位数字 (12) (12)以非以非0 0和非和非1 1开头小于开头小于7 7位的数字位的数字 (13)(13)以非以非0 0和非和非1 1开头大于开头大于8
17、8位的数字位的数字 (14)(14)以非以非0 0和非和非1 1开头含有非数字字符开头含有非数字字符 (15)(15)18/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例表表3-6 3-6 电话号码问题的等价类测试用例电话号码问题的等价类测试用例用例编号用例编号输入数据输入数据覆盖等价类编覆盖等价类编号号输出输出地区码地区码电话号码电话号码1 1空白空白85679372856793721 1,1010有效有效2 202502573465216734652162 2,1010有效有效3 30571057167429935674299353 3,1010有效有效4 40
18、7450745834156883415683 3,9 9有效有效5 597397358729411587294114 4无效无效6 636123612742155374215535 5无效无效7 7010137458934374589346 6无效无效8 80527405274846537184653717 7无效无效9 902hc02hc76538924765389248 8无效无效101001001004758325047583251111无效无效111105160516185643918564391212无效无效14140210218546238546231313无效无效15150351
19、03516976764536976764531414无效无效16160290298721cd678721cd671515无效无效19/1163.2.2 3.2.2 测试用例设计步骤与实例测试用例设计步骤与实例等价类划分需要经过以下两个思维过程:(1)分类。将输入域根据相同特性或类似功能进行分类。(2)抽象。在各个等价类中抽象出相同特性,然后用数据实例来表征这个特性。等价类划分法的优缺点:优点:是用相对较少的测试用例就能够进行比较完整的输入数据覆盖,解决了不能穷举测试的问题。缺点:是需要花费很多时间去定义规格说明中一般不会给出的无效测试用例预期输出。另外,等价类划分法缺乏对特殊测试用例的考虑,并
20、且经常需要深入的系统知识才能划分出合适的等价类。20/116 3.3 3.3 边界值分析法边界值分析法3.3.1 边界值选取原则3.3.2 两类边界值选取方法3.3.3 边界值分析法示例3.3.4 边界值分析法的特点21/116 3.3.1 边界值选取原则边界值选取原则 边界值是使等价类的每个边界都要作为测试条件,在边边界值是使等价类的每个边界都要作为测试条件,在边界处选取正好等于、刚刚大于或刚刚小于边界的值作为测试界处选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。此外,边界值分析法不仅需要考虑输入条件边界,还数据。此外,边界值分析法不仅需要考虑输入条件边界,还要考虑输出域边界的情况。
21、要考虑输出域边界的情况。一个程序中常见的边界情况有以下几种一个程序中常见的边界情况有以下几种:循环结构中第循环结构中第0 0次、第一次和最后一次循环。次、第一次和最后一次循环。数组的第一个和最后一个下标元素。数组的第一个和最后一个下标元素。变量类型所允许的最大和最小值。变量类型所允许的最大和最小值。一个链表的头尾结点。一个链表的头尾结点。用户名和密码等可接受字符个数的最大值和最小值。用户名和密码等可接受字符个数的最大值和最小值。报表的第一行、第一列、最后一行和最后一列。报表的第一行、第一列、最后一行和最后一列。22/116 3.3.1 边界值选取原则边界值选取原则根据边界值分析法选择测试用例根
22、据边界值分析法选择测试用例的的原则原则:如果输入条件规定了取值的范围,那么测试用例输入数据应如果输入条件规定了取值的范围,那么测试用例输入数据应选取所规定范围的边界值以及刚刚超过范围边界的值。选取所规定范围的边界值以及刚刚超过范围边界的值。如果输入条件规定了值的个数,那么测试用例选择最大个数、如果输入条件规定了值的个数,那么测试用例选择最大个数、最小个数、比最大个数多最小个数、比最大个数多1 1个和比最小个数少个和比最小个数少1 1个的数据等作个的数据等作为测试数据。为测试数据。根据规格说明的每一个输出条件,分别使用以上两个规则。根据规格说明的每一个输出条件,分别使用以上两个规则。如果输入域和
23、输出域是顺序表或顺序文件等有序集合,那么如果输入域和输出域是顺序表或顺序文件等有序集合,那么选取集合的第一个和最后一个元素作为测试用例。选取集合的第一个和最后一个元素作为测试用例。对于程序的内部数据结构,选择其边界值作为测试用例。对于程序的内部数据结构,选择其边界值作为测试用例。分析规格说明并找出其它可能的边界条件。分析规格说明并找出其它可能的边界条件。23/1163.3.2 两类边界值选取方法两类边界值选取方法测试用例的数据选取一般有如下两种方法:五点法、五点法、七点法。七点法。图图3-2 3-2 两类边界值数据选取方法两类边界值数据选取方法24/1163.3.2 两类边界值选取方法两类边界
24、值选取方法(1 1)一般边界值分析)一般边界值分析 假设一个被测程序具有两个输入变量假设一个被测程序具有两个输入变量X1X1和和X2X2,规定,规定aX1baX1b,cX2dcX2d。在采用一般边界值分析方法时,其测。在采用一般边界值分析方法时,其测试用例的数据选取按照如图试用例的数据选取按照如图3-23-2(a a)所示进行,共产生如表)所示进行,共产生如表3-73-7所示的所示的9 9个测试用例。个测试用例。表表3-7 3-7 两变量一般边界值分析测试用例两变量一般边界值分析测试用例 除了上下边界处的除了上下边界处的4 4个取值外,每个变量可以共用一个各个取值外,每个变量可以共用一个各变量
25、取值均为正常值的测试用例。那么,一般边界值分析测变量取值均为正常值的测试用例。那么,一般边界值分析测试用例的数量为试用例的数量为4N+14N+1个。个。编编号号1 12 23 34 45 56 67 78 89 9X X1 1a aa+a+normalnormalb-b-b bnormalnormalnormalnormalnormalnormalnormalnormalX X2 2normalnormalnormalnormalnormalnormalnormalnormalnormalnormalc cc+c+d-d-d d25/1163.3.2 两类边界值选取方法两类边界值选取方法(2
26、2)健壮性边界值分析)健壮性边界值分析 相比于一般边界值分析,健壮性边界值分析需要为每个相比于一般边界值分析,健壮性边界值分析需要为每个变量额外考虑略超过最大值变量额外考虑略超过最大值max+max+和略小于最小值和略小于最小值min-min-两种情两种情况。因此对于两个变量的情况,其边界值按照如图况。因此对于两个变量的情况,其边界值按照如图3-23-2(b b)所示,对于含有所示,对于含有N N个变量的程序,健壮性边界值分析测试用例个变量的程序,健壮性边界值分析测试用例的数量为的数量为6N+16N+1个。个。 健壮性测试的意义在于测试例外情况下程序如何处理。健壮性测试的意义在于测试例外情况下
27、程序如何处理。例如,输入缓冲区溢出如何处理,电梯的负荷超过最大值时例如,输入缓冲区溢出如何处理,电梯的负荷超过最大值时是否能够报警并拒绝启动运行等。对强类型语言(如是否能够报警并拒绝启动运行等。对强类型语言(如C C语言)语言)进行健壮性测试比较困难,超过变量取值范围的值都会产生进行健壮性测试比较困难,超过变量取值范围的值都会产生异常。异常。26/1163.3.3 边界值分析法示例边界值分析法示例一个函数包含3个输入变量,分别为Year、Month和Day,其输出是输入日期后一天的日期。例如,输入是2018年3月11日,则函数输出为2018年3月12日。要求3个输入变量均为正整数值,并且190
28、0Year2050,1Month12,1Day31。采用一般边界值分析法设计测试用例,因为问题中共有3个变量,所以测试用例数量为4N+1=43+1=13个。测试用例如表3-8所示。27/1163.3.3 边界值分析法示例边界值分析法示例表表3-8 3-8 日期函数一般边界值分析法测试用例日期函数一般边界值分析法测试用例用例编用例编号号Y YearearM MonthonthDayDay预期输出预期输出1 12 23 34 45 519001900190119012018201820492049205020508 88 88 88 88 86 66 66 66 66 619001900年年8 8
29、月月7 7日日19011901年年8 8月月7 7日日20182018年年8 8月月7 7日日20492049年年8 8月月7 7日日20502050年年8 8月月7 7日日6 67 78 89 9201820182018201820182018201820181 12 2111112126 66 66 66 620182018年年1 1月月7 7日日20182018年年2 2月月7 7日日20182018年年1111月月7 7日日 20182018年年1212月月7 7日日101011111212131320182018201820182018201820182018888888881 12
30、 23030313120182018年年8 8月月2 2日日20182018年年8 8月月3 3日日 2018 2018年年8 8月月3131日日 20182018年年9 9月月1 1日日28/1163.3.4 边界值分析法的特点边界值分析法的特点由于边界值分析法假设变量是完全独立的,不考虑它们之间的依赖关系,因此只是针对各个变量的边界范围导出了变量的极限值,没用分析函数的具体性质,也没有考虑变量的语义含义。另外,采用边界值分析法测试布尔型变量和逻辑变量的意义不大,因为其取值仅有True和False两种情况。29/116 3.4 3.4 判定表驱动法判定表驱动法3.4.1 判定表的构造与化简3
31、.4.2 判定表驱动法应用实例3.4.3 适用范围及优缺点30/1163.3.1 判定表的构造与化简判定表的构造与化简 判定表能够将复杂的逻辑关系和多种条件组合的情况直观和清晰地表达出来,因此便于程序开发人员理解设计要求,同时便于对设计结果进行检查。一个判定表由如图一个判定表由如图3-33-3所示的所示的4 4个部分构成个部分构成:(1)条件桩:列出了问题所包含的所有条件。一般情况下,条件的排列顺序无关紧要。(2)动作桩:列出了问题规定可能采取的操作。对这些操作的排列顺序一般没有什么要求。(3)条件项:条件桩中的每个条件可以取真值或假值,条件项给出了这些条件取值的多种组合情况。(4)动作项:列
32、出了在各种条件取值情况下应当采取的相应动作。31/1163.3.1 判定表的构造与化简判定表的构造与化简 图图3-3 判定表的构成判定表的构成 判定表的构造目的目的是为了表达和获取规则,规则是任何条件组合的特定取值及其应当执行的操作。在一个判定表中,贯穿条件项和动作项的一列就是一条规则。 一个判定表中给出了多少条件组合情况,相应的也就有多少条规则,即条件项和动作项有多少列。对于包含n个条件的判定表来讲,因为每个条件有真假两种取值情况,因此判定表有2n个规则。32/1163.3.1 判定表的构造与化简判定表的构造与化简 一个判定表的构造过程包含如下一个判定表的构造过程包含如下5 5个步骤:个步骤
33、:(1)列出所有的条件桩和动作桩。(2)根据条件桩中条件的个数确定规则的个数。(3)根据条件组合,填入条件取值,形成每一个条件项。(4)填入对应的动作项,得到初始判定表。(5)化简初始判定表,合并相似规则。33/1163.3.1 判定表的构造与化简判定表的构造与化简 构造实例:构造实例:假设一个程序的规格说明要求:“对于各科成绩均高于85分并且是优秀毕业生的人员,或者是总成绩大于450分的人员,应当优先录取,其它情况进行正常处理”。从规格说明可知,条件桩由“各科成绩均高于85分”、“优秀毕业生”和“总成绩大于450分”3个条件构成,动作桩由“优先录取”和“正常处理”两种动作构成。因为有3个条件
34、,所以有23=8个规则。根据8种条件取值组合情况,可以得到如表3-9所示的初始判定表。34/1163.3.1 判定表的构造与化简判定表的构造与化简 表表3-9 3-9 初始判定表初始判定表1 12 23 34 45 56 67 78 8条件条件各科成绩均高于各科成绩均高于8585分分Y YY YY YY YN NN NN NN N优秀毕业生优秀毕业生Y YY YN NN NY YY YN NN N总成绩大于总成绩大于450450分分Y YN NY YN NY YN NY YN N动作动作优先录取优先录取 正常处理正常处理 35/1163.3.1 判定表的构造与化简判定表的构造与化简 表表3-1
35、0 3-10 化简后的判定表化简后的判定表1 1,2 23 34 45 5,7 76 6,8 8条件条件各科成绩均高于各科成绩均高于8585分分Y YY YY YN NN N优秀毕业生优秀毕业生Y YN NN N总成绩大于总成绩大于450450分分Y YN NY YN N动作动作优先录取优先录取 正常处理正常处理 36/1163.3.1 判定表的构造与化简判定表的构造与化简 化简:化简:通过合并相似规则,减少规则总体数量。如果一个判定表中的两条或多条规则具有相同的动作,并且它们的条件项非常相似,那么可以考虑将这些规则合并为一条规则。图图3-4 3-4 判定表规则的合并判定表规则的合并37/11
36、63.3.1 判定表的构造与化简判定表的构造与化简 如图3-4(a)所示,两条规则的动作项相同,条件项中前两项条件的取值相同,只有第3项条件的取值不同。这种情况下,无论第3项条件取任何值,都会执行相同的动作。 因此,可以将两条规则合并为一条,用特定符号“”表示动作与该项条件取值无关。与图3-4(a)类似,在图3-4(b)中,无关条件项“”可以包含其它条件项取值,具有相同动作的规则还可以进一步合并。38/1163.4.2 3.4.2 判定表驱动法应用实例判定表驱动法应用实例 一个函数根据A、B和C三条边的输入值判断是否能够构成一个三角形,如果能够构成三角形,进而判断是等腰三角形还是等边三角形。A
37、、B和C均为正整数。 根据问题描述可以构造如表3-11所示的判定表,判定表中共有8条规则,根据每一条规则所对应的条件取值,选取相应的测试输入数据,就可以设计出8条判定表驱动法测试用例。39/1163.4.2 3.4.2 判定表驱动法应用实例判定表驱动法应用实例 表表3-11 3-11 判断三角形类型问题的判定表判断三角形类型问题的判定表序号序号1 12 23 34 45 56 67 78 8条件条件A+BCA+BCN NY YY YY YY YY YY YY YA+CBA+CBN NY YY YY YY YY YY YB+CAB+CAN NY YY YY YY YY YA=BA=BY YY Y
38、N NN NN NA=CA=CY YN NY YN NN NB=CB=CY YN N动作动作非三角形非三角形 不等边三角不等边三角形形 等腰三角形等腰三角形 等边三角形等边三角形 40/1163.4.2 3.4.2 判定表驱动法应用实例判定表驱动法应用实例 在应用判定表驱动法设计测试用例时,还需要注意默许规则和默许操作的问题。下面我们通过一个实例来说明该问题。如果一个软件的规格说明如下:如果一个软件的规格说明如下:(1 1)当条件)当条件1 1和条件和条件2 2满足,并且条件满足,并且条件3 3和条件和条件4 4不满足,不满足, 或者当条件或者当条件1 1、3 3和条件和条件4 4满足时,要执
39、行操作满足时,要执行操作1 1。(2 2)在任意一个条件都不满足时,要执行操作)在任意一个条件都不满足时,要执行操作2 2。(3 3)当条件)当条件1 1不满足,而条件不满足,而条件4 4被满足时,要执行操作被满足时,要执行操作3 3。41/1163.4.2 3.4.2 判定表驱动法应用实例判定表驱动法应用实例 根据说明,可以构造如表3-12所示的判定表。规格说明中共有4个条件,判定表只列出了16个规则中与规格描述直接相关的4个规则。 程序在实际执行时,当遇到除上述4条规则以外的其它规则时,需要执行一个默许的操作,不需要时,可以忽略这些规则。但是用判定表驱动法设计测试用例时,就必须列出这些默许
40、规则,如表3-13所示。42/1163.4.2 3.4.2 判定表驱动法应用实例判定表驱动法应用实例 表表3-12 3-12 根据规格说明得到的判定表根据规格说明得到的判定表 规则规则1 1规则规则2 2规则规则3 3规则规则4 4条件条件1 1Y YY YN NN N条件条件2 2Y YN N条件条件3 3N NY YN N条件条件4 4N NY YN NY Y操作操作1 1 操作操作2 2 操作操作3 3 43/1163.4.2 3.4.2 判定表驱动法应用实例判定表驱动法应用实例 表表3-13 3-13 默许的操作默许的操作 规则规则5 5规则规则6 6规则规则7 7规则规则8 8条件条
41、件1 1N NY YY Y条件条件2 2Y YY YN N条件条件3 3Y YN NN NN N条件条件4 4N NN NY Y默许操作默许操作44/1163.4.3.4.3 3 适用范围及优缺点适用范围及优缺点 优点优点:(1)能将规格说明中各种复杂逻辑组合情况一一列举出来,直观并且易于理解,便于检查并且能够避免功能遗漏。(2)每个测试用例可以覆盖多种输入情况,有利于提高测试效率。(3)考虑了输入条件间的约束关系,因此避免了无效测试用例,特高了测试有效性。(4)能够很方便地给出每个测试用例的预期输出。45/1163.4.3.4.3 3 适用范围及优缺点适用范围及优缺点 缺点缺点:(1)不能表
42、达重复执行的动作,例如循环语句的执行。(2)当被测特性较多时,判定表的规模会很庞大。(3)不能有效地确认某些输入组合是否必须测试,会造成一定的用例冗余。46/1163.4.3.4.3 3 适用范围及优缺点适用范围及优缺点 适合采用判定表驱动法设计测试用例的条件如下:适合采用判定表驱动法设计测试用例的条件如下:(1)规格说明以判定表形式给出,或者很容易转换成判定表。(2)条件和规则的排列顺序不会影响执行哪些操作。(3)每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的操作。(4)如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。 上述必要条件使得操作的执行完全依赖于条件
43、的组合。上述必要条件使得操作的执行完全依赖于条件的组合。对于不满足上述条件的判定表,也可以采用判定表驱动法设对于不满足上述条件的判定表,也可以采用判定表驱动法设计测试用例,但是需要增加其它的测试用例作为补充。计测试用例,但是需要增加其它的测试用例作为补充。47/116 3.5 3.5 因果图法因果图法3.5.1 因果图法的原理3.5.2 因果图法应用实例48/1163.5.1 3.5.1 因果图法的原理因果图法的原理 如果程序输入条件和动作之间的逻辑关系是明确的,可以直接使用判定表驱动法。但是如果条件和动作关系不明确,则应当先使用因果图法。所谓“因”,指的就是程序的输入条件;所谓果,指的就是程
44、序的输出条件。优点优点:因果图法借助图形,能够直观地分析和表达输入的各种组因果图法借助图形,能够直观地分析和表达输入的各种组合关系、约束关系以及每种组合条件下的输出结果。合关系、约束关系以及每种组合条件下的输出结果。采用因果图法,不仅可以发现输入和输出中的错误,而且采用因果图法,不仅可以发现输入和输出中的错误,而且能够发现规格说明中存在的不完整性和二义性问题。能够发现规格说明中存在的不完整性和二义性问题。49/1163.5.1 3.5.1 因果图法的原理因果图法的原理不足:不足:程序输入与输出之间的因果关系有时难以从规格说明中直程序输入与输出之间的因果关系有时难以从规格说明中直接得到。接得到。
45、当输入条件很多时,测试用例的数量会很大,会造成测试当输入条件很多时,测试用例的数量会很大,会造成测试工作量大和用例不便于维护的问题,需要根据实际情况尽工作量大和用例不便于维护的问题,需要根据实际情况尽量精简输入条件的个数。量精简输入条件的个数。 因果图是一种形式化的图形语言,通过图形记号将自然语言规格说明转变成形式化语言规格说明,能够严格地表达程序输入和输出逻辑关系。50/1163.5.1 3.5.1 因果图法的原理因果图法的原理(1 1)因果图的表达形式)因果图的表达形式图图3-5 3-5 因果图的基本图形符号因果图的基本图形符号 图图3-53-5给出了用于表示规格说明中给出了用于表示规格说
46、明中4 4种基本因果关系的图形种基本因果关系的图形符号,描述了输入条件之间的逻辑关系。每一种逻辑符号分为符号,描述了输入条件之间的逻辑关系。每一种逻辑符号分为左右结点,以直线相连。左结点左右结点,以直线相连。左结点CiCi表示原因(输入状态),右表示原因(输入状态),右结点结点EiEi表示结果(输出状态)。原因和结果结点都可以取布尔表示结果(输出状态)。原因和结果结点都可以取布尔值值0 0或或1 1,0 0表示条件不成立或状态不出现,表示条件不成立或状态不出现,1 1表示条件成立或状表示条件成立或状态出现。态出现。51/1163.5.1 3.5.1 因果图法的原理因果图法的原理4 4种基本因果
47、逻辑关系的含义分别为:种基本因果逻辑关系的含义分别为:恒等:如果原因出现,则结果出现;如果原因不出现,则结恒等:如果原因出现,则结果出现;如果原因不出现,则结果也不出现。果也不出现。非():如果原因出现,则结果不出现;如果原因不出现,非():如果原因出现,则结果不出现;如果原因不出现,则结果出现。则结果出现。或(或():如果几个原因中有一个出现,则结果出现;如果):如果几个原因中有一个出现,则结果出现;如果几个原因都不出现,则结果不出现。几个原因都不出现,则结果不出现。与(与():如果几个原因都出现,那么结果才会出现;如果):如果几个原因都出现,那么结果才会出现;如果几个原因中有一个不出现,那
48、么结果就不会出现。几个原因中有一个不出现,那么结果就不会出现。 在实际问题中,输入条件之间、输出条件之间往往存在着某些依赖关系,我们称之为约束。因果图在基本图形符号的基础上,采用一些特定的符号来表示这些约束。52/1163.5.1 3.5.1 因果图法的原理因果图法的原理图图3-6 因果图的约束符号因果图的约束符号 图3-6(a)到图3-6(d)分别给出了4种输入条件之间的约束关系,图3-6(e)是一种输出条件之间的约束关系,它们的含义分别如下:53/1163.5.1 3.5.1 因果图法的原理因果图法的原理 E(互斥):表示C1和C2两个原因不会同时成立,两个原因中最多有一个可能成立。 I(
49、包含):表示C1、C2和C3三个原因中至少有一个必须成立。 O(唯一):表示C1和C2两个原因中必须有一个,且仅有一个成立。 R(要求):表示当C1出现时,C2也必须出现,即C1是1时,C2也必须是1。 M(强制):表示当结果E1是1时,结果E2必须是0。54/1163.5.1 3.5.1 因果图法的原理因果图法的原理(2 2)利用因果图法设计测试用例的步骤)利用因果图法设计测试用例的步骤u分析软件的规格说明,确定哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),给每一个原因和结果赋予一个标识符。u分析软件规格说明中的语义信息,确定原因与结果之间、原因与原因之间对应的逻辑关
50、系,然后根据这些关系画出因果图。u在因果图上标明约束。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为了表明这些特性情况,在因果图上通过标准的符号标明约束条件。55/1163.5.1 3.5.1 因果图法的原理因果图法的原理u将因果图转化为判定表。u根据判定表的每一项规则设计测试用例。 因果图法的分析结果就是判定表,之后设计测试用例的方法和判定表驱动法是一致的。因此可知,因果图法更适合规格说明中输入输出逻辑复杂和描述不清晰的情况。对于简单清晰的条件组合与逻辑关系,可直接使用判定表驱动法。56/1163.5.3.5.2 2 因果图法应用实例因果图法应用实例 一个软件规格说明要求如