等价类测试基础
- 等价类测试的作用
- 等价类方法可在有限测试的情况下,用少量有代表性的数据,得到比较好的测试结果。
- 等价类测试的思想
- 把所有可能输入的数据,划分为若干个子集,然后从每一个子集中选取少数有代表性的数据作为测试用例。
- 划分对于测试的作用
完备性:各个子集的并是整个集合。
无冗余性:各个子集的交是空。
- 等价类测试的假设
- 测试某等价类的代表值,就等效于对这个等价类中其他值的测试。
等价类划分
- 等价类划分的定义
- 给定集合B,以及B的一组子集A1、A2……、An,这些子集是B的一个划分,当且仅当:A1∪A2∪…∪An=B,且 i≠j Ai∩Aj=Φ(并为整,交为空)。
- 有效等价类
- 对于程序的规格说明来说,是合理的、有意义的输入数据所构成的集合。
- 无效等价类
- 对于程序的规格说明来说,是不合理的、没有意义的输入数据所构成的集合。
- 分别拒绝每一个有效条件。
- 自然数–拒绝–负数、小数、有字母、有特殊字符、有中文、空格。
- 注意非数字、空格、空白等。
确定等价类的方法
- 如果输入条件规定了取值范围或值的个数就可确定一个有效等价类和两个无效等价类。
按照数值划分。如果规定了输入数据的n个值,且程序要对每一个输入值分别进行处理,可确定n个有效等价类和一个无效等价类。 - 输入条件规定了输入值的集合或是规定了“必须如何 ”的条件,则可确定一个有效等价类和一个无效等价类。
- 规定了输入数据必须遵守规则或是限制条件的情况下,可以确定一个有效等价类和若干个无效等价类。
- 如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类。
- 如果已划分的等价类各元素在程序中的处理方式不同,这应将此等价类进一步划分成更小的等价类。
- 特别注意默认值、空值、null、零值的情况。
- 注意隐含条件。
等价类测试的分类
- 弱一般等价类测试(定其他变一)
- 基于单缺陷假设,不考虑无效等价类
- 测试用例设计
- 选取的测试用例覆盖所用的有效等价类。
- 强一般等价类测试(所有组合都取)
- 基于多缺陷假设,不考虑无效等价类
- 测试用例设计
- 将每一个变量的有效等价类做笛卡尔积,设计测试用例覆盖笛卡尔积的每一个元素。
- 弱健壮等价类测试用例
- 单缺陷、考虑无效等价类
- 测试用例设计
- 对有效输入,使用每个有效等价类的一个值
- 对无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的
- 强健壮等价类测试
- 多缺陷、考虑无效等价类
- 测试用例设计
- 从所有等价类的笛卡尔积的每一个元素中获得测试用例。
用等价类设计测试用例
- 先划分等价类
- 再建立等价类表
- 最后设计测试用例
- 为每一个等价类规定一个唯一的编号。
- 设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一过程直至多有的有效等价类全部被覆盖。
- 设计一个测试用例,使其仅覆盖一个尚未覆盖的无效等价类,重复这一过程,直至所有的无效等价类全部被覆盖。
- 举例