《等价类-边界值-因果图PPT.ppt》由会员分享,可在线阅读,更多相关《等价类-边界值-因果图PPT.ppt(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、主要的黑盒测试用例设计方法o等价类划分o边界值分析o因果图o判定表15.3等价类划分o测试所有可能的输入是不可能的、也是不必要的。o等价划分:某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。o基本思想:把所有可能的输入,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。2o使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。o划分等价类等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。3o等价类的划分有两种不同的情况:有效
2、等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。o在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。4o划分等价类等价类的原则。(1)如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。5o例:在程序的规格说明中,对输入条件有一句话:“项数可以从1到999”则有效等价类是“1项数999”两个无效等价类是“项数1”和“项数999”。在数轴上表示成:6例:程序规格说明中提到:“学生允许选修2至4门课”则有效等价类是“选课2至4门”两个无效等价类是“只选一门
3、或未选课”和“选课超过4门”。7(2)如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。8例:在Pascal语言中对变量标识符规定为“以字母打头的串”。那么所有以字母打头以字母打头的构成有效等价类,而不在此集合内(不以字母打头不以字母打头)的归于无效等价类。9例:某程序的规格说明中提到的输入条件包括:“统计全国各省、市、自治区的人口”则有效等价类是“国内省、市、自治区”,无效等价类是“非国内省、市、自治区”。10(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。(4)如果规定了输入数据的一组值,而且程序要对每个输入
4、值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。11o例5:在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。12(5)如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。13o例6,Pascal语言规定“一个语句必须以分号;结束”。这时,可以确定一个有效等价类“以;结束”,若干个无效等价类“以:结束”、“以,结束”、“以结束”
5、、“以LF结束”等。14o确立测试用例在确立了等价类之后,建立等价类表,列出所有划分出的等价类。15o再从划分出的等价类中按以下原则选择测试用例:(1)为每一个等价类规定一个唯一编号;(2)设计一个新的测试用例,使其尽可能多地覆尽可能多地覆盖尚未被覆盖的有效等价类盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;(3)设计一个新的测试用例,使其仅覆盖一个仅覆盖一个尚未被覆盖的无效等价类尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。16o用等价类划分法设计测试用例的实例例:在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组
6、合构成。有效字符数为8个,最大字符数为80个。”并且规定:“标识符必须先说明,再使用。”“在同一说明语句中,标识符至少必须有一个。”17用等价类划分的方法,建立输入等价类表:输入条件输入条件有效等价类有效等价类无效等价类无效等价类第一个字符第一个字符字母(字母(1 1)非字母(非字母(7 7)标识符组成标识符组成字母(字母(2 2),数字(),数字(3 3)非字母数字字符(非字母数字字符(8 8)、保)、保留字(留字(9 9)标识符字符数标识符字符数1 18 8个(个(4 4)0 0(1010),大于),大于8 8(1111),),大于大于8080(1212)标识符使用标识符使用先说明后使用(
7、先说明后使用(5 5)未说明就使用(未说明就使用(1313)标识符个数标识符个数大于等于大于等于1 1个(个(6 6)0 0个(个(1414)18举例举例o根据下面给出的规格说明,利用等价类划分的方法,给出足够根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。的测试用例。o“一个程序读入一个程序读入3 3个整数,把这三个数值看作一个三角形的个整数,把这三个数值看作一个三角形的3 3条条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。边的、是等腰的、还是等边的。”19o分析题目中给出和隐含的对
8、输入条件的要求:(1)整数(2)三个数(3)非零数(4)正数(5)两边之和大于第三边(6)等腰(7)等边o如果a、b、c满足条件(1)(4),则输出下列四种情况之一:1)如果不满足条件(5),则程序输出为非三角形。2)如果三条边相等即满足条件(7),则程序输出为等边三角形。3)如果只有两条边相等、即满足条件(6),则程序输出为等腰三角形。4)如果三条边都不相等,则程序输出为一般三角形。20有效等价类有效等价类无效等价类无效等价类输入条件3个整数整数(1)a为非整数(12)、b为非整数(13)、c为非整数(14)、ab为非整数(15)、bc为非整数(16)、ca为非整数(17)、abc为非整数(
9、18)3个数(2)只给a(19)、只给b(20)、只给c(21)、只给ab(22)、只给bc(23)、只给ca(24)、给出3个以上(25)非0数(3)a0(26)、b=0(27)、c=0(28)、a=b=0(29)、b=c=0(30)、c=a=0(31)、a=b=c=0(32)正数(4)a0(33)、b0(34)、c0(35)、a0b0(36)、b0c0(37)、c0a0(38)、a0b0cc(5)b+ca(6)c+ab(7)a+bc(40)、a+b=c(41)b+ca(42)、b+ca(43)c+a0A0,B0B0,C0C0,且,且A+BCA+BC,B+CAB+CA,A+CBA+CB。o如
10、果是等腰的,还要判断如果是等腰的,还要判断A=BA=B,或,或B=CB=C,或,或A=CA=C。o如果是等边的,则需判断是否如果是等边的,则需判断是否A=BA=B,且,且B=CB=C,且,且A=CA=C。23举例举例输入条件输入条件有效等价类有效等价类无效等价类无效等价类是否三角形的三条边是否三角形的三条边(A0A0),),(1 1)(B0B0),),(2 2)(C0C0),),(3 3)(A+BCA+BC),),(4 4)(B+CAB+CA),),(5 5)(A+CBA+CB),),(6 6)(A0A0),),(7 7)(B0B0),),(8 8)(C0C0),),(9 9)(A+BCA+B
11、C),),(1010)(B+CAB+CA),),(1111)(A+CBA+CB),),(1212)是否等腰三角形是否等腰三角形(A=BA=B),),(1313)(B=CB=C),),(1414)(C=AC=A),),(1515)(ABAB)andand(BCBC)andand(CACA)(1616)是否等边三角形是否等边三角形(A=BA=B)andand(B=CB=C)andand(C=AC=A)(1717)(ABAB),),(1818)(BCBC),),(1919)(CACA),),(2020)24举例举例序号序号【A,B,C】覆盖等价类覆盖等价类输出输出1【3 3,4 4,5 5】(1 1
12、),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6)一般三角形一般三角形2【0 0,1 1,2 2】(7 7)不能构成三角形不能构成三角形3【1 1,0 0,2 2】(8 8)4【1 1,2 2,0 0】(9 9)5【1 1,2 2,3 3】(1010)6【1 1,3 3,2 2】(1111)7【3 3,1 1,2 2】(1212)8【3 3,3 3,4 4】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1313)等腰三角形等腰三角形9【3 3,4 4,4 4】(1 1),(),(2 2),
13、(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1414)10【3 3,4 4,3 3】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1515)11【3 3,4 4,5 5】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1616)非等腰三角形非等腰三角形12【3 3,3 3,3 3】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1717)是等边三角形是等边三角形13【3 3
14、,4 4,4 4】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1414),(),(1818)非等边三角形非等边三角形14【3 3,4 4,3 3】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1515),(),(1919)15【3 3,3 3,4 4】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1313),(),(2020)25某城市电话号码由三部分组成。它们的名称和内容分别是:地区码:空白或三位数字
15、;前 缀:非0或1的三位数字;后 缀:4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。26划分等价类输入条件有效等价类无效等价类地区码1.空白;2.三位数;5.有非数字字符;6.少于三位数字;7.多于三位数字。前缀3.从200到999之间的三位8.有非数字字符;9.起始位为0;10.起始位为1;11.少于三位数字;12.多于三位数字。后缀4.四位数字。13.有非数字字符;14.少于四位数字;15.多于四位数字。27设计测试用例方案内容输入预期输出地区码前缀后缀1空白(1)200999之间的三位数字(3)
16、四位数字(4)()276-2345有效2三位数字(2)四位数字(4)(635)805-9321有效3有非数字字符(5)(20A)723-4567无效4少于三位数字(6)(33)234-5678无效5多于三位数(7)(5555)345-6789无效6有非数字字符(8)(345)5A2-3456无效7起始位为0(9)345)012-3456无效8起始位为1(10)(345)132-3456无效9少于三位数字(11)(345)92-3456无效10多于三位数字(12)(345)4562-3456无效11有非数字字符(13)(345)342-3A56无效12少于四位数字(14)345)342-356无
17、效13多于四位数字(15)(345)562-34567无效2829等价类方法小结:o等价类技术提供了一个选择哪些数值,舍弃哪些数值的测试用例设计方法。o把相似输入、输出、操作分成组,这些组就是等价区间。o步骤:在进行等价类划分之前,首先从程序的功能说明中找出各个输入条件,然后为每个输入条件划分两个或更多个等价类。o确定了等价类划分后,给出相应的等价类表,再根据等价类给出测试用例。302.划分等价类要注意的问题p考虑有效等价类,同时也要考虑无效的等价类。n有效等价类生成的测试用例,可以检验程序是否实现了预先规定的功能和性能。n无效等价类生成的测试用例,可以检查程序中功能和性能的实现是否不符合规格
18、说明要求。o仔细划分,审核划分n等价类的目标就是把所有可能的测试用例组合数量缩减到仍然足以测试软件的范围。n如果为减少测试用例的数量过于粗略地进行等价分配,就会增加漏掉软件缺陷的风险。31黑盒测试方法o常用的黑盒测试方法有:n等价类划分n边界值分析法n因果图法n决策表法315.4数据测试-边界值分析o等价划分虽然优于随机选取用例,但不足之处在于忽略了某些特定类型的高效测试用例o大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部。o经验证明,考虑了边界条件的测试用例与其他测试用例相比,具有更高的测试回报率n边界条件:输入和输出等价类中那些恰好处于边界、或超过边界、或在边界
19、以下的状态。32边界值分析与等价划分的不同o边界值分析需要选取一个或多个元素,而不是选任一个代表元素,以便对等价类的每个边界都经过一次测试。o边界值分析不仅关注输入条件,还要考虑输出空间产生的测试情况33o比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。我们应注意到这三个数值应当满足A0、B0、C0、ABC、ACB、BCA,才能构成三角形。但如果把六个不等式中的任何一个大于号“”错写成大于等于号“”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。34o这里所说的边界是指,相对于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。o使用边界值分析方法设计
20、测试用例,首先应确定边界情况。应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。实践证明为实践证明为检验边界附检验边界附近的处理专门设计测试用例,常常取得良近的处理专门设计测试用例,常常取得良好的测试效果。好的测试效果。351、数据测试数据测试是检查用户输入的信息、返回的数据测试是检查用户输入的信息、返回的结果以及中间计算结果是否正确。结果以及中间计算结果是否正确。注意:数据指广义的所有输入、输出。注意:数据指广义的所有输入、输出。数据的例子:数据的例子:1.类型上有数值、文字、图片、文件等类型上有数值、文字、图片、文件等 2.表现形式
21、有表现形式有键盘输入、鼠标点击、键盘输入、鼠标点击、磁盘文件、打印输出磁盘文件、打印输出 3637边界条件o一些可能与边界有关的数据类型有:数值,速度,字符,地址,位置,尺寸,数量等。同时,考虑这些数据类型的下述特征:第一个/最后一个 最小值/最大值开始/完成 超过/在内空/满 最短/最长最慢/最快 最早/最迟最大/最小 最高/最低相邻/最远37如何找到边界值o很简单!基本思想是选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据。n例如,输入范围为0-100,下限则选择-1、0、1为测试值o很难!有时边界难以确定。n n模糊的边界,如页面翻页的模糊的边界,如页面翻页的“下一页下一页”n
22、 n隐含的边界,没明确指出约束,但是实际有限制。隐含的边界,没明确指出约束,但是实际有限制。n n内在的边界,系统内部的限制,如数据类型本身的内在的边界,系统内部的限制,如数据类型本身的的取值范围限制。的取值范围限制。39“报表日期”边界值分析法测试用例输入条件输入条件 测试用例说明测试用例说明 测试数据测试数据 期望结果期望结果选取理由选取理由报表日报表日期类型期类型及长度及长度1个数字字符个数字字符5显示出错显示出错仅有仅有1个合法字符个合法字符6个数字字符个数字字符200305输入有效输入有效类型及长度均有效类型及长度均有效5个数字字符个数字字符20035显示出错显示出错比有效长度少比有
23、效长度少17个数字字符个数字字符2003005 显示出错显示出错比有效长度多比有效长度多1有有1个非数字字符个非数字字符2003.5显示出错显示出错只有只有1个非法字符个非法字符全是非数字字符全是非数字字符MAY-显示出错显示出错6个非法字符个非法字符年份范围年份范围年份为年份为2003年年200305输入有效输入有效最小年份最小年份年份为年份为2008年年200805输入有效输入有效最大年份最大年份年份为年份为2002年年200205显示出错显示出错刚好小于最小年份刚好小于最小年份年份位年份位2009年年200905显示出错显示出错刚好大于最大年份刚好大于最大年份月份范围月份范围月份为月份为
24、1月月200301输入有效输入有效最小月份最小月份月份为月份为12月月200312输入有效输入有效最大月份最大月份月份为月份为0200300显示出错显示出错刚好小于最小月份刚好小于最小月份月份为月份为13200313显示出错显示出错刚好大于最大月份刚好大于最大月份40412边界值分析测试-有效测试用例o假设有两个变量x1和x2的程序P。设输入变量x1和x2在下列范围内取值:ax1b,cx2do边界值分析设计测试用例原则:利用输入变量的最小值(min),稍大于最小值(min+),域内任意值(nom),稍小于最大值(max-),最大值(max)来设计测试用例。4142边界值分析法的原理o可得到测试
25、用例共9组:n nX1n nX1+n nX1n nX1-n nX1n nX1n nX1n nX1n nX1对于对于对于对于 n n n n 个变量的输入,个变量的输入,个变量的输入,个变量的输入,边界值分析测试会产生边界值分析测试会产生边界值分析测试会产生边界值分析测试会产生4n+1 4n+1 4n+1 4n+1 个测试用例。个测试用例。个测试用例。个测试用例。42433.健壮性边界值测试-补充无效测试用例p健壮性测试是边界值分析的一种扩展。p变量比普通边界值考虑略超过最大值(max+)和略小于最小值(min-)的取值。对于一个对于一个对于一个对于一个n n n n变量的程序,变量的程序,变量
26、的程序,变量的程序,健壮性边界值测试将健壮性边界值测试将健壮性边界值测试将健壮性边界值测试将产生产生产生产生 6n+1 6n+1 6n+1 6n+1 个测试用个测试用个测试用个测试用例。例。例。例。43444、基于边界值分析选择测试用例的原则o(1)如果输入条件规定了取值范围,则选取正好达到这个范围的边界值,以及刚刚超出这个范围的边界值作为测试输入数据。例:例:“00 x x=0 (i)=0 (ii)0(ii)=0 (a)=0 (b)Error(b)Error(1 1)输入)输入4 4,输出,输出2 2。对应于对应于 (i)(i)和和 (a)(a)。(2 2)输入)输入-10-10,输出,输出
27、0 0和错误提示。对应于和错误提示。对应于 (ii)(ii)和和(b)(b)。1 1、输入、输入 最小负实数最小负实数 2 2、输入、输入 绝对值很小绝对值很小的负数的负数 3 3、输入、输入 0 04 4、输入、输入 绝对值很小绝对值很小的正数的正数 5 5、输入、输入 最大正实数最大正实数 4950边界值分析举例o2、加法器边界值测试用例设计加法器程序计算两个1100之间整数的和。o设计思路:(1)先进行等价类划分(2)再用边界值分析补充5051加法器边界值测试用例设计(1)等价类划分考虑输入数据的取值范围和类型划分等价类编号编号编号编号输入条件输入条件输入条件输入条件所属类别所属类别所属
28、类别所属类别编号编号编号编号 输入条件输入条件输入条件输入条件所属类别所属类别所属类别所属类别1 1 1 11 1 1 1 100100之之之之 间间间间 整整整整数数数数有有有有 效效效效 等等等等 价价价价类类类类5 5 5 5非数值(字母)非数值(字母)非数值(字母)非数值(字母)无无无无 效效效效 等等等等 价价价价类类类类2 2 2 2111100100100100整数整数整数整数无无无无 效效效效 等等等等 价价价价类类类类7 7 7 7非数值(空格)非数值(空格)非数值(空格)非数值(空格)无无无无 效效效效 等等等等 价价价价类类类类4 4 4 4小数小数小数小数无无无无 效效
29、效效 等等等等 价价价价类类类类8 8 8 8非数值(空白)非数值(空白)非数值(空白)非数值(空白)无无无无 效效效效 等等等等 价价价价类类类类5152加法器边界值测试用例设计(2)边界值分析在等价类划分基础上进行边界值分析测试。测试用例测试用例输入数据输入数据预期输出预期输出加数加数1 1加数加数2 2和和Test1Test11 150505151Test 2Test 22 250505252Test 3Test 399995050149149Test 4Test 41001005050150150Test 5Test 550501 15151Test 6Test 650502 2525
30、2Test 7Test 750509999149149Test 8Test 850501001001501505253提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”505050500 0 0 0Test 9Test 9Test 9Test 9提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”0 0 0 050505050Test 10Test 10Test 10Test 10提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”505050501011011011
31、01Test11Test11Test11Test11提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”10110110110150505050Test12Test12Test12Test12提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”505050500.20.20.20.2Test13Test13Test13Test13测试用例测试用例测试用例测试用例输入数据输入数据输入数据输入数据预期输出预期输出预期输出预期输出加数加数加数加数1 1加数加数加数加数2 2和和和和Test14Test14Test14
32、Test14505050500.20.20.20.2提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”Test15Test15Test15Test15A A A A50505050提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”Test16Test16Test16Test1650505050A A A A提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”Test17Test17Test17Test17 50505050提示提示提示提示“请输入请输入请输入请输入1
33、 1100100间的整数间的整数间的整数间的整数”Test18Test18Test18Test1850505050 提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”Test19Test19Test19Test19空格空格空格空格50505050提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”Test20Test20Test20Test2050505050空格空格空格空格提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”Test21Test21Test21Tes
34、t2150505050提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”Test22Test22Test22Test2250505050提示提示提示提示“请输入请输入请输入请输入1 1100100间的整数间的整数间的整数间的整数”5354黑盒测试方法o常用的黑盒测试方法有:n等价类划分n边界值分析法n因果图法n决策表法54555因果图o等价类划分法和边界值分析方法都是着重考虑输入条件。o但如果输入之间有关系,例如约束关系、组合关系,用等价类划分和边界值分析是很难描述,测试效果难以保障。o因果图正是在此背景下提出的。551、因果图o定义:因果图是一种利
35、用图解法分析输入的各种组合情况,从而设计测试用例的方法。o它适合于检查程序输入条件的各种组合情况。o从用自然语言书写的程序规格说明的描述中找到因(输入条件)和果(输出或程序状态的改变),通过因果图转化为判别表。56逻辑关系o恒等:如果原因为真,那么结果必定为真。o只有2个原因都为真,那么结果为真。57o或:2个原因中有一个为真时,结果就为真。o非:只有原因为假,结果才为真。58o表示约束条件的符号。为了表示原因与原因之间,结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。59原因之间约束o排他性约束:各个原因之间不能同时为真,但可以同时为假。举个例子,小明同学不可能同
36、时属于A班和B班,但可能既不是A班的,也不是B班的,而是C班的。60o包含性约束:各个原因中总有一个为真。即可以同时为真,但不可以同时为假。举个例子,支付宝买家付款时,有个输入条件(既原因)是余额支付、网银支付,买家可以选择单独余额支付或者单独网银支付,也可以同时选择余额支付和网银支付2种方式。但是不可以选择不支付。61o必要性约束:当原因a为真时,原因b必须同时为真;但是原因b为真时,原因a既可以为真,也可以为假。举数字证书的例子:现有的业务规则下,如果申请了数字证书(原因a),那么该用户必然通过了支付宝认证(原因b)。反之,如果用户通过了支付宝认证,那么不一定申请了数字证书(a)。62o唯
37、一性约束:有且只有原因a和原因b中的一个为真。非此即彼,不存在第三种情况。举例来说,人的性别不是男,就是女,不会存在既不是男也不是女的人。63o掩码标记(结果约束):如果结果b为真,那么结果a一定为假,如果结果b为假,则结果a的状态不定。还拿支付宝来举例子,先给出两个结果:安全控件运行正常(a),无法输入登陆密码(b)。如果无法输入登陆密码,那么可以判断是安全控件没有正常运行。反过来,如果可以输入登陆密码,则不能确定安全控件一定工作正常64o用因果图生成测试用例的基本步骤(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一
38、个标识(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系?根据这些关系,画出因果图。65(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。标明约束或限制条件。(找出原因和原因、结果与结果之间的约束限制)(4)把因果图转换成判定表。(5)把判定表的每一列拿出来作为依据,设计测试用例。66o在因果图中出现的基本符号通常在因果图中用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现。o主要的原因和结果之间的逻辑关系有:恒等、与、或、非67o例,某个软件的规格说明中包含这样
39、的要求:“第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。”68原因:1第一列字符是A;2第一列字符是B;3第二列字符是数字。结果:21修改文件;22给出信息L;23给出信息M。69 1 1 2 2 1111 3 3 2323 2121 2222 E E因果图因果图7012345678条件(原因)111110000211001100310101010中间结果11111100动作(结果)220000112110100023010101测试用例A2AVB4BTV4RW判定表判定表71FORTRA
40、N语言的语法规定是非常严格的。在一个程序行中,第15列是标号区,第6列是续行区。如果前6列是空白,则执行动作A。如果第15列有标号且是正确的标号,则执行动作B后再执行动作A;反之,若是错误的标号,则执行动作C。如果第6列不是空白而是字母C,则执行动作D后再执行A;反之,执行动作C。原因:1前6列是空白2第15列是正确的标号3第6列是字母C结果:动作A正确执行E1:执行动作A动作B处理标号E2:执行动作B后再执行动作A动作C错误处理E3:执行动作C动作D处理续行E4:执行动作D后再执行A72 1 1 2 2 E1E1 3 3 E4E4 E3E3 E2E2 O O因果图因果图E1:执行动作AE2:
41、执行动作B后再执行动作AE3:执行动作CE4:执行动作D后再执行A1前6列是空白2第15列是正确的标号3第6列是字母C73判定表12345678条件1YYYYNNNN2YYNNYYNN3YNYNYNYN结果E1XE2XE3XE4X测试用例74467条件(原因)110020103001动作(结果)A111B010C111D001测试用例第15列第6列第15列第6列第15列第6列空白空白xyz123空白空白空白空白C?判定表判定表75765、因果图举例例1:某软件规格说明书包含这样的要求:n输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行记录的修改n如果第一个字符不是#或*,则
42、给出信息 Nn如果第二个字符不是数字,则给出信息 M76771)1)根据题意,分析原因和结果如下:根据题意,分析原因和结果如下:原因:第一个字符是“#”第一个字符是“*”第二个字符是一个数字 结果:进行记录更新 产生信息 N 产生信息 M77782)2)确立简单的因果图如下:确立简单的因果图如下:增加增加1111为中间节点为中间节点78793)3)在因果图上加约束条件:在因果图上加约束条件:考虑到原因1和原因2 不可能同时为1,因此在因果图上施加 E 约束。79804)4)根据因果图建立判定表:根据因果图建立判定表:无无无无无无无无#3#3#A#A*6*6*B*BA1A1GTGT80815)5
43、)设计测试用例设计测试用例测试用例测试用例测试用例测试用例输入数据输入数据输入数据输入数据预期输出预期输出预期输出预期输出Test1Test1#3#3进行文件更新进行文件更新进行文件更新进行文件更新Test2Test2#A#A产生信息产生信息产生信息产生信息 M M M MTest3Test3*6*6进行文件更新进行文件更新进行文件更新进行文件更新Test4Test4*B*B产生信息产生信息产生信息产生信息 M M M MTest5Test5A1A1产生信息产生信息产生信息产生信息 N N N NTest6Test6GTGT产生信息产生信息产生信息产生信息 M M M M 和信息和信息和信息和
44、信息 N N N N8182黑盒测试方法o常用的黑盒测试方法有:n等价类划分n边界值分析法n因果图法n决策表法825.6决策表驱动分析o决策表又称为判定表并非因果图的辅助并非因果图的辅助o决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格o它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此能够设计出完整的测试用例集合。o在所有的黑盒测试方法中,基于决策表的测试是最严格,最具有逻辑性的测试方法。8384决策表驱动分析o一张判定表的“田”字型结构:条件桩、条件项、动作桩、动作项8485决策表的组成o条件桩:列出了问题的所有条件。o动作桩:列出了问题规定
45、可能采取的操作。o条件项:列出针对它所列条件的取值,在所有可能情况下的真假值。o动作项:列出在条件项的各种取值情况下应该采取的动作。8586决策表的建立步骤(1)确定规则的个数。例如有n个条件,每个条件有两个取值(0,1),故有 2n 种规则。(2)列出所有的条件桩和动作桩;(3)填入条件项;(4)填入动作项,制定初始决策表;(5)简化;合并相似规则或者相同动作。86n生成决策表:一个简单的例子生成决策表:一个简单的例子12345678910111213141516条条件件能编写程序能编写程序N N N N N NNN YYYYYYYY熟悉软件工程熟悉软件工程N N N N Y YYY NNN
46、NYYYY对软件测试感兴趣对软件测试感兴趣N N Y Y N NYY NNYYNNYY理解教材内容理解教材内容N Y N Y N YNY NYNYNYNY建建议议学习学习 C+/Java 学习软件工程学习软件工程 继续阅读继续阅读 放弃学习放弃学习软件测试软件测试阅读决策表阅读决策表8788规则及规则合并o规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。l判定表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。o化简:就是规则合并l有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。8889规则及规则合并举例o动作项一样,条件项类似,在1、2条件
47、项分别取Y、N时,无论条件3取何值,都执行同一操作,可合并。“”表示与取值无关。Y YN NY YX XY YN NN NX XY YN N-X X8990规则及规则合并举例o无关条件项“”可包含其他条件项取值,具有相同动作的规则可合并。Y Y-N NX XY YN NN NX XY Y-N NX X90n决策表化简决策表化简1,52,436,7,89,1110,1213,1415,16条件条件能编写程序?能编写程序?NNNNYYYY熟悉软件工程?熟悉软件工程?NNYNNYY对软件测试感兴趣对软件测试感兴趣?NYNY理解教材内容理解教材内容NYNNY建议建议学习学习C+/Java语言语言学习软
48、件工程学习软件工程继续阅读继续阅读放弃学习放弃学习软件测试软件测试阅读决策表化简阅读决策表化简9192基于决策表的测试举例o例1:对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理。o这里假定:“维修记录不全”和“优先维修处理”均已在别处有更严格的定义。请建立判定表。9293基于决策表的测试举例确定规则的个数:这里有3个条件,每个条件有两个取值,故应有 2*2*2=8 种规则。列出所有的条件桩和动作桩条件功率大于50马力吗?维修记录不全吗?运行超过10年吗?动作进行优先处理作其他处理9394基于决策表的测试举例填入条件项。填入动作桩和动作项。得到如图初始判定表。12345678条件功率大于50马力吗?YYYYNNNN维修记录不全吗?YYNNYYNN运行超过10年吗?YNYNYNYN动作进行优先处理XXXXX作其他处理XXX9495基于决策表的测试举例化简。合并相似规则后得到图。12 3457 68条件功率大于50马力吗?YYYNN维修记录不全吗?YNN-运行超过10年吗?-YNYN动作进行优先处理XXX作其他处理XX9596决策表的优点和缺点o优点:能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。o缺点:不能表达重复执行的动作,例如循环结构。96