黑盒测试用例设计方法通常包括:等价类软件测试用例设计方法、边界值测试用例设计方法、场景法测试用例设计方法、因果图测试用例设计方法、判定表测试用例设计方法、正交试验测试用例设计方法、状态迁移图测试用例设计方法、输入域测试用例设计方法、输出域测试用例设计方法、异常分析测试用例设计方法和错误猜测测试用例设计方法等方法。下面就对这十一种方法进行详细的分析。
一、等价类测试用例设计方法
等价类测试用例设计方法是一种典型的黑盒测试设计方法,使用该方法主要对测试子项进行测试规格分析,进而得到测试用例,不需要对系统内部处理进行深入了解,它也是目前测试设计过程中使用最普遍的一种方法。采用等价类设计方法是将系统的输入域划分为若干部分,然后从每个部分选取少数代表性数据进行测试,这样可以避免穷举产生的大量用例。
等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露软件中的错误都是等效的。在测试设计中合理地假设,假设测试某等价类的代表值就等于该等价类子集合中的其他值的测试。因此可以将全部输入数据进行合理的划分,划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,这样可以使用少量代表性测试数据取得较好的测试结果。等价类通常可以划分为有效等价类和无效等价类两种。
(1)有效等价类:是指对于系统的规格说明书是合理的、有意义的输入数据构成的信息集合。利用有效等价类可以检验程序是否实现了规格说明书中所规定的功能和性能。
(2)无效等价类:是指对于系统的规格说明书是不合理的或无意义的输入数据构成的信息集合。
设计测试用例时需要充分考虑这两种等价类,需要验证系统不但能正确地接收合理的数据,还能处理无效数据。
使用等价类测试用例设计方法的步骤如下:
步骤1:划分等价类。划分等价类可以参考以下几方面原则:
(1)在输入条件规定了取值范围或值的个数时,则可以确定一个有效等价类和两个无效等价类。
(2)在输入条件规定了输入值的集合或者规定了必须在什么条件的情况下,可以确定一个有效等价类和一个无效等价类。
(3)在输入条件是一个布尔值的情况下,可以确定一个有效等价类和一个无效等价类。
(4)在规定了输入数据的一组值假定N 个,并且程序要对输入值分别处理的情况下,可以确定N 个有效等价类和一个无效等价类。
(5)在规定了输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类。
(6)在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,应该再将该等价类进一步划分,划分为更小的等价类。
步骤2:根据划分的等价类确定测试用例。
等价类测试用例设计方法虽然对输入的数据域进行了全面的分类,但在工作中使用等价类分析法存在以下问题:
(1)等价类是以效果来换取效率,等价类细分程度和等价类组合程度取决于进度和人力资源情况。
(2)等价类的出发点是考虑设计用例把输入的每种情况都有用例测试到,就认为达到了充分性,但对于各情况的组合并没有进行充分的考虑。
(3)等价类划分的优劣,关键是需要把输入背后隐藏的信息从各个角度进行分类。
【实例】使用等价类测试用例分析方法,分析保险费率计算的功能。
某保险公司承担人寿保险已经很多年,该公司保费计算方式为投保额×保险率,保险率受点数的影响,点数不同保险率也不同,10 点及以上的费率为0.6%,10 点以下的费率为0.1%。
保险率和以下参数关系如下,见表8-2。
年龄:数字0~150 岁;
性别:字符组合,区分大小写(如FEMALE/MALE);
婚姻:字符组合(已婚/未婚);
抚养人数:数字1~9 人。
其中前三项为必填项,最后一项为选填项。
表8-2 保险率与参数关系
等价类测试用例设计方法分析步骤如下:
步骤1:确定输入。
输入:年龄、性别、婚姻、抚养人数
内部数据结构:点数
设计用例时,除了考虑以上输入外,还要考虑内部数据结构“点数”,需要构造相关输入数据覆盖“点数”的等价类。
步骤2:确定每个输入项的输入条件。
年龄:非负整数、0~150、必填;
性别:字符组合、区分大小写、MALE 或者FEMALE、必填;
婚姻:字符组合、已婚或者未婚、必填;
抚养人数:正整数、1~9、选填。
步骤3:对每个输入进行等价类分析,得到等价类表,见表8-3。
表8-3 等价类表
步骤4:针对每个输入设计数据覆盖等价类,见表8-4。
表8-4 设计数据覆盖等价类
数据覆盖等价类应该依据以下原则:
(1)每个输入值应该尽量多地覆盖该输入没有覆盖的其他有效等价类。
(2)每个输入值只能覆盖该输入所对应的一个无效等价类。
步骤5:设计用例覆盖多个输入的有效值和无效值,见表8-5。
表8-5 设计用例覆盖输入有效值和无效值
设计用例覆盖的依据如下:
(1)设计测试用例时,每个测试用例尽可能多地覆盖还没有覆盖的有效值。
(2)设计测试用例时,每个测试用例只覆盖一个无效值。
二、边界值测试用例设计方法
边界值测试(Boundary-Value Testing)是从输入域测试中衍生出来的。边界的条件落在等价类的边界上、边界外和边界内,边界值测试是对等价类测试的一个补充,但不同于等价类测试。由长期测试工作经验得知,大量的错误是发生在输入域或输出域的边界上,因此针对各种边界情况设计测试用例,可以查出更多的错误。
边界值分析方法的理论基础是假定大多数的错误是发生在各种输入条件的边界上,如果在边界附近的取值不会导致程序出错,那么其他取值导致程序出错的概率会很小。
关于边值点的定义如下:
(1)上点:就是边界上的点,如果该域的边界是封闭的,上点就在域范围内;如果域的边界是开放的,上点就在域范围外。
(2)离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外;如果域的边界是开放的,离点就在域范围内。
(3)内点:顾名思义,就是在域范围内的任意一个点。
上点和离点的确定与该域的边界是开放的还是封闭的有关,但不论边界是开放的还是封闭的,上点和离点总是一个在域内,另一个在域外。如对于封闭边界,上点在域内,离点在域外;对于开放边界,上点在域外,离点在域内。例如,假设A 是整数,A 的边界描述为A>0,那么上点为0,离点为1;如果边界描述为A=0,那么上点仍然为0,但离点为-1。
上点和离点的选择还与区间的数据类型有关,对于整数,离点可以通过在上点的基础上加1或减1 来确定;对于实数,可以选择一个精度,在该精度下寻找最靠近的离点。例如,假设A 是实数,首先需要确定精度,若精度为0.001,如果A 的边界描述为A>0,那么上点是0,离点为0.001;如果边界描述为A≥0,那么上点仍然为0,但离点为-0.001。
关于上点、离点和内点的确定,如图8-3 所示。
边界值分析原则如下:
(1)如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例。
(2)如果输入(输出)条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。
(3)如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试用例。
图8-3 上点、离点和内点
(4)如果程序中使用了内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
边界值用例设计方法的步骤如下:
(1)分析输入参数的类型:从测试规格中分析得到输入参数类型。
(2)等价类划分(可选):对于输入等价类划分方法进行等价类的划分。
(3)确定边界:运用域测试分析方法确定域范围的边界(上点、离点与内点)。
(4)相关性分析(可选):如果存在多个输入域,则需要运用因果图、判定表方法对这些输入域边界值的组合情况进行进一步分析。
(5)形成测试项:选择这些上点、离点与内点或者这些点的组合形成测试项。
【实例】以等价类分析方法中的实例(保险率费计算的功能)为例对边界值进行分析,见表8-6。
表8-6 边界值分析
下一步是将边界值转化为测试用例,在表8-6 的测试用例中已经覆盖了边界值的输入。
本章节关于“黑盒测试用例设计方法(一)”的内容就学习到这里,大家觉得文章有用的话记得每天来这里和小编一起学习涨薪技能哦。下一章节讲解“黑盒测试用例设计方法(二),敬请期待!