2.3 用例设计常用方法
一个好的测试用例是指可能找到迄今为止尚未发现的错误的测试,由此可见,测试用例设计工作在整个测试过程中占有十分重要的地位,所以我们不能只凭借一些主观或直观的想法来设计测试用例,而应该要以一些比较成熟的测试用例设计方法为指导,再加上设计人员个人的经验积累来设计测试用例。
2.3.1 等价类划分方法
1.等价类划分方法基本概念
如果把所有可能的输入数据分为有效等价类和无效等价类两种,那么可以做出这样的合理假定:如果等价类中的一个输入数据能发现一个缺陷,那么等价类中其他输入数据也能发现同一个缺陷;反之,如果一个输入数据不能发现某个错误,那么等价类中其他输入数据也不能发现这一错误。
有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
与有效等价类恰巧相反,无效等价类是指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
等价类分析法不但可以针对输入数据,而且可以针对输出数据进行划分。总之,他们发现缺陷的概率是等效的。
2.等价类划分方法设计用例的原则
● 如果输入条件规定了取值范围,或者值的个数,则可以确定一个有效等价类和两个无效等价类;
● 如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可以确立一个有效等价类和一个无效等价类;
● 如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类;
● 如果规定了输入数据的一组值,则程序要对每一个输入值分别进行处理;这时要对每一个规定的输入值确立一个等价类,并且对于这组值之外的所有值也都确立一个等价类;
● 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据);
● 如果已划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类。
3.利用等价类划分方法选择用例
● 为每一个等价类规定一个唯一的编号;
● 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类;重复这一步骤,直到所有的无效等价类都被覆盖为止;
● 设计一个新的测试用例,使其仅覆盖一个无效等价类,重复这一步骤,直到所有的无效等价类都被覆盖为止。
【举例1】以短消息编辑用户场景为例。
第一步:为每一个等价类和无效等价类规定一个唯一的编号,如表2.1所示。
表2.1 输入字符有效等价类
有效等价类编号 | 有效等价类字符长度 | 有效等价类编号 | 有效等价类字符长度 |
1 | 0 | 10 | 数字 |
2 | 1 | 11 | 字母 |
3 | 35 | 12 | 汉字 |
4 | 69 | 13 | 汉字+符号 |
5 | 70 | 14 | 汉字+数字+字母+符号 |
6 | 80 | 15 | 字母+符号 |
7 | 159 | 16 | 字母+数字+符号 |
8 | 160 | 17 | 71 |
9 | 符号 | 18 | 161 |