当输入参数是两个时,用例是多少个?从上一篇文章的结论,应该是13*13,即169个。但在真正的测试用例编写中,我们会使用如此多的用例去验证吗?答案肯定是否定的。从时间成本和人力资源成本上来说,这也是不现实的。在测试两个输入参数的场景里,两个参数都会有相应的参数限制,如参数类型限制和长度限制。在做测试用例设计时,可以使用等价类法。
举个最简单的网站登录的例子,假定登陆的参数只有两个,用户名和密码,在输入正确的用户名和密码后,登陆成功;输入错误的用户名或者密码后,登陆失败。这里在不考虑各种浏览器登录、多个终端登录等场景的情况下,只考虑这两个参数输入,来设计相应的用例。
等价类法:
1 输入正确的用户名和密码,登陆成功
2 输入错误的用户名和密码,登陆失败
这两类里,对于第一类,只要考虑一组数据,即选一个存在的用户名和密码;
对于第二类,考虑情况有:
1)输入存在的用户名,密码是空
2)输入存在的用户名,密码是空格
3)输入存在的用户名,密码错误
4)输入不存在的用户名,密码是空
5)输入不存在的用户名,密码是空格
6)输入不存在的用户名,密码非空格或空
7)输入用户名是空,密码是空
8)输入用户名是空,密码是空格
9)输入用户名是空格,密码非空格或空
以上9种场景,即9组数据,不存在可以覆盖多个场景的数据。最后7和8两个场景,可以取一个场景作为测试点,另一个可以忽略。因为一般代码路径是先检查两个输入框是否都已输入值,这个检查顺序一般是先检查第一个,再检查第二个。所以如果用户名是空,不论密码是否输入,均会报请输入用户名。
以上10个情况,仅仅只针对输入框在功能设定情况下的用例。因为这篇的主题是针对两个输入框,如何设计测试用例。所以对于登陆功能用例设计并没有展开。当然登陆功能的用例设计不仅仅是以上10种,还需要考虑不同终端登录,不同浏览器登录,关掉浏览器再打开,退出再登陆等等功能用例,以及sql注入、登陆请求消息被截取串改等安全测试用例,当然还会包括登陆并发的性能测试用例。在这篇不做展开描述。
那么通过这个例子,当有两个输入框时,用例如何设计?首先明确两个输入框的数据类型和长度,再明确两个输入框之间是否有关联,再明确代码路径是怎样(看懂代码对测试很有帮助)。最后选择等价类法设计测试用例,如果有边界值的情况,则还要选择边界值法。如果有功能逻辑,则还要使用因果图法。这些测试用例设计方法都是用例设计的理论基础。需要训练自己有意识地使用这些方法。实践久了,逻辑思维能力和思考能力会不断提高。