测试用例设计方法版权所有:张梅娜20090713基本内容•为什么做测试用例什是测试用例•什么是测试用例•使用测试用例的好处•测试用例设计过程•测试用例设计方法为什么做测试用例完全测试是不可能的:完全测试是不能的•输入量太大;•输出结果太多;•软件实现途径太多;•软件说明书没有客观标准。
从不同角度看,软件说明书没有客观标准从不同角度看软件缺陷的标准不同。
什么是测试用例•为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据,称之为测试用例。
心设计的少量测试数据称之为测试用例•我们不可能进行穷举测试,为了节省时间和资源、提高测试效率,必须要从数量极大的可用测试数据中精高测试效率必须要从数量极大的可用测试数据中精心挑选出具有代表性或特殊性的测试数据来进行测试。
个好的测试用例是在于它能发现至今未发现的错误。
•一个好的测试用例是在于它能发现至今未发现的错误。
使用测试用例的好处•在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。
•测试用例的使用令软件测试的实施重点突出、目的明确。
•在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度、缩短项目周期。
试工作,降低工作强度缩短项目周期。
•功能模块的通用化和复用化使软件易于开发,而相对于功能模块的测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升。
开展并随着测试用例的不断精化其效率也不断攀升测试用例的设计过程•测试设计员(分析设计员)依据不同阶段的测试计划设计模型和实施模型来设计的测试计划、设计模型和实施模型来设计该阶段测试用例。
•测试设计员是具有丰富测试经验或具有软件分析设计能力的高级测试工程师。
如果没有测试设计员,则可用分析设计员代替。
没有测试设计员则可用分析设计员代替•针对白盒,还应有驱动程序和桩模块。
测试用例的设计方法•等价类划分•边界值分析•因果图•比较法•……等价类划分•等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
每一类的代表性数据在测试中的作用等价于这一类中的其他值,也就是说,如果某一类中的于这类中的其他值也就是说如果某类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误;反之,如果某一类中的一个例能发现同样的错误反之如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。
怎样划分等价类()怎样划分等价类(一)1)如果输入条件规定了取值的范围或值的个数,则可确定一个有效等价类和两个无效等价类;2)如果一个输入条件说明了一个“必须成立”的情况,如果个输条件说明了个必须成立的情则可划分一个有效等价类和一个无效等价类;3)如果输入条件规定了输入数据的一组可能的值,而且程序是用不同的方式处理每一种值,则可为每一种值划分一个有效等价类,并划分一个无效等价类;种值划分个有效等价类并划分个无效等价类怎样划分等价类(二)4)如果我们确知,已划分的某等价类中的各元素例子在程序中的处方式是不同元素(例子)在程序中的处理方式是不同的,则应据此将此等价类进一步划分成更小的等价类。
5)在确立了等价类之后,建立等价类表,列出所有划分出的等价类:出所有划分出的等价类输入条件有效等价类无效等价类………确定等价类测试用例的步骤•为每个等价类规定一个惟一的编号;每个等价类个编设计个新的测试用例,使其尽可能多地•设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。
重复这一步,最后使得所有有效等价类均被测试用例所覆盖;•设计一个新的测试用例,使其只覆盖一个无效等价类。
重复这步使所有无效等价无效等价类。
重复这一步使所有无效等价类均被覆盖。
示例1:关于复制的等价划分•有5种执行方式:单击复制菜单命令,键入c或C,按Ctrl+c或令键入按Ctrl+Shi+c组合键;•可以把这5种输入途径划分减为3个,单击菜单命令,键入C和按个单击菜单命令键入Ctrl+c组合键;•对软件质量有了信心之后,知道无论以何种方式激活复制功能都工作正常,甚至可以进一步缩减为1个区间,例如按Ctrl+c组合键。
12示例2:关于文件名的等价划分•Windows文件名可以包含除了、/:·? “”<>和\之外的任意字符文件名长度是—意字符。
文件名长度是1255个字符;•等价区间有合法字符、非法字符、合法长度的名称、过长名称和过短名称。
13关于三角形的等价划分示例3:关于三角形的等价划分•问题:根据下面给出的规格说明,利用等价类划分的方法给出足够的测试用例价类划分的方法,给出足够的测试用例。
“一个程序读入3个整数,把这三个数值看做个三角形的3条边的长度值。
这个程序做一个三角形的要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。
的是等腰的还是等边的”分析三角形的特点示例3:分析三角形的特点•我们可以设三角形的3条边分别为A,B,C。
如果它我们可以设角形的如果它们能够构成三角形的3条边,必须满足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B;且•如果是等腰的,还要判断A=B,或B=C,或A=C ;•如果是等边的,则需判断是否A=B,且B=C,且A=C ;列出三角形的等价类列表示例3:列出三角形的等价类列表输入条件有效等价类无效等价类 (A>0), (1)(B>0), (2) (A≤0), (7)(B≤0), (8)是否三角形的3条边(C>0), (3) (A+B>C), (4) (B+C>A), (5) (C≤0), (9) (A+B≤C), (10) (B+C≤A), (11) (A+C>B) (6) (A+C≤B) (12)是否等腰三角形(A=B), (13) (B=C), (14) (15)(A≠B)and(B≠C)and (C≠A) (16)(C=A) (15) 是否等边三角形(A=B)and (B=C)and (C=A)(17)(A≠B), (18)(B≠C), (19)(C≠A) (20)设计三角形的测试用例示例3:设计三角形的测试用例1【3,4,5】(1)(2)(3)(4)(5)(6)一般三角形【,,】(),(),(),(),(),()般角形2 【0,1,2】(7) 不3 【1,0,2】(8) 【120】能构成三角形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)【334】(1)(2)(3)(4)(5)(6)(13)(20)15【3,3,4】(1),(2),(3),(4),(5),(6),(13),(20)边界值分析•边界值分析法是一种补充等价划分的测试边界值分析法是种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。
素是选择等价类边的测试用例实践证明,在设计测试用例时,对边界附近的处理必须给予足够的重视,为检验边界附近的处理专门设计测试用例,常常取得良好的测试效果。
边界值分析法不仅重视输入条件边界,而且也从输出域导出测试用例。
边界值设计遵守的几条原则()边界值设计遵守的几条原则(一)1)如果输入条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界外的值作为测试用例。
如以a和b为边界,测试用例应当包含a和b及略大于a和略小于b的值;2)若规定了值的个数,分别以最大、最小个数及稍小于最小、稍大于最大个数作为测数稍小于最小稍大于最大个数作为测试用例;边界值设计遵守的几条原则(二)3)1)和2)针对每个输出条件使用前面的第和条原则;4)如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件、表格等),是个有序的集合(如顺序文件表格等)就应注意选取有序集的第一个和最后一个元素作为测试用例;元素作为测试用例5)分析规格说明,找出其他的可能边界条件。
一个演示边界条件缺陷的简单程序个演示边界条件缺陷的简单程序1:Rem Create a10element integer arrayl2:Rem lnitialize each element to-13:Dim data(10)As Integer()4:Dim I As Integer5:For I=1TO106:data(i)=-17:Next i8:End边界问题会在哪儿呢?data(1)=-1data(2)=-1data(3)=-1data(4)=-1data(5)=-1data(6)=-1data(7)=-1data(8)=-1data(9)=-1data(10)=-1data(0)=0d(0)0边界条件类型•数值、速度、字符、地址、位置、尺寸、数量等等;数值速度字符地址位置尺寸数量等等•第一个/最后一个、最小值/最大值、开始/完成,超过/在内、空/满、最短/最长、最慢/最快、最早/最迟、最大/最小、最高/最低、相邻/最远等等;•越界测试通常是简单地加1或者加很小的数(对于最大值)和减少1或者减很小的数(对于最小值)可能的边界条件()可能的边界条件(一)•1~255个字符,就尝试输入1如果文本输入域允许输入个字符就尝试输入个字符和255 个字符作为合法区间。
还可以输入254个字符作为合法测试。
输入0个字符和256个字符作为非字符作为合法测试输入法区间;如果程序读写软盘就尝试保存个尺寸极小甚至•如果程序读写软盘,就尝试保存一个尺寸极小,甚至只有一项的文件,然后保存一个很大的——刚好在软盘容量限制之内的文件。
还要尝试保存空文件和尺寸盘容量限制之内的文件还要尝试保存空文件和尺寸大于软盘容量的文件。
可能的边界条件(二)•如果程序允许在一张纸上打印多个页面,就尝试只打印一页(标准情况),并尝试打印所允许的最多页面,如果可能,还要尝试打印0页和多于所允许的页面;如果可能还要尝试打印页和多于所允许的页面•如果测试飞行模拟程序,尝试控制飞机在地平线上和最大允许高度飞行。