使用Java自动生成接口测试用例

一、需求

接口测试用例中部分测试用例主要是对接口的入参、出参进行测试,入参出参主要和数据类型有关,此部分测试用例可以进行抽象建模使用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分钟左右,大大提升了测试用例编写的效率,可以将更多时间花在思考测试用例的设计上;

不足之处在于:该工具对于入参的校验还是不够充分,对于已经设置好边界值的入参考虑不足,用例场景性不够,这都是后期需要优化改进的地方。

你可能感兴趣的:(使用Java自动生成接口测试用例)