资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第四章 黑盒测试及其实例设计,黑盒测试法,是根据被测,程序功能,来进行测试,所以通常,也称为,功能测试,。用黑盒测试法设计测试用例,有,4,种常用,技术:,等价分类法,边界值分析,错误猜测法,决策表法,因果图法,测试的方法与技术,软件测试的,策略和方法,静态测,试方法,动态测,试方法,人工测试方法,计算机辅助静,态分析方法,白盒测试方法,黑盒测试方法,黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:,是否有不正确或遗漏了的功能,?,在接口上,,输入能否正确地接受,?,能否输出正确的结果,?,是否有数据结构错误或外部信息,(,例如数据文件,),访问错误,?,性能上是否能够满足要求,?,是否有初始化或终止性错误,?,软件,输入,不深入代码细节的测试方法称为,动态黑盒测试。,软件测试员充当客户来使用。,输出,这种方法是把,测试对象,看做,一个黑盒子,,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。,动态黑盒测试,戴上眼罩测试软件,1.,等价分类法,所谓等价分类,就是把所有可能的输入数据(有效的和无效的)划分成若干个,等价类,(,等价类是指某个输入域的子集合。在该集合中,各个输入数据对于揭露程序中的错误都是等价的,),。因此,可以把全部输入数据合理地划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,这样就可以少量的代表性测试数据,来取得较好的测试结果。,Windows,计算器程序实例分析,(,1,)你测试了,1+1,,,1+2,1+3,和,1+4,之后,还有必要测试,1+5,和,1+6,吗?你能放心地认为它们正确吗?,(,2,),1+15,与,1+99999999999999999999999999999999,有什么区别呢?,(,3,)测试计算器中,“,菜单,”,命令中的复制功能(单击复制命令,在菜单弹出时键入,c,或者,C,,或者按,Ctrl+c,这几种方法在设计测试用例时可以缩减为按,Ctrl+c,组合键,),注意,:在寻找等价类划分时,考虑把软件具有相似输入、相似输出、相似操作的分在一组,这些组就是等价划分。,是指对于程序的规格说明来说,是,合理的,有意义的输入数据,构成的集合。利用它可以检,验程序是否实现预先规定的功能和性能。,(,1,)有效等价类,是指对于程序的规格说明来说,是,不合理,的,、,无意义的输入数据,构成的集合。程序员主,要利用这一类测试用例来检查程序中功能和性,能的实现是否,不符合,规格说明要求。,(,2,)无效等价类,划分等价类不仅要要考虑代表,“,有效,”,输入值,的有效等价类,还需考虑代表,“,无效,”,输入值的无,效等价类。,采用等价分类法要注意以下两点,:,每一无效等价类至少要用一个测试用例,不,然就可能漏掉某一类错误,但允许若干有效等价,类合用同一个测试用例,以便进一步减少测试的,次数。,如何划分等价类?,有效等价类,(,合理等价类,),无效等价类,(,不合理等价类,),划分等价类的规则(,5,个,),(1),如果输入条件规定了,取值范围,,可定义一个有效等价,类和两个无效等价类。,例,1.1:,输入值是学生成绩,范围是,0,100,。,0 100,有效,等价类,0,成绩,100,无效等价类,成绩,100,无效等价类,成绩,18岁,性别男,地区,河南的人,。,答案,:,有效等价类:,1个:年龄18岁and性别男and地区,河南,无效等价类:3个:年龄=18岁,or,性别,!,男,,or,地区,!,河南,根据等价类创建测试用例的步骤,建立等价类表,列出所有划分出的等价类:,输入条件,有效等价类,无效等价类,(1),为每一个等价类规定一个唯一编号;,(2),设计一个新的测试用例,使其,尽可能多地覆盖尚未被覆盖的有效等价类,,重复这一步,直到所有的有效等价类都被覆盖为止;,(3),设计一个新的测试用例,使其,仅覆盖一个尚未被覆盖的无效等价类,,重复这一步,直到所有的无效等价类都被覆盖为止。,从划分出的等价类中按以下原则设计测试用例:,常见等价类划分测试形式,针对是否对无效数据进行测试,可以将等价类测试分为,标准等价类测试,和,健壮等价类测试,。,标准等价类测试,不考虑无效数据值,测试用例使用每个等价类中的一个值。,健壮等价类测试,主要的出发点是考虑了无效等价类。对有效输入,测试用例从每个有效等价类中取一个值;对无效输入,一个测试用例有一个无效值,其他值均取有效值。,使用等价类划分法测试的实例,例,1,三角形问题,分析:,在多数情况下,是从输入域划分等价类的,但并非不能从被测程序的输出域反过来定义等价类,事实上,这对于三角形问题却是最简单的划分方法。在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。利用这些信息能够确定下列输出(值域)等价类。,R1=a,,,b,,,c,:边为,a,,,b,,,c,的等边三角形,R2=a,,,b,,,c,:边为,a,,,b,,,c,的等腰三角形,R3=a,,,b,,,c,:边为,a,,,b,,,c,的一般三角形,R4=a,,,b,,,c,:边为,a,,,b,,,c,不能构成三角形,标准等价类测试不考虑无效数据值,测试用例使用每个等价类中的一个值。,测试用例,a,b,c,预期输出,Test1,10,10,10,等边三角形,Test2,10,10,5,等腰三角形,Test3,3,4,5,一般三角形,Test4,4,1,2,非三角形,三角形问题的,4,个标准等价类测试用例,测试用例,a,b,c,预期输出,Test1,5,6,7,一般三角形,Test2,-1,5,5,a,值超出输入值定义域,Test3,5,-1,5,b,值超出输入值定义域,Test4,5,5,-1,c,值超出输入值定义域,Test5,101,5,5,a,值超出输入值定义域,Test6,5,101,5,b,值超出输入值定义域,Test7,5,5,101,c,值超出输入值定义域,三角形问题的,7,个健壮等价类测试用例,例,2:,某报表处理系统要求用户输入处理报表的日期,日期限制在,2005,年,1,月至,2009,年,12,月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的,6,位数字字符组成,前四位代表年,后两位代表月。,如何用等价类划分法设计测试用例,来测试程序的日期检查功能?,步骤,:,第一步:等价类划分,第二步:为有效等价类设计测试用例。(多个有效等价类可使用一个测试用例),第三步:为每一个无效等价类设至少 设计一个测试用例,第一步:等价类划分,输入等价类 有效等价类 无效等价类,报表日期的,类型及长度,6,位数字字符,(1),有非数字字符,(4),少于,6,个数字字符,(5),多于,6,个数字字符,(6),年份范围,在,2005,2009,之间,(2),小于,2005(7),大于,2009(8),月份范围,在,1,12,之间,(3),“,报表日期,”,输入条件的等价类表,小于,1 (9),大于,12(10),第二步:为有效等价类设计测试用例对表中编号为,1,,,2,,,3,的,3,个有效等价类用一个测试用例覆盖:,测试数据 期望结果 覆盖范围,200705,等价类,(1)(2)(3),输入有效,第三步:为每一个无效等价类设至少设计一个测试用例,不能出现相同,的测试用例,测试数据 期望结果 覆盖范围,001,MAY,等价类,(4),输入无效,20065,等价类,(5),输入无效,2007005,等价类,(6),输入无效,2004,05,等价类,(7),输入无效,2010,05,等价类,(8),输入无效,2008,00,等价类,(9),输入无效,2006,13,等价类,(10),输入无效,本例的,10,个等价类至,少需要,8,个测试用例,例,3.,在某网站申请免费信箱时,要求用户必须输入用户名、密码及确认密码,对每一项输入条件的要求如下:,用户名要求为,4,位以上,,16,位以下,使用英文字母、数字、“,-”,、“,_”,,并且首字符必须为字母或数字;密码要求为,6,16,位之间,只能使用英文字母、数字以及“,-”,、“,_”,,并且区分大小写。,分析如下:,分析程序的规格说明,列出等价类表(包括有效等价类和无效等价类),如表,4-5,所示。,输入条件,有效等价类,编号,无效等价类,编号,用户名,4,16,位,1,少于,4,位,8,多于,16,位,9,首字符为字母,2,首字符为除字母、数字之外的其他字符,10,首字符为数字,3,英文字母、数字、,“,-,”,、,“,_,”,组合,4,组合中含有除英文字母、数字、,“,-,”,、,“,_,”,之外的其他特殊字符,11,密码,6,16,位,5,少于,6,位,12,多于,16,位,13,英文字母、数字、,“,-,”,、,“,_,”,组合,6,组合中含有除英文字母、数字、,“,-,”,、,“,_,”,之外的其他特殊字符,14,确认密码,内容同密码相同,7,内容同密码相同,但字母大小写不同,15,表,4-5,等价类表,根据上述等价类表,设计测试用例如表,4-6,所示。,测试用例,用户名,密码,确认密码,预期输出,TC1,abc_2000,abc_123,abc_123,注册成功,TC2,2000-abc,123-abc,123-abc,注册成功,TC3,abc,12345678,12345678,提示用户名错误,TC4,abcdefghijk123456,12345678,12345678,提示用户名错误,TC5,_abc123,12345678,12345678,提示用户名错误,TC6,abc&123,12345678,12345678,提示用户名错误,TC7,abc_123,12345,12345,提示密码错误,TC8,abc_123,abcdefghijk123456,abcdefghijk123456,提示密码错误,TC9,abc_123,abc&123,abc&123,提示密码错误,TC10,abc_123,abc_123,Abc_123,提示密码错误,表,4-6,测试用例,例,4.,保险公司计算保费费率的程序,某保险公司的人寿保险的保费计算方式为:,投保额,保险费率,其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下,:,年龄,性别,婚姻,抚养人数,2039,4059,其它,M,F,已婚,未婚,1,人扣,0.5,点,最多扣,3,点,(四舍五入取整),6,点,4,点,2,点,5,点,3,点,3,点,5,点,(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。,年龄:一位或两位非零整数,值的有效范围为199,性别:一位英文字符,只能取值,M,或,F,婚姻:字符,只能取值已婚或未婚,抚养人数:空白或一位非零整数(19),点数:一位或两位非零整数,值的范围为199,(,2,)根据(,1,)中的等价类表,设计能覆盖所有等价类的 测试用例。,输入条件,有效等价类,编号,无效等价类,编号,年龄,2039,岁,1,4059,岁,2,119,岁,6099,岁,3,小于,1,12,大于,99,13,性别,单个英文字符,4,非英文字符,14,非单个英文字符,15,M,5,除,M,和,F,之外的,其它单个字符,16,F,6,婚姻,已婚,7,除已婚和未婚之外的其它字符,17,未婚,8,抚养人数,空白,9,除空白和数字之外,的其它字符,18,16,人,10,小于,1,19,69,人,11,大于,9,20,测试用例,编号,输入数据,预期输出,年龄,性别,婚姻,抚养人数,保险费率,1,27,F,未婚,空白,0.6%,2,50,M,已婚,2,0.6%,3,70,F,已婚,7,0.1%,4,0,M,未婚,空白,无法推算,5,100,F,已婚,3,无法推算,6,99,男,已婚,4,无法推算,7,1,Child,未婚,空白,无法推算,8,45,N,已婚,5,无法推算,9,38,F,离婚,1,无法推算,10,62,M,已婚,没有,无法推算,11,18,F,未婚,0,无法推算,12,40,M,未婚,10,无法推算,2.,边界值分析法(,Boundary Value Analysis,),软件边界与悬崖很类似,测试内点,测试外点,被测试,子域,边界值分析法与等价类划分法区别,(1),边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。,(2),边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况(,NextDate,函数用例)。,采用边界值分析法来选择测试用例,可使,得被测程序能在,边界值及其附近,运行,从而更,有效地暴露出程序中潜藏的错误。,边界值分析法,边界值分析法,边界值分析法是对等价类划分方法的补充。,人们从长期的测试工作经验得知,,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部,。因此针对各种边界情况设计测试用例,,可以查出更多的错误,。,边界值分析的,基本思想,是把测试的重点放在各个等价类的边界上,使用在,最小值、略小于最小值、略高于最小值、正常值、最大值、略低于最大值和略超过最大值处,的值做为测试数据,并据此设计出相应的测试用例。,比如,在做三角形计算时,要输入三角形的三个边长:,A,、,B,和,C,。我们应注意到这三个数值应当满足,A,0,、,B,0,、,C,0,、,A,B,C,、,A,C,B,、,B,C,A,,,才能构成三角形。但如果把六个不等式中的任何一个大于号“”错写成大于等于号“”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。,1:,Rem,Creat,a 10 element integer array,2:,Rem,Initialize each element to -1,3:Dim data(10)As Integer,4:Dim i As Integer,5:For i=1 To 10,6:,data(i,)=-1,7:Next I,8:End,演示边界条件缺陷的简单,BASIC,程序,边界值设计原则,(,1,)如果输入条件规定了值的,范围,,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。,例如,,如果程序的规格说明中规定:,“,重量在,10,公斤至,50,公斤范围内的邮件,其邮费计算公式为,”,。作为测试用例,我们应取,10,及,50,,还应取,10.01,49.99,9.99,及,50.01,等。,(,2,)如果输入条件规定了值的,个数,,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。,例如,,一个输入文件应包括,1-255,个记录,则测试用例可取,1,和,255,,还应取,0,及,256,等。,3.,将规则,1,和,2,应用于,输出条件,,即设计测试用例使输出值达到边界值及其左右的值。,例如,,一程序属于情报检索系统,要求每次,”,最少显示,1,条、最多显示,4,条情报摘要,”,,这时我们应考虑的测试用例包括,1,和,4,,还应包括,0,和,5,等。,再如,,一个学生成绩管理系统规定,只能查询,95-98,级大学生的各科成绩,可以设计测试用例,使得查询范围内的某一届或四届学生的学生成绩,还需设计查询,94,级、,99,级学生成绩的测试用例(不合理输出等价类)。,由于输出值的边界不与输入值的边界相对应,所以要检查输出值的边界不一定可能,要产生超出输出值之外的结果也不一定能做到,但必要时还需试一试。,(,4,)如果程序的规格说明给出的输入域或输出域是,有序集合,(如顺序文件、线性表等),则应选取集合的第一个元素和最后一个元素作为测试用例。,(,5,)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。,例如,,如果程序中定义了一个数组,其元素下标的下界是,0,,上界是,100,,那么应选择达到这个数组下标边界的值,如,0,与,100,,作为测试用例。,(,6,)分析规格说明,找出其他可能的边界条件。,程序中判断输入日期(年月)是否有效,假设使用如下语句:,IF,(,ReportDate,=,MinDate,),THEN,产生指定日期报表,ELSE,显示错误信息,ENDIF,如果将程序中的,“,=,”,误写为,“,”,,则上例的等价类划分中所有测试用例都不能发现这一错误,采用边界值分析法的测试用例如下表所示。,对上述报表处理系统中的报表日期输入条件,以下用边界值分析设计测试用例。,输入,条件,报表日,期的类,型及长,度,1,个数字字符,5,个数字字符,7,个数字字符,有,1,个非数字字符,全部是非数字字符,6,个数字字符,显示出错,显示出错,显示出错,显示出错,显示出错,输入有效,日期,范围,月份,范围,“,报表日期,”,边界值分析法测试用例,测试用例说明,测试数据,期望结果,选取理由,5,20065,2007005,2008.5,MAY-,200605,月份为,1,月,月份为,12,月,月份,12,200501,200512,200500,200513,200501,200912,200500,200913,输入有效,输入有效,显示出错,显示出错,输入有效,输入有效,显示出错,显示出错,在有效范围,边界上选取,数据,仅有,1,个合法字符,比有效长度少,1,比有效长度多,1,只有,1,个非法字符,6,个非法字符,类型及长度均有效,最小日期,最大日期,刚好小于最小日期,刚好大于最大日期,最小月份,最大月份,刚好小于最小月份,刚好大于最大月份,边界值分析法与等价类划分法比较,(1),等价分类法的测试数据是在各个等价类允许的值域内任意选取的,而边界值分析的测试数据必须在边界值附近选取。,(2),一般地说,用边界值分析法设计的测试用例比等价分类法的代表性更广,发现错误的能力也更强。但是对边界的分析与确定比较复杂,要求测试人员具有更多的经验和创造性。,(3),还需指出,有些包含的边界情况比较简单,只需要分析输入等价类。在有些情况下,除了考察输入值边界外,还需要考察,输出值,和其他可能存在的边界。,例:假定被测程序是一个计算,x,的正弦值,sin,(,x,),其输出具有,3,个边界值,-1,、,0,、,1,。在选择测试用例时,应使,x,的值分别产生上述的,3,种输出,边界值,即选取,-/2,、,0,、,/2,作为,x,的测试数据。,3.,错误猜测法,所谓猜测,就是猜测被测程序在哪些地方容易,出错,然后针对可能的薄弱环节来设计测试用例。,显然它比前两种方法更多地依靠测试人员的直觉与,经验。所以一般都先用前两方法设计测试用例,然,后再用猜测法去补充一些例子作为辅助的手段。,错误猜测法,错误推测法的,基本思想,是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。,显然,它比前两种方法更多地依靠测试人员的直觉和经验。所以,一般都先用前两种方法设计测试用例,然后用猜错法补充一些例子作为辅助手段。,根据经验来设计测试用例的方法:,例如,数据测试中的:,缺省值,空白,空值,零值,无,又如输入、输出数据为零是容易发生错误的情况;再如,输入表格为空或输入表格只有一行是容易出错的情况等。例如对于一个排序程序,列出以下几项需特别测试的情况:,(1),输入表为空。,(2),输入表只含一个元素。,(3),输入表中所有元素均相同。,(4),输入表中已排好序。,仍以上述的报表日期为例,在已经用等价分类法和边界值分析发设计过测试用例的基础上,还可用错误猜测法补充一些测试用例,例如:,报表日期为:,“,0,”,漏送,“,报表日期,”,年月次序颠倒,例如将,“,200112,”,误输为,“,122001,”,4.,决策表法,4.1,决策表法,决策表通常由四个部分组成,如图,4-1,所示。,条件桩,:列出了问题的所有条件,通常认为列出的条件的先后次序无关紧要。,动作桩:,列出了问题规定的可能采取的操作,这些操作的排列顺序没有约束。,条件项:,针对条件桩给出的条件列出所有可能的取值。,动作项:,与条件项紧密相关,列出在条件项的各组取值情况下应该采取的动作。,规则:,一种条件取值组合和与其对应的动作组合(即判定表中贯穿条件项和动作项的一列)构成了判定表中的一个规则。条件取值组合的数目就是规则的数目。,图,4-1,决策表的组成,建立决策表的步骤:,列出条件桩和动作桩。,确定规则的个数,用来为规则编号。若有,n,个原因,由于每个原因可取,0,或,1,,故有,2,的,n,次方,个规则。,完成所有条件项的填写。,完成所有动作项的填写。,合并,相似规则,用以对初始决策表进行,简化,(,见书,P,56,),。,建立了决策表后,可针对决策表中的每一列有效规则设计一个测试用例,用以对程序进行黑盒测试。,决策表最突出的优点:,能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。,运用决策表设计测试用例,可以将条件理解为输入,将动作理解为输出。,4.2,实例分析,举例:以下列问题为例给出构造决策表的具体过程。,如果某产品销售好并且库存低,则增加该产品的生产;如果该产品销售好,但库存量不低,则继续生产;若该产品销售不好,但库存量低,则继续生产;若该产品销售不好,且库存量不低,则停止生产。,规则,选项,1,2,3,4,条件:,C1,:销售好,?,C2,:库存低,?,T,T,T,F,F,T,F,F,动作:,a1,:增加生产,a2,:继续生产,a3,:停止生产,表,4-2,决策表,解法如下:,确定规则的个数。对于本题有,2,个条件(销售、库存),每 个条件可以有两个取值,故有,2,2,=4,种规则。,列出所有的条件桩和动作桩。,填入条件项。,填入动作项,得到初始决策表,如表,4-2,所示。,5.,因果图法,因果图法是借助,图形,来设计测试用例的一种系,统方法。它适用于被测程序具有多种输入条件,,程序的输出又依赖于输入条件的各种组合的情况。,因果图是一种简化了的,逻辑图,,它能直观地,表明程序输入条件(原因)和输出动作(结果),之间的相互关系。,5.1,因果图法,在等价类划分方法和边界值方法中未考虑输入条件的各种组合,当输入条件比较多时,输入条件组合的数目会相当大。,因果图法是一种帮助人们系统地选择一组高效测试用例的方法,它既考虑了输入条件的组合关系,又考虑了输出条件对输入条件的依赖关系,即因果关系,其测试用例发现错误的效率比较高。,因果图方法的,特点,是:,考虑输入条件的组合关系;,考虑输出条件对输入条件的依赖关系,即因果关系;,测试用例发现错误的效率高;,能检查出功能说明中的某些不一致或遗漏。,在因果图中出现的基本符号,在因果图中使用,4,种符号分别表示,4,种因果关系,如图,5-1,所示。用直线连接左右节点,其中左节点,ci,表示输入状态(或称原因),右节点,ei,表示输出状态(或称结果)。,ci,和,ei,都可取值,0,或,1,,,0,表示某状态不出现,,1,表示某状态出现。,主要的原因和结果之间的关系有,:,(,a,)恒等 (,b,)非,(,c,)或 (,d,)与,图,5-1,因果图的基本符号,图中左边的结点表示原因,右边的结点表示结果,原因和结果之间的关系有:,恒等:若,c1=1,,则,e1=1,;若,c1=0,,则,e1=0,非:若,c1=1,,则,e1=0,;若,c1=0,,则,e1=1,或:若,c1=1,或,c2=1,或,c3=1,,则,e1=1,;否则,e1=0,与:若,c1=c2=c3=1,,则,e1=1,;否则,e1=0,画因果图时原因在左,结果在右,由上向下排列,并根据功能说明中规定的原因和结果之间的关系,用上述符号连接起来。必要时还可以引入一些,中间结点,。,表示约束条件的符号 为了表示原因与原因之间,结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。见图,5-2.,图,5-2,约束符号,图中,互斥、包含、唯一、要求,是对,原因,的约束,,屏蔽,是对,结果,的约束,互斥:表示,a,、,b,、,c,中至多只有一个为,1,,即不同时为,1,包含:表示,a,、,b,、,c,中至少有一个为,1,,即不同时为,0,唯一:表示,a,、,b,、,c,中有且仅有一个,1,要求:表示若,a=1,,则要求,b,必须为,1,,即不可出现,a=1,且,b=0,屏蔽(强制):表示若,a=1,,则,b,必须为,0,,即不可出现,a=1,且,b=1,利用因果图产生测试用例的基本步骤,(1),分析软件规格说明描述中,,哪些是原因,(,即,输入条件或输入条件的等价类,),,,哪些是结,果,(,即输出条件,),,并给每个原因和结果赋予,一个标识符。,(2),分析软件规格说明描述中的语义,找出,原因,与结果,之间,,原因与原因,之间对应的是什么,关系,?,根据这些关系,画出因果图。,(3),由于语法或环境限制,有些原因与原因之,间,原因与结果之间的组合情况不可能出,现。为表明这些特殊情况,在因果图上用,一些记号,标明约束或限制条件,。,(4),把因果图转换成决策表。,(5),把决策表的每一列拿出来作为依据,设计,测试用例。,从因果图生成的测试用例中包括了所有输入数据的取,TRUE,与,FALSE,情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。,图,5-3,因果图法示例,5.2,因果图法测试用例,某软件规格说明中包含这样的要求:输入的第一个字符必须是,A,或,B,,第,二个字符必须是一个数字,在此情况下进行文件的修改;但如果第一个字,符不正确,则给出信息,L,;如果第二个字符不是数字,则给出信息,M,。,解法如下:,(,1,)分析程序的规格说明,列出原因和结果。,原因:,C1-,第一个字符是,A,C2-,第一个字符是,B,C3-,第二个字符是一个数字,结果:,e1-,给出信息,L,e2-,修改文件,e3-,给出信息,M,(,2,)将原因和结果之间的因果关系用逻辑符号连接起来,得到因果图,如图,5-4,所示。编号为,11,的中间节点是导出结果的进一步原因。,图,5-4,因果图示例,图,5-5,具有,E,约束的因果图,因为,C1,和,C2,不可能同时为,1,,即第一个字符不可能既是,A,又是,B,,在因果图上可对其施加,E,约束,得到具有约束的因果图,如图,5-5,所示。,(,3,)将因果图转换成决策表,如表,5-1,所示。,(,4,)设计测试用例。表,5-1,中的前两种情况,因为原因,1,和原因,2,不可能同时为,1,,所以应排除这两种情况。根据此表,可以设计出,6,个测试用例,如表,5-2,所示。,规则,选项,1,2,3,4,5,6,7,8,条件,C,1,1,1,1,1,0,0,0,0,C,2,1,1,0,0,1,1,0,0,C,3,1,0,1,0,1,0,1,0,11,1,1,1,1,0,0,动作,e,1,0,0,0,0,1,1,e,2,1,0,1,0,0,0,e,3,0,1,0,1,0,1,不可能,1,1,测试用例,A5,A#,B9,B?,X2,Y%,表,5-1,决策表,表,5-2,测试用例,编号,输入数据,预期输出,TC1,A5,修改文件,TC 2,A#,给出信息,M,TC 3,B9,修改文件,TC 4,B?,给出信息,M,TC 5,X2,给出信息,L,TC 6,Y%,给出信息,L,和信息,M,例,2,:某电力公司有,A,、,B,、,C,、,D,四类收费标准,并规定:,居民用电,100,度,/,月 按,A,类收费,100,度,/,月 按,B,类收费,动力用电,10000,度,/,月,非高峰,,B,类收费,10000,度,/,月,非高峰,,C,类收费,10000,度,/,月,高峰,,C,类收费,10000,度,/,月,高峰,,D,类收费,输入条件(原因)输出动作(后果),c1,居民用电,e1,按,A,类收费,c2,动力用电,e2,按,B,类收费,c3 100,度,/,月,e3,按,C,类收费,c410000,度,/,月,e4,按,D,类收费,c5,高峰用电,设计测试用例的步骤,:,1.,列举所有存在的输入条件和输出结果。,2.,根据输入条件和输出条件生成决策表。,把因果图转换为决策表,组合条件,条件,(,原因,),动作,(,结果,),e1,e2,e3,c1,c2,c3,1,2,3,4,5,6,1,-,1,1,-,0,-,1,1,-,-,-,1,1,0,0,0,0,1,0,0,0,0,1,1,0,c4,1,0,1,0,c5,0,0,1,1,e4,0,0,0,1,1,0,0,1,0,0,0,0,测试用例,-,-,-,-,-,-,-,-,-,-,1,列 居民电,90,度,/,月,A,2,列 居民电,110,度,/,月,B,3,列 动力电,非高峰,8000,度,/,月,B,4,列 动力电,非高峰,1.2,万度,/,月,C,5,列 动力电,高峰,0.9,万度,/,月,C,6,列 动力电,高峰,1.1,万度,/,月,D,条件 测试用例 预期结果,组合,(,输入数据,)(,输出动作,),3.,针对决策表的每一列产生一个测试用例。,例,3,,有一个处理单价为,5,角钱的饮料自动售货机软件,其规格说明如下:,饮料自动售货机允许投入,5,角或,1,元的硬币,用户可通过,“,橙汁,”,和,“,啤酒,”,按钮选择饮料,售货机还装有一个表示,“,零钱找完,”,的指示灯,当售货机中有零钱找时指示灯暗,当售货机中无零钱找时指示灯亮。当用户,投入,5,角,硬币并,押下,“,橙汁,”,或,“,啤酒,”,按钮后,售货机,送出,“,橙汁,”,或,“,啤酒,”,。当用户,投入,1,元,硬币并押下,“,橙汁,”,或,“,啤酒,”,按钮后,如果售货机有零钱找,则送出相应的饮料,并,退还,5,角,硬币;如果售货机没有零钱找,则饮料不送出,并且,退还,1,元,硬币。,(1),分析规格说明,列出原因和结果,规格说明中的,红色部分,是输入条件(原因),,蓝色部分,是输出条件(结果)。,由于“,售货机有零钱找,”是在投入,1,元硬币时判断是否能找零钱的依据,所以也可把它看作是一个输入条件,即原因。与之对应的结果是,售货机指示灯亮,(或暗)。,售货机有零钱找,投入,1,元硬币,投入,5,角硬币,押下橙汁按钮,押下啤酒按钮,6.,测试方法的选择,为了最大程度地减少测试遗留的缺陷,同时也为了最大限度地发现存在的缺陷,在测试实施之前,测试工程师必须确定将要采用的测试策略和测试方法,并以此为依据制定详细的测试方案。通常,一个好的测试策略和测试方法必将给整个测试工作带来事半功倍的效果。,如何才能确定好的测试策略和测试方法呢?通常,在确定测试方法时,应该遵循以下原则:,根据程序的重要性和一旦发生故障将造成的损失来确定测试等级和测试重点。,认真选择测试策略,以便能尽可能少地使用测试用例,发现尽可能多的程序错误。因为一次完整的软件测试过后,如果程序中遗留的错误过多并且严重,则表明该次测试是不足的,而测试不足则意味着让用户承担隐藏错误带来的危险,但测试过度又会带来资源的浪费。因此,测试需要找到一个平衡点。,以下是各种测试方法选择的综合策略,可在实际应用过程中参考。,首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率的最有效方法。,在任何情况下都必须使用边界值分析方法。经验表明用这种方法设计出测试用例发现程序错误的能力最强。,对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。,如果程序的功能说明中含有输入条件的组合情况,则应在一开始就选用决策表法或者因果图法。,7.,小 结,测试用例的设计方法不是单独存在的,具体到每个测试项目里都会用到多种方法,每种类型的软件有各自的特点,每种测试用例设计的方法也有各自的特点,针对不同软件如何利用这些黑盒方法是非常重要的,在实际测试中,往往是综合使用各种方法才能有效提高测试效率和测试覆盖度,这就需要认真掌握这些方法的原理,积累更多的测试经验,以有效提高测试水平。,
展开阅读全文