赞
踩
等价类划分类
什么是等价类
等价类是某个输入域的集合,在这个集合中每个输入条件都是等效的。如果其中一个的输入不能导致问题发生,那么集合中其它输入条件进行测试也不可能发现错误。等价类分为有效等价类和无效等价类。
有效等价类
有效等价类就是由那些对程序的规格说明有意义的、合理的输入数据所构成的集合,利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类
无效等价类就是那些对程序的规格说明不合理的或无意义的非法的输入数据所构成的集合。
什么是等价类划分
等价类划分法是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合。
划分等价类的六大原则:
1、 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
例如:成年人每分钟的心跳60-100之间为正常。 有效等价类:60-100 无效等价类:<60 和 >100
2、 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。
例如:用户连续输入错误密码的次数最多为3次。有效等价类:1<=x<=3次 无效等价类:>3次
3、在输入条件是一个布尔量的情况下,可确定一个有效等价类。
例如:单选的选中与不选中。
4、在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
例如:输入数据为省份的选择。
5、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则) 。
例如:规定必须输入非0的正整数。这种例子应充分考虑规则是否可以拆分为具有单一的子规则,然后得到从不同角度违反规则的无效等价类。该例子起码可拆分为非0、数字、正数、整数4个子规则,至少每个规则对应一个无效等价类,即0、字符串、负数、小数,甚至可挖掘出输入为空的隐含等价类。
6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
例如:核对日期的有效性,初步有效等价类是1<=Month<=12,1<=Day<=31 可是考虑到2月以及闰年、闰月、长月、短月等,需要进一步细分,当然其中还涉及到了年月日组合的问题。
等价类划分的测试用例设计
测试用例设计原则根据等价类表,然后从划分出的等价类中按以下三个原则设计测试用例:
1、为每一个等价类规定一个唯一的编号。
2、设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
3、设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
等价类划分法优缺点
等价类划分法的优点是考虑了单个输入域的各类情况,避免了盲目或随机选取输入数据的布完整性和覆盖的不稳定性。
等价类划分法虽然简单易用,但是没有对组合情况进行充分的考虑。需要结合其他测试用例设计的方法进行补充。如边界值分析法常与等价类分析法结合使用。
等价类划分类用例设计实例
输入三个整数作为三边的边长构成三角形。请用等价类划分法设计一般三角形、等腰三角形、等边三角形的测试用例。
1)分析题目中给出的和隐含的对输入条件的要求:
a) 3个数
b) 非零数
c) 两边之和大于第三边
d) 等腰
e) 等边
2)列出有效等价类、无效等价类,并编号(关键就是“寻找”等价类)
3)列出覆盖上述等价类的测试用例,如下表:
序号 | 【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,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) | |
15 | 【3,3,4】 | (1),(2),(3),(4),(5),(6),(13),(20) |
边界值分析法
什么是边界值分析
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。
边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界值分析关注的是输入空间的边界,边界值测试背后的基本原理是错误更可能出现在输入变量的极值附近。
与等价划分的区别
1)边界值分析不是从某等价类中挑一个为代表,而是使这个等价类的每个边界都作为测试条件。
2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
常见边界值
1) 数字类型的取值范围边界,如16-bit 的整数而言 32767 和 -32768 是边界
2) 条件判断组合中的取值范围边界,如 if i>10,10是边界
3) 记录的第一行和最后一行,如报表的第一行和最后一行
4) 数组元素的第一个和最后一个
5) 循环的第 0 次、第 1 次和倒数第 2 次、最后一次
边界值分析方法
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……"。
边界分析应取10及50,还应取10.01, 49.99, 9.99 及 50.01等
2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
例如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。
3)根据规格说明的每个输出条件,应用前面的原则①②。
例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",
其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。
4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
6)分析规格说明,找出其它可能的边界条件。
通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间 相应地,
以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满
边界值分析的优缺点
1)对于一个N变量函数,边界分析会产生4N+1个测试用例
2)取值取决于变量本身的性质
3)对布尔类型没有意义
4)边界值分析是假定变量是完全独立的
因果图法
什么是因果图
是一种从用自然语言书写的程序规格说明的描述中找到因(输入条件)和果(输出或程序状态的改变)的关系,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
因果图能检查出规格的错误,并最终导出为判断表。
因果图基本关系 因果关系中的四种基本关系:恒等、非、或、与
因果图分析的特点
考虑输入条件间的组合关系;
考虑输出条件对输入条件的信赖关系,即因果关系;
测试用例发现错误的效率高;
能检查出功能说明中的某些不一致或遗漏;
因果图方法最终生产的就是判定表,它适合于检查程序输入条件和各种组合情况。
因果图分析
1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.
2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.
3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件
4) 把因果图转换为判定表.
5) 把判定表的每一列拿出来作为依据,设计测试用例.
某软件需求说明书:
某段文本中,第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。
如果第一列字符不正确,则给出信息L;
如果第二列字符不是数字,则给出信息M。
确定原因和结果:从大的方面看,第一列和第二列不同的字符会引起不同的结果,所以初步分析原因结果图如下:
原因 | c1 | 第一列字符正确 |
c2 | 第二列字符是数字 | |
结果 | e1 | 修改文件 |
e2 | 给出信息L | |
e3 | 给出信息M |
确定因果逻辑关系:
如果第一列和第二列都正确,则修改文件;
如果第一列不正确,给出信息L;
如果第二列不正确,给出M。 可以得出下边的因果图:
而根据需求描述,原因c1还可以细分为2个原因: 第一列字符是A(c11),第一列字符是B(c12)。 因此原因c1其实也可以看作成结果。 把它用因果图表示出来如下图:
确定约束关系:从需求描述中可知,原因c11和c12不可能同时为真,但可以同时为假, 因此满足排他性约束。这三个结果之间没有掩码标记的约束。完整的因果图如下:
根据因果图画决策表 分析每一种状态对应的结果,并根据约束关系,去掉不可能出现的状态。
本例的c11和c12满足排他性约束,所以同时都为1的状态不会出现:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
原因 | c11 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
c12 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | |
c2 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |
结果 | e1 | 0 | 0 | 0 | 1 | 0 | 1 | 无此可能 | 无此可能 |
e2 | 1 | 1 | 0 | 0 | 0 | 0 | |||
e3 | 0 | 0 | 1 | 0 | 1 | 0 | |||
测试用例 | aa | a3 | Be | B3 | Aq | A4 |
|
| |
输入结果 |
L |
L |
M |
修改文件 |
M |
修改文件 |
|
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。