1、7.6 白盒测试技术白盒测试技术白盒测试白盒测试的原则的原则对程序模块的所有对程序模块的所有独立独立执行路径执行路径至少测试一次至少测试一次对所有的对所有的逻辑判定逻辑判定取取“真真”与取与取“假假”的两种情况的两种情况都至少测试一次。都至少测试一次。 在在循环的边界和可操作范围循环的边界和可操作范围内内执行循环体执行循环体 测试测试内部数据结构内部数据结构的有效性,的有效性,完成边界条件的测试。完成边界条件的测试。循环小于等于20次迪杰斯特拉定律:穷尽测试永远不可能迪杰斯特拉定律:穷尽测试永远不可能执行路径:执行路径:5 52020个个如果如果1ms1ms完成一完成一个测试个测试近似为近似为
2、10101414个个需需31703170年年1. 语句覆盖语句覆盖2. 判定覆盖判定覆盖3. 条件覆盖条件覆盖4. 判定判定-条件覆盖条件覆盖5. 条件组合覆盖条件组合覆盖6. 路径覆盖路径覆盖设计测试用例,使被测程序中的设计测试用例,使被测程序中的每个每个可执行语句至少被执行一次可执行语句至少被执行一次int a, b; double c; if ( a 0 & b 0 ) c = c / a; if ( a 1 | c 1 ) c= c+1; c = b+c; c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 1M=.T. 且且 N=.T. c=b+cc=c/ac=c
3、+1TTFFa 0 & b 0a 1 | c 1 c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 1Case1:a=2, b=0, c=3用例abcCase1203Case2213此语句未覆盖此语句未覆盖 c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 1用例abcCase1203Case2213Case2输入:a=2, b=1, c=3Case2输出:c=3.5如果如果M为:为:a 0 | b 0;N为:为:a 1&c 1,测试用例与测试结果有设么测试用例与测试结果有设么变化变化?Case2:a=2, b=1, c=3Case2输出:c=3.5
4、语句覆盖是弱覆盖标准!语句覆盖是弱覆盖标准!BugBug c=b+cc=c/ac=c+1TTFFa 0 | b 0a 1 & c 1设计测试用例,使被测程序中的设计测试用例,使被测程序中的每个判断的每个判断的取真分支和取假分支都被测试用例至少执行取真分支和取假分支都被测试用例至少执行一次一次int a, b; double c if ( a 0 & b 0 ) c = c / a; if ( a 1 | c 1 ) c= c+1; c = b+c; c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 1 c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c
5、 112345M=.T. 且且 N=.T.M=.F. 且且 N=.F.设计测试用例及预期结果设计测试用例及预期结果No测试用例测试用例覆盖的判断分支覆盖的判断分支输出结果输出结果1a=2,b=1,c=3判断M取值为真分支和判断N取值为真分支c=3.52a= -2,b=1,c= -3判断M取值为假分支和判断N取值为假分支c=-2条件中的取值有被忽略的情况a=2,b=1,c=3a= -2,b=1,c= -3输出:输出:3.5 -2判定覆盖仍是弱覆判定覆盖仍是弱覆盖标准!盖标准! c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 0 & b 0 ) c = c / a; if
6、( a 1 | c 1 ) c= c+1; c = b+c; c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 112345P1:1-2-4P2:1-2-5P3:1-3-4P4:1-3-5No测试用例测试用例覆盖的判断条件覆盖的判断条件通过路径通过路径1a=2,b= -1,c= -2T1,F2,T3,F4?2A=-1,b=2,c= 3F1,T2,F3,T4?对于判定对于判定M:l条件条件a0:取值为真为:取值为真为T1,取值为假为,取值为假为F1l条件条件b0:取值为真为:取值为真为T2,取值为假为,取值为假为F2对于判定对于判定N:l条件条件a1:取值为真为:取值为真为
7、T3,取值为假为,取值为假为F3l条件条件c1:取值为真为:取值为真为T4,取值为假为,取值为假为F4虽然覆盖了所有条件,但不能保证多个判定虽然覆盖了所有条件,但不能保证多个判定分支均被覆盖到分支均被覆盖到设计足够测试用例,使得判定中的所有条件可判定中的所有条件可能取值至少执行一次,同时,所有判定的可能能取值至少执行一次,同时,所有判定的可能结果至少执行一次。结果至少执行一次。判定-条件覆盖能同时满足判定判定、条件条件两种覆盖标准。int a, b; double c if ( a 0 & b 0 ) c = c / a; if ( a 1 | c 1 ) c= c+1; c = b+c; c
8、=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 112345No测试用例测试用例覆盖的判断分支覆盖的判断分支判定条件判定条件路径路径1a=2,b= 1,c= 3T1,T2,T3,T4条件M取值为真分支条件N取值为真分支P12a= -1,b= -2,c= -5F1,F2,F3,F4条件M取值为假分支条件N取值为假分支P4为了使被测程序得到充分测试,不仅每个条件需要被覆盖,而且每个条件的组合也应该被覆盖到。int a, b; double c1 if ( a 0 & b 0 )2 c = c / a;3 4 if ( a 1 | c 0 & b 0a 1 | c 0:取值为真
9、为:取值为真为T1,取值为假为,取值为假为F1l条件条件b0:取值为真为:取值为真为T2,取值为假为,取值为假为F2对于第二个判定条件:对于第二个判定条件:l条件条件a0:取值为真为:取值为真为T3,取值为假为,取值为假为F3l条件条件c1:取值为真为:取值为真为T4,取值为假为,取值为假为F4No覆盖条件组合覆盖条件组合判定取值判定取值1T1,T2判定M = T2T1,F2判定M = F3F1,T2判定M = F4F1,F2判定M = F5T3,T4判定N = T6T3,F4判定N= T7F3,T4判定N = T8F3,F4判定N = FNo覆盖组合覆盖组合覆盖条件覆盖条件测试用例测试用例路
10、径路径11,5T1,T2,T3,T4a=2,b= 1,c= 6P122,6F1,F2,T3,F4a= 2,b= -1,c=-2P333,7F1,T2,F3,T4a=-1,b= 2,c= 3P344,8F1,F2,F3,F4a=-1,b=-2,c=-3P4不能保证所有路径被覆盖到不能保证所有路径被覆盖到设计测试用例,来覆盖被测程序中的所有可能所有可能的执行路径的执行路径P1:1-2-4P2:1-2-5P3:1-3-4P4:1-3-5 c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 112345No覆盖路径覆盖路径覆盖条件覆盖条件测试用例测试用例覆盖组合覆盖组合1P1T1,
11、T2,T3,T4a=2,b= 1,c= 61,52P2T1,T2,F3,F4a= 1,b= 1,c= -31,83P3F1,T2,F3,T4a= -1,b= 2,c= 33,74P4F1,F2,F3,F4A=-1,b=-2,c=-34,8不满足条件组合覆盖准则No测试用例测试用例覆盖路径覆盖路径覆盖条件覆盖条件覆盖组合覆盖组合1a=2,b= 1,c= 6P1T1,T2,T3,T41,52a= 1,b= 1,c=-3P2T1,T2,F3,F41,83a= 2,b= -1,c=-2P3T1,F2,T3,F42,64a= -1,b= 2,c= 3P3F1,T2,F3,T43,75A=-1,b=-2,
12、c=-3P4F1,F2,F3,F44,8发现错误发现错误的能力的能力标标 准准含含 义义(弱弱)语句覆盖语句覆盖每条语句至少执行一次每条语句至少执行一次(中中) 判定覆盖判定覆盖每一判定的每个分支至少执行一次每一判定的每个分支至少执行一次(中中) 条件覆盖条件覆盖每一判定中的每个条件,分别按每一判定中的每个条件,分别按“真真”、“假假”至少各执行一次至少各执行一次(强强) 判定判定/条件覆盖条件覆盖同时满足判定覆盖和条件覆盖的要求同时满足判定覆盖和条件覆盖的要求(强强) 条件组合覆盖条件组合覆盖求出判定中所有条件的各种可能组合求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次值
13、,每一可能的条件组合至少执行一次覆盖标准覆盖标准程序结构举例程序结构举例测试用例测试用例应满足的条件应满足的条件语句覆盖语句覆盖AB=.T.判定覆盖判定覆盖AB=.T.AB=.F.TFTF覆盖标准覆盖标准程序结构举例程序结构举例测试用例应测试用例应满足的条件满足的条件条件覆盖条件覆盖A=.T. A=.F.B=.T. B=.F.判定判定/条件条件覆盖覆盖AB=.T. , AB=.F.A=.T. A=.F. B=.T. B=.F.条件组合条件组合覆盖覆盖 A=.T. B=.T. A=.T. B=.F.A=.F. B=.TA=.F. B=.F.TFTFTF如果满足准则满足准则A的测试用例集一定满足准
14、则的测试用例集一定满足准则B,那么我们就认为准则A包含包含准则B。例如:判定覆盖准则包含语句覆盖准则语句覆盖语句覆盖判定覆盖判定覆盖条件覆盖条件覆盖判定判定/条件覆盖条件覆盖条件组合覆盖条件组合覆盖路径覆盖路径覆盖作业:为以下流程图所示的程序段设计一组测试用例,要求分作业:为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖、组合覆盖和路径覆盖。覆盖和路径覆盖。X8 & Y5X0 | Y0Z = 1Z = 2FTFTX16 | Y10Z =3FT基本路径:保证被测程序的每个基本路径:保证被测程序
15、的每个可执行语句可执行语句至少被执行一次的至少被执行一次的最小路径集最小路径集基本路径测试法通过以下4个步骤来实现 绘制程序控制流图绘制程序控制流图 分析环路复杂度分析环路复杂度 导出基本可执行路径集导出基本可执行路径集 设计测试用例设计测试用例39流程图int a, b; double c; if ( a 0 & b 0 ) c = c / a; if ( a 1 | c 1 ) c= c+1; c = b+c; c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 1 c=b+cc=c/ac=c+1TTFFa 0 & b 0a 1 | c 1环路复杂度环路复杂度又称又称圈
16、复杂度圈复杂度或或复杂度复杂度程序逻辑复杂性的程序逻辑复杂性的度量值度量值环路复杂度环路复杂度=基本路径数目基本路径数目经验表明,程序的可能存在的经验表明,程序的可能存在的BUGBUG数与环路复杂度数与环路复杂度有着很大的相关性。有着很大的相关性。计算程序环路复杂度计算程序环路复杂度V(G)ACEDB123V(G)=区域数目区域数目V(G)=边的数目节点数目边的数目节点数目+2V(G)=判断节点数目判断节点数目+1 存在多个可行的基本路径集 其中一个可行的基本路径集包含如下基本路径ACEABCEABCDE程序流程图ACEDBID测试用例测试用例覆盖路径覆盖路径1a= -1,b=-2,c=-3A
17、CE2a=1,b=1,c=-3ABCE3a=2,b=1,c=6ABCDE123456879环路复杂度:环路复杂度:l方法1:4l方法2:11-9+2=4l方法3:3+1=4基本路径集:基本路径集:1. 1-92. 1-2-3-4-6-8-1-93. 1-2-3-5-6-8-1-94. 1-2-7-8-1-96354217环路复杂度:环路复杂度:l方法1:3l方法2:8-7+2=3l方法3:2+1=3基本路径集:基本路径集:1. 1272. 12346273. 12356273EDBACFG9187654210R1R5R4R3R2环路复杂度:环路复杂度:l方法1:5l方法2:10-7+2=5l方
18、法3:4+1=3基本路径集:基本路径集:1. ADFG2. ADEFG3. ABEFG4. ABCBEFG第六讲第六讲 黑盒测试技术黑盒测试技术引言引言本章将开始讲黑盒测试的基本概念与基本方法,介本章将开始讲黑盒测试的基本概念与基本方法,介绍等价类划分、边界值分析、决策表法、因果图法绍等价类划分、边界值分析、决策表法、因果图法等方法,并通过实例来介绍测试技术的应用。等方法,并通过实例来介绍测试技术的应用。一、黑盒测试概述一、黑盒测试概述功能测试、基于规格说明的测试、数据驱动测试依据依据设计规格书(设计规格书(Specification)需求文档(需求文档(Requirement)设计文档(设计
19、文档(Design)软件输入输入黑盒测试不深入代码细节输出输出功能功能用锁须知用锁须知特性描述:锁特性描述:锁金属制品,有一个用于上锁的钥匙孔,能够金属制品,有一个用于上锁的钥匙孔,能够插入钥匙,钥匙孔可以顺时针或逆时针旋转插入钥匙,钥匙孔可以顺时针或逆时针旋转特性描述:钥匙特性描述:钥匙 金属制品,可以和特定的钥匙孔匹配金属制品,可以和特定的钥匙孔匹配执行动作执行动作上锁时,插入钥匙并顺时针旋转上锁时,插入钥匙并顺时针旋转开锁时,插入钥匙并逆时针旋转开锁时,插入钥匙并逆时针旋转状态状态已上锁已上锁已开锁已开锁输入输入钥匙顺时针或逆时针旋转钥匙顺时针或逆时针旋转预期输出预期输出锁上锁上打开打开
20、测试对象描述类比黑盒测试的内容不正确或遗漏了的功能正确地接受输入数据并产生正确地输出界面出错和界面美观问题安装中的出现的问题初始化和终止错误问题操作逻辑问题通过测试通过测试(正面测试)(正面测试) 确认软件能做确认软件能做什么?什么?黑盒测试失败测试失败测试(负面测试)(负面测试)迫使出错!迫使出错!黑盒测试的两种基本思路黑盒测试的两种基本思路需求标识需求标识输入输入1输入输入2当前状态当前状态预期状态预期状态BR-01号码为号码为123-456的钥匙的钥匙顺时针旋转顺时针旋转开锁开锁上锁上锁BR-01号码为号码为123-456的钥匙的钥匙顺时针旋转顺时针旋转上锁上锁不变不变BR-02号码为号
21、码为123-456的钥匙的钥匙逆时针旋转逆时针旋转开锁开锁不变不变BR-02号码为号码为123-456的钥匙的钥匙逆时针旋转逆时针旋转上锁上锁开锁开锁BR-04发卡发卡顺时针旋转顺时针旋转上锁上锁不变不变 正面测试正面测试序号序号输入输入1输入输入2当前状态当前状态预期状态预期状态1某个其它锁的钥匙某个其它锁的钥匙顺时针旋转顺时针旋转上锁上锁上锁上锁2某个其它锁的钥匙某个其它锁的钥匙逆时针旋转逆时针旋转开锁开锁开锁开锁3铁丝铁丝逆时针旋转逆时针旋转开锁开锁开锁开锁4用石头打击用石头打击上锁上锁上锁上锁 负面测试负面测试等价类(等价类(Equivalence Class Partitioning
22、,ECP )对于某个输入域的对于某个输入域的集合集合,如果用集合中的一个输,如果用集合中的一个输入条件作为测试数据进行测试不能发现程序中的错误,入条件作为测试数据进行测试不能发现程序中的错误,那么使用集合中的其他输入条件进行测试也不可能发那么使用集合中的其他输入条件进行测试也不可能发现错误,对于检测程序中的错误来说,集合中每个输现错误,对于检测程序中的错误来说,集合中每个输入条件都是等价的,就称该集合中的条件为入条件都是等价的,就称该集合中的条件为等价类等价类。1. 概念概念二二 等价类划分法等价类划分法有效等价类有效等价类 是是合理的、有意义的合理的、有意义的输入数据所构成的集合输入数据所构
23、成的集合验证验证预期的功能和性能的实现预期的功能和性能的实现无效等价类无效等价类 是是不合理的,没有意义的不合理的,没有意义的输入数据构成的集合输入数据构成的集合 对无效数据的处理能力对无效数据的处理能力、如果输入条件规定了如果输入条件规定了取值范围取值范围,则可以,则可以划分一个有效等价类和两个无效等价类。划分一个有效等价类和两个无效等价类。2. 等价类的划分规则等价类的划分规则例:输入值是学生成绩,范围是例:输入值是学生成绩,范围是0100有效等价类:有效等价类:0成绩成绩100无效等价类:无效等价类:成绩成绩100、如果输入数据是如果输入数据是给定值或布尔值给定值或布尔值,则可以,则可以
24、划分出一个有效等价类和一个无效等价类。划分出一个有效等价类和一个无效等价类。例:程序输入条件例:程序输入条件x=10 有效等价类:有效等价类: x=10 无效等价类:无效等价类: x10程序输入性别:男程序输入性别:男 有效等价类:男有效等价类:男 无效等价类:女无效等价类:女、如果输入数据是一个数组(包括如果输入数据是一个数组(包括n个输个输入),且程序对不同输入值做不同处理,则入),且程序对不同输入值做不同处理,则有有n个有效等价类和一个无效等价类。个有效等价类和一个无效等价类。例:输入条件说明学历可为例:输入条件说明学历可为:专科、本科、硕士、专科、本科、硕士、博士四种之一博士四种之一有
25、效等价类:有效等价类:专科、专科、本科、本科、硕士、硕士、博士博士无效等价类:无效等价类:其它任何学历其它任何学历、如果输入数据必须遵循某种规则,可确如果输入数据必须遵循某种规则,可确定一个有效等价类(符合规则)和若干个无效定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则等价类(从不同角度违反规则)。例:校内电话号码拨外线为例:校内电话号码拨外线为9开头开头有效等价类:有效等价类: 9外线号码外线号码无效等价类:无效等价类:非非9开头外线号码开头外线号码 9非外线号码,非外线号码,3. 测试用例的设计步骤测试用例的设计步骤(1) 对对输入输入或或外部条件外部条件进行等价类划分
26、,形成进行等价类划分,形成等价等价类表类表并编号;并编号;(2)设计用例,设计用例,尽可能多地覆盖尚未覆盖的有效等尽可能多地覆盖尚未覆盖的有效等价类价类,重复;,重复;(3)设计新用例,设计新用例,只覆盖一个无效等价类只覆盖一个无效等价类,重复。,重复。思考:思考:3 3的顺序是否可以和的顺序是否可以和2 2颠倒?颠倒?例例1:报表日期:报表日期设某公司要打印20012005年的报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。第一步:划分等价类、编号第一步:划分等价类、编号输入及输入及外部条件外部条件有效等价类有效等价类无效等价类无效等价类报表日期的报表日期的类型及长度类型
27、及长度6位数字字符位数字字符有非数字字符有非数字字符 少于少于6个数字字符个数字字符 多于多于6个数字字符个数字字符 年份范围年份范围在在20012005之间之间小于小于2001 大于大于2005 月份范围月份范围在在112之间之间小于小于1 大于大于12 第二步:为有效等价类设计测试用例第二步:为有效等价类设计测试用例对表中编号为的3个有效等价类用一个测试用例覆盖:测试数据测试数据期望结果期望结果覆盖范围覆盖范围200105输入有效输入有效等价类等价类第三步:为每一个无效等价类至少设计一个测试用例第三步:为每一个无效等价类至少设计一个测试用例测试数据测试数据期望结果期望结果覆盖范围覆盖范围0
28、01MAY输入无效输入无效等价类等价类20015输入无效输入无效等价类等价类2001001输入无效输入无效等价类等价类200001输入无效输入无效等价类等价类200802输入无效输入无效等价类等价类200100输入无效输入无效等价类等价类200113输入无效输入无效等价类等价类本例的本例的1010个等价类至个等价类至少需要少需要8 8个测试用例个测试用例不能出现相同的测试用例不能出现相同的测试用例4. 等价类划分法的特点等价类划分法的特点 优点:较少的用例,较完整的覆盖。优点:较少的用例,较完整的覆盖。 缺点:缺点:u缺乏特殊用例的考虑缺乏特殊用例的考虑;u需要有深入的系统知识,才能合理的划分
29、等价类。需要有深入的系统知识,才能合理的划分等价类。对考试系统“成绩查询模块”子模块输入准考证号查询成绩行政专业准考证号码为:110001111215法律专业准考证号码为:210001212006财经专业准考证号码为:310001314015例例2:准考证号码:准考证号码例例:准考证号码的等价类划分准考证号码的等价类划分 有效等价类有效等价类: (1) 110001 111215 (2) 210001 212006 (3) 310001 314015 无效等价类无效等价类: (4) - 110000 (5) 111216 210000 (6) 212007 310000 (7) 314016
30、+ 等价类的划分规则等价类的划分规则规则规则有效等价类个数有效等价类个数无效等价类个数无效等价类个数范围范围12定值或布尔值定值或布尔值11数组数组n1规则规则1x四四 边界值分析法边界值分析法 Boundary Value Analysis,BVA 理论提出:理论提出:长期的测试工作经验表明,大量的错误是发生在长期的测试工作经验表明,大量的错误是发生在输入输入或或输出输出范围的范围的边界边界上,而不是发生在输入输出范上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。以查出更多的错误。定义:定义:边界值分析法
31、就是对边界值分析法就是对输入或输出的边界值输入或输出的边界值进行测进行测试的一种黑盒测试方法。试的一种黑盒测试方法。通常边界值分析法是通常边界值分析法是作为对等价类划分法的补充作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。这种情况下,其测试用例来自等价类的边界。1. 常见的边界值常见的边界值1)对)对16-bit 的整数而言的整数而言 32767 和和 -32768 是边界是边界2)屏幕上光标在最左上、最右下位置)屏幕上光标在最左上、最右下位置3)报表的第一行和最后一行)报表的第一行和最后一行4)数组元素的第一个和最后一个)数组元素的第一个和最后一个5)循环的第)循环的第
32、0 次、第次、第 1 次和倒数第次和倒数第 2 次、最后一次次、最后一次边界值分析的基础思想是在输入变量的取值区间边界值分析的基础思想是在输入变量的取值区间内取内取最小值、略高于最小值、正常值、略低于最大值最小值、略高于最小值、正常值、略低于最大值和最大值和最大值5个值。个值。边界值分析边界值分析健壮性健壮性边界值分析边界值分析2. 用例设计思想用例设计思想例例1:一个输入年份的输入框,一个输入年份的输入框,其其限制条件是限制条件是1900年至年至2012年,那么年,那么选择测试用例为:选择测试用例为: 1900,1901,1950,2011,2012 1899,1900,1901,1950,
33、2011,2012,2013 例例2:银行银行取取款机,款机,取款取款金额是金额是100 10000,提款,提款的颗粒度为的颗粒度为100元,那么元,那么选择测试用例为:选择测试用例为:0,100,200,5000,9900,10000,101003. 选择测试用例技巧选择测试用例技巧 (1)输入条件:范围输入条件:范围刚刚达到刚刚达到这个范围的边界的值,以及这个范围的边界的值,以及刚刚超越刚刚超越这这个范围边界的值个范围边界的值例如:如果程序的规格说明中规定:例如:如果程序的规格说明中规定:“重量在重量在10公斤公斤至至50公斤范围内的邮件,其邮费计算公式为公斤范围内的邮件,其邮费计算公式为
34、”。测试用例测试用例:9.99,10 ,10.01,25,49.99, 50,50.01(2)输入条件:值的个数输入条件:值的个数最大个数最大个数,最小个数,比最小个数少一,比最大个最小个数,比最小个数少一,比最大个数多一数多一例如:一个输入文件应包括例如:一个输入文件应包括1255个记录个记录则测试用:则测试用:0,1,122,255,256等。等。(3)(1)、()、(2)应用于输出条件)应用于输出条件例如:某程序的规格说明要求计算出例如:某程序的规格说明要求计算出“每月保险金扣每月保险金扣除额为除额为0至至1165.25元元”测试用例选取应能使计算结果为测试用例选取应能使计算结果为0.0
35、0和和1165.25、以及、以及-0.01及及1165.26等。等。例如:检索系统程序,要求每次例如:检索系统程序,要求每次“最少显示最少显示1条、最多条、最多显示显示4条检索信息条检索信息测试用例应能使输出结果为:测试用例应能使输出结果为:1,4,还应包括,还应包括0,5等。等。 (4)输入、输出域是)输入、输出域是有序集合有序集合集合的第一个元素和最后一个元素集合的第一个元素和最后一个元素(5)内部数据结构内部数据结构内部数据结构的边界上的值内部数据结构的边界上的值(6)分析规格说明,找出其它可能的边界条件)分析规格说明,找出其它可能的边界条件(7)正常值正常值接近取值范围中间值接近取值范
36、围中间值即可即可例:例:“输入输入3个值,输出三角形的类型个值,输出三角形的类型”测试用例:测试用例:测试用例测试用例a ab bc c预期输出预期输出Test1Test1Test2Test2Test3Test3Test4Test4Test5Test560606060606050505050606060606060505050501 12 260609999100100等腰三角形等腰三角形等腰三角形等腰三角形等边三角形等边三角形等腰三角形等腰三角形非三角形非三角形Test6Test6Test7Test7Test8Test8Test9Test960606060505050501 12 29999
37、1001006060606050505050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形Test10Test10Test11Test11Test12Test12Test13Test131 12 2999910010060606060505050506060606050505050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形边界值是特殊的等价类边界值是特殊的等价类 边界值分析不仅考虑输入,还要考虑输出。边界值分析不仅考虑输入,还要考虑输出。4. 边界值与等价类的区别边界值与等价类的区别5. 边界值的弱点边界值的弱点 “单缺陷单缺陷”
38、假设假设:即由于缺陷导致的程序失效极少是即由于缺陷导致的程序失效极少是由两个(或多个)缺陷的同时作用引起。由两个(或多个)缺陷的同时作用引起。 程序程序输入是输入是多个独立的变量,多个独立的变量,比较比较适合边界值适合边界值 变量之间相互影响时,变量之间相互影响时,效果不好效果不好(人的身高体重人的身高体重) 边界值分析与等价类划分效果与测试人员的经验密边界值分析与等价类划分效果与测试人员的经验密切相关。切相关。组合分析法组合分析法 考虑思想:错误的主要来源来自于各种因素的组合,考虑思想:错误的主要来源来自于各种因素的组合,而非一个因素。而非一个因素。 优点:实现成本低、维护成本低、容易自动化
39、、错优点:实现成本低、维护成本低、容易自动化、错误发现效率高、测试方式灵活。误发现效率高、测试方式灵活。作业:作业:1.阅读伪代码,完成下列任务阅读伪代码,完成下列任务(1)画出程序流程图、盒图。)画出程序流程图、盒图。(2)按照不同的覆盖准则,确定)按照不同的覆盖准则,确定测试用例的数量,并设计测试用测试用例的数量,并设计测试用例。例。 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 路径覆盖路径覆盖(3)画出控制流图,用基本路径)画出控制流图,用基本路径法设计测试用例。法设计测试用例。If X8 and Y5 thenif X16 or Y10 thenZ=3endifElseIf
40、X0 or Y0 thenZ=2ElseZ=1endifendif2.用边界值法设计以下函数的测试用例。用边界值法设计以下函数的测试用例。(1)y=ABS(x);(;(2)y=sin(x)3.用等价类划分法测试成绩输入文本框设计测试用例。用等价类划分法测试成绩输入文本框设计测试用例。(1)百分制;()百分制;(2)五级制。)五级制。4.需要测试学号输入文本框,学号结构为需要测试学号输入文本框,学号结构为8位数字字位数字字符组成,前两位是年代后两位,符组成,前两位是年代后两位,3、4两位是专业编号两位是专业编号(1-50),),5、6位为班级编号(位为班级编号(1-20),),7、8位为位为50
41、以内的流水号。以内的流水号。作业:作业:1.为以下流程图所示的程序段设计一组测试用例,为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖和路径覆盖要求分别满足语句覆盖、判定覆盖、条件覆盖和路径覆盖设计测试用例。设计测试用例。2.用基本路径法设计测试用例。用基本路径法设计测试用例。X8 & Y5X0 | Y0Z = 1Z = 2FTFTX16 | Y10Z =3FT划分等价类、编号划分等价类、编号输入及输入及外部条件外部条件有效等价类有效等价类无效等价类无效等价类类型及长度类型及长度8位数字字符位数字字符有非数字字符有非数字字符 少于少于8个数字字符个数字字符 多
42、于多于8个数字字符个数字字符 年份范围年份范围在在0099之间之间小于小于0 、大于、大于99专业编号范围专业编号范围在在0175之间之间小于小于01 、大于、大于75 班级编号范围班级编号范围在在0120之间之间小于小于01 、大于、大于20 流水编号范围流水编号范围在在0150之间之间小于小于01 、大于、大于50 编号编号测试数据测试数据期望结果期望结果114010101输入有效输入有效2141121310输入无效输入无效34567 判定表又称判定表又称决策表决策表 定义:把输入条件各种组合以及对应输出值都罗列定义:把输入条件各种组合以及对应输出值都罗列出来而形成的表格。出来而形成的表格
43、。 是一个典型的是一个典型的组合分析组合分析方法方法 把问题的各种可能都列举出来,简明且不会遗漏。把问题的各种可能都列举出来,简明且不会遗漏。 是最严格,最具有逻辑性的黑盒测试方法。是最严格,最具有逻辑性的黑盒测试方法。五五 判定表方法(判定表方法(Decision Table ) 条件桩条件桩 条件项条件项 动作桩动作桩 动作项动作项判定表的结构判定表的结构1. 基本概念基本概念 电力公司将用户分为两类: 单费率单费率用户:实行单一电价单一电价 复费率复费率用户:在规定时间规定时间内实行优惠电价优惠电价,在其他时间内实行普通电价普通电价条件桩条件桩单费率单费率复费率复费率规定期规定期动作桩动
44、作桩单一电价单一电价优惠电价优惠电价普通电价普通电价1.单费率:单一电价2.复费率+在规定时间:优惠电价3.复费率+不在规定的时间:普通电价 规 则条件桩:问题的所有条件动作桩:所有可能采取的操作规则:一个条件组合的取值及其执行的操作 条件桩条件桩 条件项条件项 动作桩动作桩 动作项动作项 动作:通常使用“0”和“1”表示不执行动作和执行动作 条件:通常使用“0”和“1”表示条件不满足和条件满足判定表的结构判定表的结构规则规则条件条件123单费率用户100复费率用户011规定期内010动作按单一电价收100按优惠电价收010按普通电价收001条件桩条件桩动作桩动作桩规规则则1规规则则2规规则则
45、3行动项:在条件条目下采取的动作或操作在判定表中贯在判定表中贯穿条件项和动穿条件项和动作项的作项的一列就一列就是一个规则是一个规则条件项:条件桩的所有可能取值,“真”、“假”或其它。测试用例集测试用例集ID输入条件输入条件预期结果预期结果1单费率用户按单一电价收2复费率用户,在规定期内按优惠电价收3复费率用户,不在规定期内按普通电价收条件条件12345单费率用户10011复费率用户01110规定期内01010动作按单一电价收100按优惠电价收010按普通电价收001(1)判定表中条件的组合方式有多少,就有多少条规则,就有多少列,每列对应一个测试用例。(2)如果条件都是二叉条件二叉条件,称为有限
46、条目有限条目判定判定表表。如果条件有多个值,甚至对应于变量的等价类,称为扩展条目扩展条目判定判定表表。如条件“ATM交易类型”,可以取“存款”、“查询”和“取款”三种值。(3)由于判定表是机械地强制完备的,因此具有测具有测试用例的完整性。试用例的完整性。2. 判定表的特点判定表的特点输入输入输出输出输入的等价类输入的等价类功能处理功能处理条件条件动作动作规则规则测试用例测试用例3. 判定表的应用判定表的应用条件条件动作动作规则规则测试用例测试用例构造判定表可采用以下5个步骤:(1)列出条件桩和动作桩。(2)确定规则的个数。(3)填入条件项。(4)填入动作项,得到初始判定表。(5)简化判定表,合
47、并相似规则。4判定表的构造及化简判定表的构造及化简 判定表的化简判定表的化简对于n个条件的判定表,相应有2n个规则(每个条件分别取真、假值)。判定表的化简是以合并相似规则为目标判定表的化简是以合并相似规则为目标若表中有两条以上规则具有相同的动作相同的动作,并且在条并且在条件项之间存在极为相似的关系,便可以合并件项之间存在极为相似的关系,便可以合并。例题:打印机能否打印出正确的内容有多个影响因素,包括驱动程序、纸张、墨粉驱动程序、纸张、墨粉等,打印机会自动提示:驱动是否正确、驱动是否正确、提示没有纸张、提示没有墨粉提示没有纸张、提示没有墨粉,根据这些信息决定决定是否打印打印内容内容,请设计出影响
48、条件与动作的判定表并化简。(为了简化问题,不考虑中途断电、卡纸等因素;假定优先警告缺纸,然后警告没有墨粉,最后警告驱动程序不正确。)条件桩条件桩驱动是否正确驱动是否正确是否有纸张是否有纸张是否有墨粉是否有墨粉1 1规则数:规则数:8 8动作桩动作桩打印内容打印内容提示驱动不正确提示驱动不正确提示缺纸提示缺纸提示缺粉提示缺粉2 2 序号序号12345678条条件件驱动是否正确驱动是否正确10110010是否有纸张是否有纸张11010100是否有墨粉是否有墨粉11101000动动作作打印内容打印内容10000000提示驱动不正确提示驱动不正确01000000提示没有纸张提示没有纸张00101011
49、提示没有墨粉提示没有墨粉00010100序号序号124/63/7/8条条件件驱动是否正确驱动是否正确101是否有纸张是否有纸张1110是否有墨粉是否有墨粉1100动动作作打印内容打印内容1000提示驱动不正确提示驱动不正确0100提示没有纸张提示没有纸张0001提示没有墨粉提示没有墨粉0010构构造造判判定定表表简简化化判判定定表表例题:某商场举行一次假日商品促销活动。在活动期间,对持会员卡持会员卡的顾客,实行实行8.5折优惠折优惠,满1000元实行7折优惠折优惠;对其他顾客,消费满消费满1000元元的,实行9折优惠,并免费办理会员折优惠,并免费办理会员卡卡。请给出相应的判定表及测试用例集。持
50、卡不持卡满1000不满满1000不满条件桩条件桩持卡会员持卡会员消费满消费满10001 1动作桩动作桩8.5折折7折折9折折+办卡办卡其它其它2 2规则:规则:4 4判定表判定表规规 则则1234条条件件持商场会员卡持商场会员卡1100消费满消费满1000元元0110动动作作实行实行8.5折优惠折优惠1000实行实行7折优惠折优惠0100实行实行9折优惠并免费折优惠并免费办理会员卡办理会员卡0010其他其他0001测试用例集测试用例集ID输入条件输入条件预期结果预期结果1持商场会员卡,消费不满1000元实行8.5折优惠2持商场会员卡,消费满1000元实行7折优惠3不持商场会员卡,消费满1000