4.2 测试用例的常用设计方法

测试用例的设计编写是有一定的方法以及技巧的,当我们完全掌握了这些技巧之后,设计的测试用例会更加全面完整,也不会遗漏任何重要的测试点。

一般适合新手掌握的测试用例设计方法有:等价类、边界值、错误推测法以及场景法。


等价类方法:把所有可能输入的数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例,它是一种重要的、常用的黑盒测试用例设计方法。划分的等价类分为两种:有效等价类和无效等价类。

(1)有效等价类

指对程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。

(2)无效等价类

指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。

设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

一个非常简单的例子,一个网站的用户注册功能如图所示。


该用户注册功能模块,我们经过简单的需求分析,得出如下两个需求点:

① 密码长度限制:8~16位。

② 密码格式限制:包含数字、字母、符号至少包含两种。


根据上文对等价类的划分以及有效、无效等价类的描述,我们对两个需求点分类如下。

表中对等价类的划分以及有效和无效都进行了精确的划分,让我们更加容易地了解了这个等价类的用法。


边界值方法:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,其测试用例来自等价类的边界。长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上的,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用例,首先应确定边界情况,通常输入和输出等价类的边界,就是我们需要重点关注的边界值,应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据,这里还需要给大家补充下,一般情况下,边界值方法会考虑跟数字有关的等价类,而不会去关注其他非数字等价类。

回到上面用户注册的例子,我们只需要考虑密码长度的边界值,而不需要对密码格式考虑边界值,对密码长度进行分析,结果如同所示。

我们选择边界值一定要遵循如下规则。


① 选取划分等价类的点:比如我们是根据8和16这两个值把长度划分成了3段,所以这两点是必须要选择的。

② 选择刚好大于或者是小于这个划分点的值:比如说7和17。

③ 在有效等价类的里面随机选择一个值:比如9~15之间任意选择一个值。


最后得出我们的密码长度边界值范围:7、8、10、16、17。


错误推测法:是一种基于经验和直觉推测程序中所有可能存在的各种错误,并且有针对性设计测试用例的方法,一句话来总结这种方法:明知不可为而为之。列举出程序中所有可能有的错误和容易发生错误的情况,来设计测试用例。

继续来看上面的用户注册的功能模块,根据直觉来判断,我们知道执行如下操作肯定会报错。

还有很多会报错的异常操作,没有罗列出来,大家可以自行去进行拓展。


业务场景法:它是指模拟特定场景发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现需求中存在的问题。场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景测试。基本流一般就是我们所有正常的场景描述,备用流一般就是特殊的或者异常的场景描述。

举个例子来说明,比如我们经常会遇到的登录功能,我们可以画出它的基本流和备用流,如下图所示。

根据上述流程图,我们可以分析得出:

基本流:输入正确的用户名密码→登录成功。

备用流:① 输入错误的用户名或者是密码→重新输入。

② 输入错误的密码次数超过3次→冻结账户。

业务场景法的分析和举例,会让我们的测试更加完整。