背景:2017年9月,我司自研了自动化测试平台,并在实际工作中取得了一定的效果。其中,接口自动化测试是平台的重要功能,现将接口自动化相关的功能分享出来,供同行交流。平台仍在不断优化完善中,希望大家多提建议,多多益善~
基本功能
- 测试集管理
- 测试集接口管理及配置
- 测试集运行,运行记录及报告
- 解决方案(多个测试集组成)配置、运行及报告
具体介绍详见下文
测试集管理
测试集列表(个人)
测试集列表提供两种模式展示(卡片/表格):产品(项目)、名称、描述;蓝色背景标识为公有
新建测试集
测试集操作:复制、删除、设置为公有(即加入至测试集仓库;已为公有的表示推送最新版本)
测试集仓库
测试集仓库为团队协同工作使用的测试集仓库,需要个人将测试集公有后才可见,测试集版本与公有库版本各自独立(测试集可推送至公有库,从而同步版本)
- 公有库列表:搜索、分类
- 仓库测试集操作:克隆至个人测试集,公有库删除(权限:作者/管理员)
测试集接口管理及配置
此项体现测试集支持完成的接口自动化的功能项,可谓核心,总结为:
- 支持在测试集页面对各接口进行操作
- 多个接口可自由组合排序,数据独立
- 测试集接口请求参数支持新增及修改
- 测试集接口支持变量传递及函数功能
- 测试集接口验证支持多种验证器扩展
测试集页面支持的功能还是比较多的,下图为一个简单的Demo示例,已包含三个接口
接口基础操作
注:植入了我司的所有接口数据,如API传参、描述、示例等(平台包含接口管理功能,包含约2K+API,这里暂不表)
新建接口
编辑、复制、删除、拖拽接口
-
点击接口,出现右侧接口设置面板,包含5个子Tab
- 请求参数的新增及编辑
- 响应数据的动态参数化绑定
- 验证:响应数据Json层级的多项验证
- 实例(数据植入接口实例信息)
- 配置:扩展的配置,目前包含重试、签名方式、前置等待时间等
请求参数已植入接口数据的传参项,required表示必填(定制化加入了保存验证)
表示将响应数据中的Json体的对应数据(Value),绑定为测试集的变量(Key)为变量名;该变量可用作后续接口的传参或验证中。
如图例中,执行请求会动态生成EIPId,现将这个值绑定为变量,该变量用于后续的API中,变量使用$开头来标识验证器基本上你能想到的都提供了。。。
有些统一的验证,平台已为每个API加上,如我司验证RetCode为0的验证> 另:环境变量为该测试集独有的局部变量,用法为传参或验证Value中 $开头使用
测试集运行
选择对应的环境、账号、运行变量后,点击运行,平台会发送请求至后端进行处理
运行环境、账号、运行的变量设置为平台附加的功能,这里也都不详细介绍了
有必要简单介绍下后端测试集执行机制,如何优雅地进行测试任务调度及管理是自动化测试平台的核心,目前方式是引入celery作为任务调度器,多节点部署服务器。可扩展一定量的执行服务器(我司初期配置了6台基础配置的虚机,一台200个节点,可承载1200个测试任务并行运行)。
运行记录
操作点击显示对应的测试报告
测试报告
定制化测试报告展示
解决方案
很多情况下,需要多个测试集共同执行,且共用一套环境及运行参数,对此我们的解决方案是加入测试集解决方案
该解决方案还在不断优化中,也就不详细介绍了
以上仅为平台提供的部分功能,其他的像是监控、邮件通知等就不介绍了 。。。