一、需求
接口测试用例中部分测试用例主要是对接口的入参、出参进行测试,入参出参主要和数据类型有关,此部分测试用例可以进行抽象建模使用JAVA自动化生成,提升测试用例编写的效率。
二、设计
三、实现过程
1、工具:Intellij
项目结构如下:生成的测试用例存放于resource下的APITestCases
excel文件中
2、pom.xml文件导入依赖包
需要对excel进行读写、解析Json格式数据,因此需要导入poi和fastjson相关包
3、实现设计
(1) 按照一定格式整理接口信息,存放在APITestCase文件的ApiInfo
sheet页
(2) 代码实现
函数1:readApiInfo()
作用:读取接口信息
函数2:generateMapp(String type,String paramName)
参数说明:type:数据类型,paramName:参数名
作用:根据不同的数据类型生成不同的测试项
if(("int").equalsIgnoreCase(type)||("long").equalsIgnoreCase(type)){
map.put(0, "不传");
map.put(1, "传0");
map.put(2, "非"+type+"型");
map.put(3, "小数或负数");
map.put(4, "传空");
}
else{
map.put(0, "不传");
map.put(1, "传空");
map.put(2, "长度超过限制");
map.put(3, "特殊字符");
if(paramName.equalsIgnoreCase("appKey") ||paramName.equalsIgnoreCase("pId") || paramName.equalsIgnoreCase("appId") ||paramName.equalsIgnoreCase("userId")){
map.put(4, "不存在");
map.put(5, "不匹配");
}
else if(paramName.equalsIgnoreCase("deviceSerial")){
map.put(2, "不存在");
map.put(3, "不匹配");
map.put(4, "离线的设备");
map.put(5, "在线的设备");
}
函数3:getExpectedResults(String expectedResult)
参数:expectedResult即APIInfo sheet页输入的预期结果(json格式)
作用:按顺序解析Json数据的key、value, 在接口测试用例中加入对key的验证
函数4:GenerateApiTestCase(String moduleInfo, String testCaseName, String expectedResult, String apiUrl, String commentInfo)
参数说明:moduleInfo:即APIInfo sheet页输入的模块1信息
testCaseName::即APIInfo
sheet页输入的用例名称
expectedResult:即APIInfo
sheet页输入的预期结果(json格式)
apiUrl:即APIInfo sheet页输入的涉及接口信息
commentInfo:即APIInfo
sheet页输入的备注信息
作用:生成测试用例
4、编译文件
打印日志如下
总共有1***************************************1RTMP取流并发限制获取
{"code":"200","data":{"limittype":0,"limitnum":10,"userId":"","devsn":"","chnl":"","streamtype":2}}
####################### key:code
####################### key:data
####################### key:limittype
####################### key:limitnum
####################### key:userId
####################### key:devsn
####################### key:chnl
####################### key:streamtype
用例名称: 接口返回包括code字段
用例名称: 接口返回包括data字段
用例名称: 接口返回包括limittype字段
用例名称: 接口返回包括limitnum字段
用例名称: 接口返回包括userId字段
用例名称: 接口返回包括devsn字段
用例名称: 接口返回包括chnl字段
用例名称: 接口返回包括streamtype字段
用例名称: 参数校验 -
uuid-String-必填
用例名称: 参数校验 -
cdn-String-非必填
生成的测试用例
四、实现价值与不足
需要对1个复杂接口进行充分测试,往往可能会设计超过50条的测试用例,如果只是用人工手动输出用例的方式,1个工作日可以完成150-200个测试用例的编写。
使用该工具生成测试用例已有1季度,可稳定生成用例,生成200个测试用例的时间差不多在10分钟左右,大大提升了测试用例编写的效率,可以将更多时间花在思考测试用例的设计上;
不足之处在于:该工具对于入参的校验还是不够充分,对于已经设置好边界值的入参考虑不足,用例场景性不够,这都是后期需要优化改进的地方。