基于 Python+macaca 的 web、Android 自动化测试框架已在内部运行一段时间,运行效果稳定。于是产生了把接口自动化也加入到框架中的念头。
https://testerhome.com/topics/11183
管理平台: Python+flask
测试用例管理: Python
测试用例执行:Python+request(Python 的 http 接口组件)
一个接口的字段定义格式大致如下(以登录接口为例):
在对接口进行测试时,一般会基于一些规则,对不同的字段组合进行测试,如:
1. 为空验证:逐个测试不允许为空的字段为空时,是否正确处理。
2. 长度校验:逐个测试每个字段超过限定长度时,是否正确处理。
3. 签名验证:生成的签名不符合签名规则时,是否正确处理。
4. 格式验证:逐个测试每个字段格式错误时,是否正确处理。
。。。
如果按以上的规则逐个字段进行测试,则每条规则需要 N 条测试用例(N 为对应的字段数量);规则越多,测试用例的数量也越多,执行和回归的工作量就越大。因此,按一定的规则做成自动化很有价值。
类似上图 Excel 中的定义格式,转换为 json 对象保存到数据库中:
保存的信息包括:接口名称,url 路径,参数列表,加密方式,加密规则等。
整理通用的测试规则:
通过关联某个接口和对应的规则,生成批量的测试用例。
如选择 remove 规则,则会根据规则,生成一批测试用例,每个用例中移除一个必填字段。
具体的规则实现通过代码来定义。
如下图,就是 remove 规则和 init 接口生成的用例列表。 key field 代表该条用例测试的字段,old value 和 new value 分别是该字段修改前后的值对比, context 是该条用例生成的参数数值列表。
用例执行时,读取某条用例中生成的 url 和 context,并组装成对应的 http 报文发送到对应服务器接口,并记录对应的执行结果。
其中期望结果由对应的规则确定,代表在该条规则下,该用例期望的返回码是什么; 实际结果,是本条用例实际执行的返回码。 执行状态,则根据期望结果和实际结果的对比判断该条用例是否执行成功。
与 web、Android 自动化测试用例管理方式类似,接口自动化测试也会按照:
批次 - 接口 - 用例 的方式进行管理。 一个批次对应多个接口,一个接口对应多条用例。
这样就可以根据需要,在一个批次里测试对应的接口列表。
6.1 新接口测试:
当系统需要添加新的接口时,将对应接口按格式添加到系统中,即可快速按定义的规则进行测试,快速发现问题。
6.2 自动化回归测试:
当系统版本更新时,对所有接口进行一次完整的自动化测试,可快速完成回归测试,判断系统更新对相关接口的功能是否产生影响。