1、测试用例的设计方法 什么是测试用例? 简单概括:测试用例就是设计一个情况,软件程序在这种情况下,必须能够达到程序所设计的测试结果。 等价类划分方法 一.方法简介 1.定义 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。 2.划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个
2、数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。 1)有效等价类 是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。 2)无效等价类 与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。 设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有
3、更高的可靠性。 3.划分等价类的标准: 1)完备测试、避免冗余; 2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合; 3)并是整个集合:完备性; 4)子集互不相交:保证一种形式的无冗余性; 5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。 4. 划分等价类的方法 1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0≤X≤100 输入分区 取值 0≤X≤100 34 67 78 X<
4、0 -2 -67 -5 X>100 120 123 103 2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类; 3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。 4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。 例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
5、 5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则); 6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。 5.设计测试用例 在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例: 1)为每一个等价类规定一个唯一的编号; 2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止; 3)设计一个新的测
6、试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。 二、实战演习 1.网易通行证用户名要求:由字母a-z(不区分大小写)、数字0-9、下划线组成;只能以数字或字母开头;用户名长度为4-8个字符 问题:用户名测试用例的等价划分? 输入条有效等价类、无效等价类件? 根据等价划分设计测试用例(回去思考) 2.一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是一般三角形、等腰的、非等腰的、等边的、非等边的、还是非三角形。 设三角形的三条边为:a.b.c,能够成三角形满足的条件为: a>0.b
7、>0,c>0且a+b>c,b+c>a,a+c>b 如果是等腰的,还要判断a=b或b=c或a=c 如果是等边的,还要判断a=b且b=c且a=c 列出等价类列表: 输入条件 有效等价类 无效等价类 是否能构成三角形的三条边 a>0 (1) b>0 (2) c>0 (3) a+b>c (4) b+c>a (5) a+c>b (6) A≤0 (7) b≤0 (8) c≤0 (9) a+b≤c (10) b+c≤a (11) a+c≤b (12) 是否是等腰三角形 a
8、b (13) b=c (14) a=c (15) a≠b且b≠c且a≠c (16) 是否是等边三角形 a=b且b=c且a=c (17) a≠b (18) b≠c (19) a≠c (20) 设计测试用例: 序号 [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
9、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),(
10、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) 边界值分析方法 一. 方法简介 1.定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。 如:输入值是学生成绩,范围是0>X<100 输入分区 取值 0≤X≤100 34 67 78 X<0 -2 -67 -5 X>100
11、 120 123 103 问:边界值可以设为? 2.与等价划分的区别 1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。 2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。(不理解) 3.边界值分析方法的考虑: 长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测
12、试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。 4.常见的边界值 1)对16-bit 的整数而言 32767 和 -32768 是边界 2)屏幕上光标在最左上、最右下位置 3)报表的第一行和最后一行 4)数组元素的第一个和最后一个 5)循环的第 0 次、第 1 次和倒数第 2 次、最后一次 5.边界值分析 1)边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。 例:测试计算平方根的函数
13、 --输入:实数 --输出:实数 --规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息"平方根非法-输入值小于0"并返回0;库函数Print-Line可以用来输出错误信息。 2)边界值分析: 划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例: a、输入 {最小负实数} b、输入 {绝对值很小的负数} c、输入 0 d、输入 {绝对值很小的正数} e、输入 {最大正实数} 3)
14、通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。 4)相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满等情况下。 5)利用边界值作为测试数据 项 边界值 测试用例的设计思路 字符 起始-1个字符/结束+1个字符 假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。 数值 最小值-1/最大值+1 假设某软件的数据输入域要求输入5位的数据值,可以使用
15、10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。 空间 小于空余空间一点/大于满空间一点 例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。 二、选择测试用例的原则: Ø 如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据; Ø 如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1 个、比最小个数少1 个的数做为测试数据; Ø 根据规格说明的每一个输出条件,使用规则一; Ø 根据规格说明的每一个输出条件,应用规则二; Ø 如果程
16、序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例; Ø 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例; Ø 分析规格说明,找出其他可能的边界条件。 错误推测方法 一. 方法简介 1. 定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。 2. 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。 1) 例如, 输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。 2) 例如,前面例子中成绩报告的程序,采用错误推测法还可补充设计一些测试用例: I.程序是否把空格作为回答 II.在回答记录中混有标准答案记录 III.除了标题记录外,还有一些的记录最后一个字符即不是2也不是3 IV. 有两个学生的学号相同 V. 试题数是负数。 3) 再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况: I. 输入的线性表为空表; II. 表中只含有一个元素; III. 输入表中所有元素已排好序; IV. 输入表已按逆序排好; V. 输入表中部分或全部元素相同。






