接口测试 接口自动化测试框架搭建思路

Jerry li · 2018年01月12日 · 最后由 陈林 回复于 2019年08月02日 · 6770 次阅读

前言:

基于 Python+macaca 的 web、Android 自动化测试框架已在内部运行一段时间,运行效果稳定。于是产生了把接口自动化也加入到框架中的念头。
https://testerhome.com/topics/11183

技术框架使用:

管理平台: Python+flask
测试用例管理: Python
测试用例执行:Python+request(Python 的 http 接口组件)

需求来源:

一个接口的字段定义格式大致如下(以登录接口为例):

在对接口进行测试时,一般会基于一些规则,对不同的字段组合进行测试,如:
1. 为空验证:逐个测试不允许为空的字段为空时,是否正确处理。
2. 长度校验:逐个测试每个字段超过限定长度时,是否正确处理。
3. 签名验证:生成的签名不符合签名规则时,是否正确处理。
4. 格式验证:逐个测试每个字段格式错误时,是否正确处理。
。。。

如果按以上的规则逐个字段进行测试,则每条规则需要 N 条测试用例(N 为对应的字段数量);规则越多,测试用例的数量也越多,执行和回归的工作量就越大。因此,按一定的规则做成自动化很有价值。

设计思路:

1. 接口的定义和保存格式

类似上图 Excel 中的定义格式,转换为 json 对象保存到数据库中:

保存的信息包括:接口名称,url 路径,参数列表,加密方式,加密规则等。

2. 规则定义

整理通用的测试规则:

3. 用例生成

通过关联某个接口和对应的规则,生成批量的测试用例。
如选择 remove 规则,则会根据规则,生成一批测试用例,每个用例中移除一个必填字段。
具体的规则实现通过代码来定义。

如下图,就是 remove 规则和 init 接口生成的用例列表。 key field 代表该条用例测试的字段,old value 和 new value 分别是该字段修改前后的值对比, context 是该条用例生成的参数数值列表。

4. 用例执行

用例执行时,读取某条用例中生成的 url 和 context,并组装成对应的 http 报文发送到对应服务器接口,并记录对应的执行结果。
其中期望结果由对应的规则确定,代表在该条规则下,该用例期望的返回码是什么; 实际结果,是本条用例实际执行的返回码。 执行状态,则根据期望结果和实际结果的对比判断该条用例是否执行成功。

5. 用例组管理

与 web、Android 自动化测试用例管理方式类似,接口自动化测试也会按照:
批次 - 接口 - 用例 的方式进行管理。 一个批次对应多个接口,一个接口对应多条用例。
这样就可以根据需要,在一个批次里测试对应的接口列表。

6. 使用场景

6.1 新接口测试:
当系统需要添加新的接口时,将对应接口按格式添加到系统中,即可快速按定义的规则进行测试,快速发现问题。
6.2 自动化回归测试:
当系统版本更新时,对所有接口进行一次完整的自动化测试,可快速完成回归测试,判断系统更新对相关接口的功能是否产生影响。

共收到 9 条回复 时间 点赞

以上已实现,并和 flask 搭建的 web 管理平台集成

对应的 web 搭建平台记录: https://testerhome.com/topics/11183

学习啦!将常用测试的规则提前封装好,直接一键生成!像楼主学习~~~

Jerry li 接口测试用例到底应该怎么写 中提及了此贴 01月24日 09:58

期待楼主分享

赞,码代码容易,难的是好的框架思路

学习 好思路

仅楼主可见
brain588 回复

接口这块目前和业务关联比较强,而且代码写得不满意,暂时没有整理开源的计划
建议可以找一下论坛里的其他相关帖子,之前有看到过几个类似思路的实现方案

simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08
迷惘 做接口测试我想知道的问题 中提及了此贴 01月16日 10:05
仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册