资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,主要的黑盒测试用例设计方法,等价类划分,边界值分析,因果图,判定表,1,5.3,等价类划分,测试所有可能的输入是不可能的、也是不必要的。,等价划分,:某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。,基本思想,:把所有可能的输入,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。,2,使用这一方法设计测试用例要经历,划分等价类,(列出等价类表)和,选取测试用例,两步。,划分等价类,等价类是指某个输入域的子集合。在该子集合中,,各个输入数据对于揭露程序中的错误都是等效的,。测试某等价类的代表值就等价于对这一类其它值的测试。,3,等价类的划分有两种不同的情况:,有效等价类,:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。,无效等价类,:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。,在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。,4,划分等价类等价类的原则。,(1),如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。,5,例:在程序的规格说明中,对输入条件有一句话:,“,项数可以从,1,到,999,”,则有效等价类是“,1,项数,999”,两个无效等价类是“项数,1”,和“项,数,999”,。在数轴上表示成,:,6,例:程序规格说明中提到:,“,学生允许选修,2,至,4,门课,”,则有效等价类是“选课,2,至,4,门”,两个无效等价类是“只选一门或未选课”和“选课超过,4,门”。,7,(2),如果输入条件规定了输入值的集合,或者是规定了“,必须如何,”的条件,这时可确立一个有效等价类和一个无效等价类,。,8,例:在,Pascal,语言中对变量标识符规定为“以字母打头的,串”。那么所有,以字母打头,的构成有效等价类,而不在此集合内(,不以字母打头,)的归于无效等价类。,9,例:某程序的规格说明中提到的输入条件包括:,“,统计全国各省、市、自治区的人口,”,则有效等价类是“国内省、市、自治区”,,无效等价类是“非国内省、市、自治区”。,10,(3),如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。,(4),如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。,11,例,5,:在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定,4,个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。,12,(5),如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。,13,例,6,,,Pascal,语言规定“一个语句必须以分号,;,结束”。这时,可以确定一个有效等价类“以,;,结束”,若干个无效等价类“以,:,结束”、“以,结束”、“以 结束”、“以,LF,结束”等。,14,确立测试用例在确立了等价类之后,建立等价类表,列出所有划分出的等价类。,15,再从划分出的等价类中按以下原则选择测试用例:,(,1),为每一个等价类规定一个唯一编号;,(2),设计一个新的测试用例,使其,尽可能多地覆盖尚未被覆盖的有效等价类,,重复这一步,直到所有的有效等价类都被覆盖为止;(,3,)设计一个新的测试用例,使其,仅覆盖一个尚未被覆盖的无效等价类,,重复这一步,直到所有的无效等价类都被覆盖为止,。,16,用等价类划分法设计测试用例的实例,例:,在某一,PASCAL,语言版本中规定:“,标识符是由字母开头,,,后跟字母或数字的任意组合构成,。,有效字符数为,8,个,,,最大字符数为,80,个,。”,并且规定:“,标识符必须先说明,,,再使用,。”“,在同一说明语句中,,,标识符至少必须有一个,。”,17,用等价类划分的方法,建立输入等价类表,:,输入条件,有效等价类,无效等价类,第一个字符,字母(,1,),非字母(,7,),标识符组成,字母(,2,),数字(,3,),非字母数字字符(,8,)、保留字(,9,),标识符字符数,1,8,个(,4,),0,(,10,),大于,8,(,11,),大于,80,(,12,),标识符使用,先说明后使用(,5,),未说明就使用(,13,),标识符个数,大于等于,1,个(,6,),0,个(,14,),18,举例,根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。,“,一个程序读入,3,个整数,把这三个数值看作一个三角形的,3,条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。,”,19,分析题目中给出和隐含的对输入条件的要求:(,1,)整数(,2,)三个数(,3,)非零数(,4,)正数 (,5,)两边之和大于第三边(,6,)等腰(,7,)等边,如果,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,为非整数(,18,),3,个数(,2,),只给,a,(,19,)、只给,b,(,20,)、只给,c,(,21,)、只给,ab,(,22,)、只给,bc,(,23,)、只给,ca,(,24,)、给出,3,个以上(,25,),非,0,数(,3,),a,0,(,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,)、,a0 b0,(,36,)、,b0 c0,(,37,)、,c0 a0,(,38,)、,a0 b0 cc,(,5,),b+ca,(,6,),c+ab,(,7,),a+bc,(,40,)、,a+b=c,(,41,),b+ca,(,42,)、,b+c,a,(,43,),c+a0,,,B0,,,C0,,且,A+BC,,,B+CA,,,A+CB,。,如果是等腰的,还要判断,A=B,,或,B=C,,或,A=C,。,如果是等边的,则需判断是否,A=B,,且,B=C,,且,A=C,。,23,举例,输入条件,有效等价类,无效等价类,是否三角形的三条边,(,A0,),(,1,),(,B0,),(,2,),(,C0,),(,3,),(,A+BC,),(,4,),(,B+CA,),(,5,),(,A+CB,),(,6,),(,A0,),(,7,),(,B0,),(,8,),(,C0,),(,9,),(,A+BC,),(,10,),(,B+CA,),(,11,),(,A+CB,),(,12,),是否等腰三角形,(,A=B,),(,13,),(,B=C,),(,14,),(,C=A,),(,15,),(,AB,),and,(,BC,),and,(,CA,)(,16,),是否等边三角形,(,A=B,),and,(,B=C,),and,(,C=A,),(,17,),(,AB,),(,18,),(,BC,),(,19,),(,CA,),(,20,),24,举例,序号,【A,,,B,,,C】,覆盖等价类,输出,1,【3,,,4,,,5】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),一般三角形,2,【0,,,1,,,2】,(,7,),不能构成三角形,3,【1,,,0,,,2】,(,8,),4,【1,,,2,,,0】,(,9,),5,【1,,,2,,,3】,(,10,),6,【1,,,3,,,2】,(,11,),7,【3,,,1,,,2】,(,12,),8,【3,,,3,,,4】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,13,),等腰三角形,9,【3,,,4,,,4】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,14,),10,【3,,,4,,,3】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,15,),11,【3,,,4,,,5】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,16,),非等腰三角形,12,【3,,,3,,,3】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,17,),是等边三角形,13,【3,,,4,,,4】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,14,),(,18,),非等边三角形,14,【3,,,4,,,3】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,15,),(,19,),15,【3,,,3,,,4】,(,1,),(,2,),(,3,),(,4,),(,5,),(,6,),(,13,),(,20,),25,某城市电话号码由三部分组成。它们的名称和内容分别是:,地区码:空白或三位数字;,前 缀:非,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,),200,999,之间的三位数字(,3,),四位数字(,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,无效,13,多于四位数字(,15,),(345)562-34567,无效,28,29,等价类方法小结:,等价类技术提供了一个选择哪些数值,舍弃哪些数值的测试用例设计方法。,把相似输入、输出、操作分成组,这些组就是等价区间。,步骤:在进行等价类划分之前,首先,从程序的功能说明中找出各个输入条件,然后为每个输入条件划分两个或更多个等价类,。,确定了等价类划分后,给出相应的等价类表,再根据等价类给出测试用例。,30,2.,划分等价类要注意的问题,考虑有效等价类,同时也要考虑无效的等价类。,有效等价类生成的测试用例,可以检验程序是否实现了预先规定的功能和性能。,无效等价类生成的测试用例,可以检查程序中功能和性能的实现是否不符合规格说明要求。,仔细划分,审核划分,等价类的目标就是把所有可能的测试用例组合数量缩减到仍然足以测试软件的范围。,如果为减少测试用例的数量过于粗略地进行等价分配,就会增加漏掉软件缺陷的风险。,31,黑盒测试方法,常用的黑盒测试方法有:,等价类划分,边界值分析法,因果图法,决策表法,31,5.4,数据测试,-,边界值分析,等价划分虽然优于随机选取用例,但不足之处在于忽略了某些特定类型的,高效测试用例,大量的软件测试实践表明,,故障往往出现在定义域或值域的边界上,而不是在其内部,。,经验证明,考虑了边界条件的测试用例与其他测试用例相比,具有更高的测试回报率,边界条件,:输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。,32,边界值分析与等价划分的不同,边界值分析需要选取一个或多个元素,而不是选任一个代表元素,以便对等价类的每个边界都经过一次测试。,边界值分析不仅关注输入条件,还要考虑输出空间产生的测试情况,33,比如,在做三角形计算时,要输入三角形的三个边长:,A,、,B,和,C,。我们应注意到这三个数值应当满足,A,0,、,B,0,、,C,0,、,A,B,C,、,A,C,B,、,B,C,A,,,才能构成三角形。但如果把六个不等式中的任何一个大于号“”错写成大于等于号“”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。,34,这里所说的边界是指,相对于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。,使用边界值分析方法设计测试用例,首先应确定边界情况。,应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,,而不是选取等价类中的典型值或任意值做为测试数据。,实践证明为,检验边界附近的处理专门设计测试用例,常常取得良好的测试效果。,35,1,、数据测试,数据测试是检查用户输入的信息、返回的结果以及中间计算结果是否正确。,注意:数据指广义的所有输入、输出。数据的例子:,类型上有数值、文字、图片、文件等,表现形式有,键盘输入、鼠标点击、磁盘文件、打印输出,36,37,边界条件,一些可能与边界有关的数据类型有:,数值,速度,字符,地址,位置,尺寸,数量,等。同时,考虑这些数据类型的下述特征:,第一个/最后一个 最小值/最大值,开始/完成 超过/在内,空/满 最短/最长,最慢/最快 最早/最迟,最大/最小 最高/最低,相邻/最远,37,边界值分析,边界值分析也是一种黑盒测试方法,其本质就是在边界及其附近选取测试用例,是一种和等价类划分相关的技术,它具有很强的发现程序错误的能力,错误隐藏在角落,问题聚焦在边界上,38,如何找到边界值,很简单!,基本思想是选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据。,例如,输入范围为,0-100,,下限则选择,-1,、,0,、,1,为测试值,很难!,有时边界难以确定。,模糊的边界,如页面翻页的“下一页”,隐含的边界,没明确指出约束,但是实际有限制。,内在的边界,系统内部的限制,如数据类型本身的的取值范围限制。,39,“,报表日期,”,边界值分析法测试用例,输入条件,测试用例说明,测试数据,期望结果,选取理由,报表日,期类型,及长度,1,个数字字符,5,显示出错,仅有,1,个合法字符,6,个数字字符,200305,输入有效,类型及长度均有效,5,个数字字符,20035,显示出错,比有效长度少,1,7,个数字字符,2003005,显示出错,比有效长度多,1,有,1,个非数字字符,2003.5,显示出错,只有,1,个非法字符,全是非数字字符,MAY-,显示出错,6,个非法字符,年份范围,年份为,2003,年,200305,输入有效,最小年份,年份为,2008,年,200805,输入有效,最大年份,年份为,2002,年,200205,显示出错,刚好小于最小年份,年份位,2009,年,200905,显示出错,刚好大于最大年份,月份范围,月份为,1,月,200301,输入有效,最小月份,月份为,12,月,200312,输入有效,最大月份,月份为,0,200300,显示出错,刚好小于最小月份,月份为,13,200313,显示出错,刚好大于最大月份,40,41,2,边界值分析测试,-,有效测试用例,假设有两个变量,x1,和,x2,的程序,P,。设输入变量,x1,和,x2,在下列范围内取值,:,ax1b,cx2d,边界值分析设计测试用例原则:,利用输入变量的,最小值(,min,),稍大于最小值,(min+),,域内任意值(,nom,),稍小于最大值,(max-),,最大值,(max),来设计测试用例。,41,42,边界值分析法的原理,可得到测试用例共,9,组:,对于,n,个变量的输入,边界值分析测试会产生,4n+1,个测试用例。,42,43,3.,健壮性边界值测试,-,补充无效测试用例,健壮性测试是边界值分析的一种扩展。,变量比普通边界值考虑略超过最大值(,max+,)和略小于最小值,(min-),的取值。,对于一个,n,变量的程序,健壮性边界值测试将产生,6n+1,个测试用例。,43,44,4,、基于边界值分析选择测试用例的原则,(,1,)如果输入条件规定了取值范围,则选取正好达到这个范围的边界值,以及刚刚超出这个范围的边界值作为测试输入数据。,例:,“,0,x=0,(ii)=0,(b)Error,(,1,)输入,4,,输出,2,。对应于,(i),和,(a),。,(,2,)输入,-10,,输出,0,和错误提示。对应于,(ii),和,(b),。,1,、输入,最小负实数,2,、输入,绝对值很小的负数,3,、输入,0,4,、输入,绝对值很小的正数,5,、输入,最大正实数,49,50,边界值分析举例,2,、加法器边界值测试用例设计,加法器程序计算两个,1,100,之间整数的和。,设计思路:,(,1,)先进行,等价类划分,(,2,)再用,边界值分析,补充,50,51,加法器边界值测试用例设计,(,1,)等价类划分,考虑输入数据的取值范围和类型划分等价类,编号,输入条件,所属类别,编号,输入条件,所属类别,1,1,100,之间整数,有效等价类,5,非数值(字母),无效等价类,2,100,整数,无效等价类,7,非数值(空格),无效等价类,4,小数,无效等价类,8,非数值(空白),无效等价类,51,52,加法器边界值测试用例设计,(,2,)边界值分析,在等价类划分基础上进行边界值分析测试。,测试用例,输入数据,预期输出,加数,1,加数,2,和,Test1,1,50,51,Test 2,2,50,52,Test 3,99,50,149,Test 4,100,50,150,Test 5,50,1,51,Test 6,50,2,52,Test 7,50,99,149,Test 8,50,100,150,52,53,提示“请输入,1,100,间的整数”,50,0,Test 9,提示“请输入,1,100,间的整数”,0,50,Test 10,提示“请输入,1,100,间的整数”,50,101,Test11,提示“请输入,1,100,间的整数”,101,50,Test12,提示“请输入,1,100,间的整数”,50,0.2,Test13,测试用例,输入数据,预期输出,加数,1,加数,2,和,Test14,50,0.2,提示“请输入,1,100,间的整数”,Test15,A,50,提示“请输入,1,100,间的整数”,Test16,50,A,提示“请输入,1,100,间的整数”,Test17,50,提示“请输入,1,100,间的整数”,Test18,50,提示“请输入,1,100,间的整数”,Test19,空格,50,提示“请输入,1,100,间的整数”,Test20,50,空格,提示“请输入,1,100,间的整数”,Test21,50,提示“请输入,1,100,间的整数”,Test22,50,提示“请输入,1,100,间的整数”,53,54,黑盒测试方法,常用的黑盒测试方法有:,等价类划分,边界值分析法,因果图法,决策表法,54,55,5,因果图,等价类划分法和边界值分析方法都是着重考虑输入条件。,但如果输入之间有关系,例如,约束关系、组合关系,,用等价类划分和边界值分析是很难描述,测试效果难以保障。,因果图正是在此背景下提出的。,55,1,、因果图,定义:因果图是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。,它适合于检查程序输入条件的各种组合情况。,从用自然语言书写的程序规格说明的描述中找到,因(输入条件),和,果(输出或程序状态的改变),,通过因果图转化为判别表。,56,逻辑关系,恒等:如果原因为真,那么结果必定为真。,只有,2,个原因都为真,那么结果为真。,57,或:,2,个原因中有一个为真时,结果就为真。,非:只有原因为假,结果才为真。,58,表示约束条件的符号。为了表示原因与原因之间,结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。,59,原因之间约束,排他性约束:各个原因之间不能同时为真,但可以同时为假。举个例子,小明同学不可能同时属于,A,班和,B,班,但可能既不是,A,班的,也不是,B,班的,而是,C,班的。,60,包含性约束:各个原因中总有一个为真。即可以同时为真,但不可以同时为假。举个例子,支付宝买家付款时,有个输入条件(既原因)是余额支付、网银支付,买家可以选择单独余额支付或者单独网银支付,也可以同时选择余额支付和网银支付,2,种方式。但是不可以选择不支付。,61,必要性约束:当原因,a,为真时,原因,b,必须同时为真;但是原因,b,为真时,原因,a,既可以为真,也可以为假。举数字证书的例子:现有的业务规则下,如果申请了数字证书(原因,a,),那么该用户必然通过了支付宝认证(原因,b,)。反之,如果用户通过了支付宝认证,那么不一定申请了数字证书(,a,)。,62,唯一性约束:有且只有原因,a,和原因,b,中的一个为真。非此即彼,不存在第三种情况。举例来说,人的性别不是男,就是女,不会存在既不是男也不是女的人。,63,掩码标记(结果约束):如果结果,b,为真,那么结果,a,一定为假,如果结果,b,为假,则结果,a,的状态不定。还拿支付宝来举例子,先给出两个结果:安全控件运行正常(,a,),无法输入登陆密码(,b,)。如果无法输入登陆密码,那么可以判断是安全控件没有正常运行,。,反过来,如果可以输入登陆密码,则不能确定安全控件一定工作正常,64,用因果图生成测试用例的基本步骤,分析软件规格说明描述中,哪些是原因,(,即输入条件或输入条件的等价类,),,哪些是结果,(,即输出条件,),,并给每个原因和结果赋予一个标识,分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系,?,根据这些关系,画出因果图。,65,(3),由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。标明约束或限制条件。(,找出原因和原因、结果与结果之间的约束限制,),(4),把因果图转换成判定表。,(5),把判定表的每一列拿出来作为依据,设计测试用例。,66,在因果图中出现的基本符号通常在因果图中用,Ci,表示原因,用,Ei,表示结果,各结点表示状态,可取值“,0”,或“,1”,。“,0”,表示某状态不出现,“,1”,表示某状态出现。,主要的原因和结果之间的逻辑关系有,:,恒等、与、或、非,67,例,某个软件的规格说明中包含这样的要求:,“第一列字符必须是,A,或,B,,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息,L,;如果第二列字符不是数字,则给出信息,M,。”,68,原因:,1,第一列字符是,A;,2,第一列字符是,B;,3,第二列字符是数字。,结果:,21,修改文件,;,22,给出信息,L;,23,给出信息,M,。,69,1,2,11,3,23,21,22,E,因果图,70,1,2,3,4,5,6,7,8,条件(原因),1,1,1,1,1,0,0,0,0,2,1,1,0,0,1,1,0,0,3,1,0,1,0,1,0,1,0,中间结果,11,1,1,1,1,0,0,动作(结果),22,0,0,0,0,1,1,21,1,0,1,0,0,0,23,0,1,0,1,0,1,测试用例,A2,AV,B4,BT,V4,RW,判定表,71,FORTRAN,语言的语法规定是非常严格的。,在一个程序行中,第,1,5,列是标号区,第,6,列是续行区。,如果前,6,列是空白,则执行动作,A,。如果第,1,5,列有标号且是正确的标号,则执行动作,B,后再执行动作,A,;反之,若是错误的标号,则执行动作,C,。如果第,6,列不是空白而是字母,C,,则执行动作,D,后再执行,A,;反之,执行动作,C,。,原因:,1,前,6,列是空白,2,第,1,5,列是正确的标号,3,第,6,列是字母,C,结果:,动作,A,正确执行,E1:,执行动作,A,动作,B,处理标号,E2:,执行动作,B,后再执行动作,A,动作,C,错误处理,E3:,执行动作,C,动作,D,处理续行,E4:,执行动作,D,后再执行,A,72,1,2,E1,3,E4,E3,E2,O,因果图,E1:,执行动作,A,E2:,执行动作,B,后再执行动作,A,E3:,执行动作,C,E4:,执行动作,D,后再执行,A,1,前,6,列是空白,2,第,1,5,列是正确的标号,3,第,6,列是字母,C,73,判定表,1,2,3,4,5,6,7,8,条件,1,Y,Y,Y,Y,N,N,N,N,2,Y,Y,N,N,Y,Y,N,N,3,Y,N,Y,N,Y,N,Y,N,结果,E1,X,E2,X,E3,X,E4,X,测试用例,74,4,6,7,条件(原因),1,1,0,0,2,0,1,0,3,0,0,1,动作(结果),A,1,1,1,B,0,1,0,C,1,1,1,D,0,0,1,测试用例,第,1,5,列,第,6,列,第,1,5,列,第,6,列,第,1,5,列,第,6,列,空白,空白,xyz,123,空白,空白,空白,空白,C,?,判定表,75,76,5,、因果图举例,例,1,:,某软件规格说明书包含这样的要求:,输入的第一个字符必须是,#,或*,第二个字符必须是一个数字,此情况下进行记录的修改,如果第一个字符不是,#,或*,则给出信息,N,如果第二个字符不是数字,则给出信息,M,76,77,1),根据题意,分析原因和结果如下:,原因:,第一个字符是,“,#,”,第一个字符是,“,*,”,第二个字符是一个数字,结果:,进行记录更新,产生信息,N,产生信息,M,77,78,2),确立简单的因果图如下:,增加,11,为中间节点,78,79,3),在因果图上加约束条件:,考虑到原因,1,和原因,2,不可能同时为,1,,因此在因果图上施加,E,约束。,79,80,4),根据因果图建立判定表:,无,无,#3,#A,*6,*B,A1,GT,80,81,5),设计测试用例,测试用例,输入数据,预期输出,Test1,#3,进行文件更新,Test2,#A,产生信息,M,Test3,*6,进行文件更新,Test4,*B,产生信息,M,Test5,A1,产生信息,N,Test6,GT,产生信息,M,和信息,N,81,82,黑盒测试方法,常用的黑盒测试方法有:,等价类划分,边界值分析法,因果图法,决策表法,82,5.6,决策表驱动分析,决策表又称为,判定表,并非因果图的辅助,决策表是把作为条件的,所有输入的各种组合值,以及,对应输出值,都罗列出来而形成的表格,它能够将复杂的问题按照,各种可能的情况,全部列举出来,简明并避免遗漏。因此能够设计出完整的测试用例集合。,在所有的黑盒测试方法中,基于决策表的测试是,最严格,最具有逻辑性,的测试方法。,83,84,决策表驱动分析,一张判定表的,“,田,”,字型结构:条件桩、条件项、动作桩、动作项,84,85,决策表,的组成,条件桩:,列出了问题的所有条件。,动作桩:,列出了问题规定可能采取的操作。,条件项:,列出针对它所列条件的取值,在所有可能情况下的真假值。,动作项:,列出在条件项的各种取值情况下应该采取的动作。,85,86,决策表的建立步骤,(,1,)确定规则的个数。例如有,n,个条件,每个条件有两个取值(,0,,,1,),故有,2,n,种规则。,(,2,)列出所有的条件桩和动作桩;,(,3,)填入条件项;,(,4,)填入动作项,制定初始决策表;,(,5,),简化;合并相似规则或者相同动作。,86,生成决策表:一个简单的例子,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,条件,能编写程序,N,N,N,N,N,N,N,N,Y,Y,Y,Y,Y,Y,Y,Y,熟悉软件工程,N,N,N,N,Y,Y,Y,Y,N,N,N,N,Y,Y,Y,Y,对软件测试感兴趣,N,N,Y,Y,N,N,Y,Y,N,N,Y,Y,N,N,Y,Y,理解教材内容,N,Y,N,Y,N,Y,N,Y,N,Y,N,Y,N,Y,N,Y,建议,学习,C+/Java,学习软件工程,继续阅读,放弃学习,软件测试,阅读决策表,87,88,规则及规则合并,规则:,任何一个条件组合的特定取值及其相应要执行的操作称为规则。,判定表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。,化简:,就是规则合并,有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。,88,89,规则及规则合并举例,动作项一样,条件项类似,在,1,、,2,条件项分别取,Y,、,N,时,无论条件,3,取何值,都执行同一操作,可合并。,“,”,表示与取值无关。,Y,N,Y,X,Y,N,N,X,Y,N,-,X,89,90,规则及规则合并举例,无关条件项,“,”,可包含其他条件项取值,具有相同动作的规则可合并。,Y,-,N,X,Y,N,N,X,Y,-,N,X,90,决策表化简,1,5,2,4,3,6,7,8,9,11,10,12,13,14,15,16,条件,能编写程序?,N,N,N,N,Y,Y,Y,Y,熟悉软件工程?,N,N,Y,N,N,Y,Y,对软件测试感兴趣,?,N,Y,N,Y,理解教材内容,N,Y,N,N,Y,建议,学习,C+/Java,语言,学习软件工程,继续阅读,放弃学习,软件测试,阅读决策表化简,91,92,基于,决策表,的测试举例,例,1,:,对功率大于,50,马力的机器、维修记录不全或已运行,10,年以上的机器,应给予优先的维修处理。,这里假定:,“,维修记录不全,”,和,“,优先维修处理,”,均已在别处有更严格的定义。,请建立判定表。,92,93,基于,决策表,的测试举例,确定规则的个数:,这里有,3,个条件,每个条件有两个取值,故应有,2*2*2=8,种规则。,列出所有的条件桩和动作桩,条件,功率大于,50,马力吗?,维修记录不全吗?,运行超过,10,年吗?,动作,进行优先处理,作其他处理,93,94,基于,决策表,的测试举例,填入条件项。,填入动作桩和动作项。,得到如图初始判定表。,1,2,3,4,5,6,7,8,条件,功率大于,50,马力吗?,Y,Y,Y,Y,N,N,N,N,维修记录不全吗?,Y,Y,N,N,Y,Y,N,N,运行超过,10,年吗?,Y,N,Y,N,Y,N,Y,N,动作,进行优先处理,X,X,X,X,X,作其他处理,X,X,X,94,95,基于,决策表,的测试举例,化简。,合并相似规则后得到图。,12,3,4,57,68,条件,功率大于,50,马力吗?,Y,Y,Y,N,N,维修记录不全吗?,Y,N,N,-,-,运行超过,10,年吗?,-,Y,N,Y,N,动作,进行优先处理,X,X,X,作其他处理,X,X,95,96,决策表的优点和缺点,优点:,能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。,缺点:,不能表达重复执行的动作,例如循环结构。,96,
展开阅读全文