“单一变量法”,咋这么熟悉的名字?
高中生物课、化学、物理,大学时代的各种实验课中都有提及。
就是这个 “单一变量法”,也可用于软件测试领域。
doSomething(req) 表示为接口测试过程中的某个方法,Java 代码如下(仅表示函数内部的一些调用细节):
public DoSomethingRes doSomething(DoSomethingReq req) {
// check params
check(req);
DoSomethingRes res= null;
SomeRpc rpc = getSomeRpc();
SomeRpcReq rpcReq = build(req);
rpc.doRpcMethod(rpcReq);
// do something else
return res;
}
请求参数:
{
"user": "String",
"type": "1",
"queryStartDate": "2018-09-30"
}
其中 user 为字符串类型;
type 为枚举类型,取值范围为 [0,1,2]
queryStartDate 为日期格式,格式为 yyyy-MM-dd.
返回结果:
{
"success": true,
"message": "ok",
"data":[
{
// json object
},
{
// json object
}
]
}
其中 success=true 表示接口调用成功,success=false 表示接口内部出现异常。
data 是一个对象数组。
选择 user、type、queryStartDate 三个正确参数,保持其中 2 个参数不变,仅修改其中 1 个参数。
检查各个参数进行非空校验,可以得到下述用例:
(1)user=null,type=1,queryStartDate=2018-09-30
(2)user=helloworld,type=null,queryStartDate=2018-09-30
(3)user=helloworld,type=1,queryStartDate=null
检查各个参数进行空字符串校验,可以得到下述用例:
(1)user=空字符串,type=1,queryStartDate=2018-09-30
(2)user=helloworld,type=空字符串,queryStartDate=2018-09-30
(3)user=helloworld,type=1,queryStartDate=空字符串
保持 user、queryStartDate 不变,遍历 type,检查 type 取不同枚举值接口返回结果是否正确,可以得到下述用例:
(4)user=helloworld,type=0,queryStartDate=2018-09-30
(5)user=helloworld,type=1,queryStartDate=2018-09-30
(6)user=helloworld,type=2,queryStartDate=2018-09-30
单一变量法检查接口参数是否正常,可能会导致部分组合参数不能覆盖,需要在测试过程中根据实际代码覆盖率情况补充测试用例。
举例:doSomething 内部针对特殊用户,代码执行了不同的业务代码,此时需要对特殊用户增加测试用例。
(7)user=admin(特殊权限用户),type=0,queryStartDate=2018-09-30
(8)user=admin(特殊权限用户),type=1,queryStartDate=2018-09-30
(9)user=admin(特殊权限用户),type=2,queryStartDate=2018-09-30
使用单一变量法,可以方便组织测试用例,甚至批量生成用例,并快速进行接口自动化测试。
由你来发挥,建议动手实践。
本文由作者同步发布到segmentfault、知乎社区、testerhome。