在编写测试用例后,我们经常会发现一些用例实际上是重复的,这导致了大量的重复工作。那么我们应该如何移除这些重复的用例呢?
尤其是使用等价类划分和边界值分析编写用例时,很容易造成用例重复。
举例
下面我们通过一个例子来具体分析一下。
首先选择一个场景,后台维护前台账号,主要有以下几个字段(字段太多,这里只列举三个字段进行分析)。
账号:4~8位字母和数字组合
密码:8~16位字母数字组合
姓名:字母、数字、特殊字符和汉字组合,长度4~20
下面我们对他们的等价类和边界值进行分析。
账号
有效等价类:6位数字和字母组合,5位纯数字组合,7位纯字母组合。
无效等价类:3位字符,9位字符,汉字,空。
边界值:4位字符,8位字符。
密码
有效等价类:9位数字和字母组合,10位纯数字组合,11位纯字母组合。
无效等价类:7位字符,17位字符,汉字,空。
边界值:8位字符,16位字符。
姓名
有效等价类:字母、数字特殊字符和汉字组合,长度10;纯字母,长度11;纯数字,长度12;纯特殊字符,长度13;纯汉字,长度14。
无效等价类:长度3,长度21,空。
边界值:长度4,长度10。
如果只通过等价类划分来分析边界值,可以统计出有多少用例——总共28个用例。
然而,在测试过程中,我们会发现有很多重复。比如我们先测试账号输入框,输入6位纯数字,然后另外两个输入框需要输入有效的等价类。
事实上,在我们的一个用例中,账号、密码和名字都涵盖了一个测试用例。在测试这个输入框中的密码时,这个用例是重复执行的,那么如何避免这种情况呢?
首先将所有的输入都列到一列,如下图:
我们的用例组合的原则是一个用例可以包含多个有效的等价类,并且它们都必须是有效的等价类。
一个用例只能包含一个无效的等价类,这个用例中的有效等价类不能作为验证条件。比如账号中输入了汉字,密码和名称输入正确,此时提示账号输入错误,这个用例就通过了,这只是意味着无效等价类的这个条件通过了,而不是这个用例中另外两个有效等价类。
因此,有效的等价类不能与无效的等价类一起验证。
接下来我们在上边的表格里标注一下哪些等价类可以组合到一起,数字相同的表示可在一条用例里覆盖。
我们可以发现,用例1、2、3、4、5都可以在一条用例里覆盖多条有效等价类,用例6和7是比其他两个输入框多出来的有效等价类。
由于另外两个输入框的有效等价类已经被覆盖,在执行这两个用例时,可以任意从另外两个输入框中选择有效等价类进行测试,用例8~18为无效等价类,只能单独验证。
这样,只有18个用例,比原来的28个少了10个,这样我们的用例就可以更加简洁,避免用例的冗余,同时保证用例的全覆盖。
End