您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > Ch3-软件测试方法
Dr.张德珍软件测试方法和技术第2版第3章软件测试的方法Zhu.Kerry@gmail.com第3章软件测试的方法Zhu.Kerry@gmail.com3.1白盒测试方法3.2黑盒测试方法3.3静态测试和动态测试3.4主动测试和被动测试3.5形式化测试方法3.6基于风险的测试3.7模糊测试方法3.8ALAC测试和随机测试方法3.2黑盒测试方法3.2.1等价类划分法3.2.2边界值分析法3.2.3决策表方法3.2.4因果图法3.2.5正交试验法3.2.6功能图法3.2.7错误推测法Zhu.Kerry@gmail.com3.2.1等价类划分方法将程序可能的输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的分为有效等价类和无效等价类。有效等价类是有意义的、合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的意义相反在分析需求规格说明的基础上划分等价类,列出等价类表Zhu.Kerry@gmail.com设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。经过正反的测试才能确保软件具有更高的可靠性。allinputsi1i4i2i3确定等价类的方法在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类Zhu.Kerry@gmail.cominrangegreaterthanrangelessthanrangevaluegreaterthanvaluelessthanvalue在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类确定等价类的方法(2)Zhu.Kerry@gmail.comnotmemberofsetmemberofsetBooleanNon-Boolean确定等价类的方式(3)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。Zhu.Kerry@gmail.com个人月收入-x税率x=16000%1600x21005%500=x360010%3600=x660015%6600=x2160020%21600=x4160025%……10160045%等价类测试用例-Example等价类1:Integer等价类2:Decimalfraction等价类3:Negative等价类4:InvalidinputZhu.Kerry@gmail.com根据等价类创建测试用例的步骤a)建立等价类表,列出所有划分出的等价类:b)为每个等价类规定一个唯一的编号;c)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类d)重复c),最后使得所有有效等价类均被测试用例所覆盖;e)设计一个新的测试用例,使其只覆盖一个无效等价类。f)重复e)使所有无效等价类均被覆盖。输入条件有效等价类无效等价类………………Zhu.Kerry@gmail.com常见的等价类测试用例设计法(1)弱一般等价类测试用例设计法(2)强一般等价类测试用例设计法(3)弱健壮等价类测试用例设计法(4)强健壮等价类测试用例设计法(5)等价类覆盖法测试用例设计法案例1对于函数F(X,Y),其输入变量X和Y的取值边界定义如下:X∈[a,b)∪[b,c)[c,d];Y∈[e,f)∪[f,g]可得到X,Y的等价类如下表输入变量有效等价类编号无效等价类编号X[a,b)1Xa6[b,c)2[c,d]3Xd7Y[e,f)4Ye8[f,g]5Yg9试用前述几种等价类测试用例设计法设计测试用例(1)弱一般等价类测试用例设计法测试用例从每个有效等价类中选取一个值测试用例XY预期输出WR1XabYefF1WR2XbcYfgF2WR3XcdYefF3从X的三个有效等价类中分别选一个值从Y的两个有效等价类中分别选一个值(1)弱一般等价类测试用例设计法用坐标图表示如下:agedYXfbc(2)强一般等价类测试用例设计法测试用例从有效等价类笛卡儿积中选取agedYXfbc(3)弱健壮等价类测试用例设计法对于有效等价类,从每个有效等价类选取一个值。对于无效等价类,使用一个无效值,并保持其余的值都是有效的agedYXfbc(Xa,Yef)(Xcd,Yg)(Xd,Yef)(Xcd,Ye)(4)强健壮等价类测试用例设计法测试用例从所有等价类(包括有效和无效等价类)笛卡儿乘积中选取agedYXfbc(5)等价类覆盖法测试用例设计法等价类覆盖法测试用例设计法设计测试用例的步骤如下:(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号。(2)设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。(3)设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。为什么对有效等价类和无效等价类的覆盖方式不一样呢?原因对于有效等价类,采取尽量覆盖的方式是为了全面考察软件的功能。对于无效等价类,采取每次只覆盖一个的方式是因为通常程序发现一类错误后就不再检查是否还有其他错误,因此,应该使每个测试用例只覆盖一个无效等价类。(5)等价类覆盖法测试用例设计法agedYXfbc覆盖等价类4,6覆盖等价类1,4覆盖等价类2,5覆盖等价类3,9覆盖等价类5,7覆盖等价类3,4覆盖等价类3,8案例2NextDate问题NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面的那个日期。变量月份、日期和年都为整数,且满足以下条件:C1.1=月份=12C2.1=日期=31C3.1912=年=2012试用前述几种等价类测试用例设计法设计测试用例划分等价类输入变量有效等价类编号无效等价类编号m1=m=121m14m125d1=d=312d16d317y1912=y=20123y19128y20129(1)弱一般等价类测试用例设计法测试用例月份日期年预期输出T161519121912年6月16日(2)强一般等价类测试用例设计法强一般等价类测试用例和弱一般等价类测试用例相同。为什么?(3)弱健壮等价类测试用例设计法测试用例月份日期年预期输出WR161519121912年6月16日WR2-1151912月份不在有效值内WR313151912月份不在有效值内WR46-11912日期不在有效值内WR56321912日期不在有效值内WR66151811年不在有效值内WR76152013年不在有效值内(4)强健壮等价类测试用例设计法以下是部分强健壮等价类测试用例:测试用例月份日期年预期输出SR1-1151912月份不在有效值内SR26-11912日期不在有效值内SR36151811年不在有效值内SR4-1-11912月份和日期不在有效值内SR56-11811日期和年不在有效值内SR6-1151811月份和年不在有效值内SR7-1-11811月份,日期和年不在有效值内(5)等价类覆盖法测试用例设计法测试用例月份日期年覆盖等价类编号预期输出T161519121,2,31912年6月16日T2-11519124,2,3月份不在有效值内T3131519125,2,3月份不在有效值内T46-119121,6,3日期不在有效值内T563219121,7,3日期不在有效值内T661518111,2,8年不在有效值内T761520131,2,9年不在有效值内思考对于NextDate问题还有其他的等价类划分方法吗?NextDate问题的另外一种等价类划分年月日的有效等价类可为:M1={月份:每月有30天}M2={月份:每月有31天,12月除外}M3={月份:此月是12月}M4={月份:此月是2月}D1={日期:1=日期=27}D2={日期:日期=28}D3={日期:日期=29}D4={日期:日期=30}D5={日期:日期=31}Y1={年:年是闰年}Y2={年:年是平年}案例3三角形问题输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形,以及构不成三角形。a、b、c,必须满足以下条件:a,b,c0试用前述几种等价类测试用例设计法设计测试用例。划分等价类(1)先根据输入限制条件粗分等价类输入变量有效等价类无效等价类aa0a0bb0b0cc0c0划分等价类(续)(2)再根据输出细分等价类(得到的等价类成为输出等价类)输入变量有效等价类编号无效等价类编号aa0{a|a,b,c组成等边三角形}1a05{a|a,b,c组成等腰三角形}2{a|a,b,c组成普通三角形}3{a|a,b,c不能构成三角形}4bb0{b|a,b,c组成等边三角形}1b06{b|a,b,c组成等腰三角形}2{b|a,b,c组成普通三角形}3{b|a,b,c不能构成三角形}4cc0{c|a,b,c组成等边三角形}1c07{c|a,b,c组成等腰三角形}2{c|a,b,c组成普通三角形}3{c|a,b,c不能构成三角形}4(1)弱一般等价类测试用例设计法测试用例abc预期输出WN1555等边三角形WN2223等腰三角形WN3345一般三角形WN4412不构成三角形(2)强一般等价类测试用例设计法强一般等价类测试用例和弱一般等价类测试用例相同。为什么?(3)弱健壮等价类测试用例设计法测试用例abc预期输出WR1555等边三角形WR2223等腰三角形WR3345一般三角形WR4412不构成三角形a,b,c取有效值(3)弱健壮等价类测试用例设计法测试用例abc预期输出WR5-155a值超出输入值定义域WR65-15b值超出输入值定义域WR755-1c值超出输入值定义域a,b,c取无效值(4)强健壮等价类测试用例设计法测试用例abc预期输出SR1555等边三角形SR2223等腰三角形SR3345一般三角形SR4412不构成三角形a,b,c取有效值(4)强健壮等价类测试用例设计法测试用例abc预期输出SR5-155a取无效值SR65-15b取无效值SR755-1c取无效值SR8-1-15a、b取无效值SR95-1-1b、c取无效值SR10-15-1a、c取无效值SR11-1-1-1a、b、c取无效值a,b,c取无效值(5)等价类覆盖法测试用例设计法测试用例abc覆盖等价类编号预期输出Test15551等边三角形Test22232等腰三角形Test33453一般三角形Test44124不构成三角形Test5-1555a值超出输入值定义域Test65-156b值超出输入值定义域Test755-17c值超出输入值定义域思考1、对于三角形问题,若规定0a,b,c200,如何用前述几种等价类测试用例设计法设计测试用例?2、若把a,b,c当作一个整体考虑,如何根据程序输出确定其等价类(输出等价类),并用等价类覆盖法设计其测试用例?案例4保险费率确定问题某保险公司的人寿保险的保费率确定规则如下:保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:年龄性别婚姻抚养人数20~3940~59其它MF已婚未婚1人扣0.5点最多扣3点(四舍五入取整)6点4点2点5点3点3点5点相关约束条件如下:年龄:一位或两位非零整数,值的有效范围为1~99性别:一位英文字符,只能取值‘M’或’F’婚姻:字符,只能取值‘已婚’或‘未婚’抚养人数:空白或一位非零整数(1~9)点数:一位或
本文标题:Ch3-软件测试方法
链接地址:https://www.777doc.com/doc-2904849 .html