接口测试 接口自动化测试探索 —— 自研自动化测试平台

弗多 · 2018年01月17日 · 最后由 聿小翼 回复于 2019年10月08日 · 3568 次阅读

背景:2017 年 9 月,我司自研了自动化测试平台,并在实际工作中取得了一定的效果。其中,接口自动化测试是平台的重要功能,现将接口自动化相关的功能分享出来,供同行交流。平台仍在不断优化完善中,希望大家多提建议,多多益善~

基本功能

  • 测试集管理
  • 测试集接口管理及配置
  • 测试集运行,运行记录及报告
  • 解决方案(多个测试集组成)配置、运行及报告

具体介绍详见下文

测试集管理

测试集列表(个人)

  • 测试集列表提供两种模式展示(卡片/表格):产品(项目)、名称、描述;蓝色背景标识为公有
    测试集列表-卡片模式
    测试集列表-列表模式

  • 新建测试集
    新建测试集

  • 测试集操作:复制、删除、设置为公有(即加入至测试集仓库;已为公有的表示推送最新版本)
    复制测试集

测试集仓库

测试集仓库为团队协同工作使用的测试集仓库,需要个人将测试集公有后才可见,测试集版本与公有库版本各自独立(测试集可推送至公有库,从而同步版本)

  • 公有库列表:搜索、分类
  • 仓库测试集操作:克隆至个人测试集,公有库删除(权限:作者/管理员) 测试集仓库

测试集接口管理及配置

此项体现测试集支持完成的接口自动化的功能项,可谓核心,总结为:

  • 支持在测试集页面对各接口进行操作
  • 多个接口可自由组合排序,数据独立
  • 测试集接口请求参数支持新增及修改
  • 测试集接口支持变量传递及函数功能
  • 测试集接口验证支持多种验证器扩展

测试集页面支持的功能还是比较多的,下图为一个简单的 Demo 示例,已包含三个接口
接口列表

接口基础操作

注:植入了我司的所有接口数据,如 API 传参、描述、示例等(平台包含接口管理功能,包含约 2K+API,这里暂不表)

  • 新建接口
    新建接口1
    新建接口2

  • 编辑、复制、删除、拖拽接口
    接口操作

  • 点击接口,出现右侧接口设置面板,包含 5 个子 Tab

    • 请求参数的新增及编辑
    • 响应数据的动态参数化绑定
    • 验证:响应数据 Json 层级的多项验证
    • 实例(数据植入接口实例信息)
    • 配置:扩展的配置,目前包含重试、签名方式、前置等待时间等 接口设置面板 请求参数已植入接口数据的传参项,required 表示必填(定制化加入了保存验证) 接口设置面板-绑定 表示将响应数据中的 Json 体的对应数据(Value),绑定为测试集的变量(Key)为变量名;该变量可用作后续接口的传参或验证中。
      如图例中,执行请求会动态生成 EIPId,现将这个值绑定为变量,该变量用于后续的 API 中,变量使用 $ 开头来标识 接口设置面板-验证 验证器基本上你能想到的都提供了。。。 😌
      有些统一的验证,平台已为每个 API 加上,如我司验证 RetCode 为 0 的验证 接口设置面板-配置 > 另:环境变量为该测试集独有的局部变量,用法为传参或验证 Value 中 $ 开头使用

测试集运行

选择对应的环境、账号、运行变量后,点击运行,平台会发送请求至后端进行处理

运行环境、账号、运行的变量设置为平台附加的功能,这里也都不详细介绍了

有必要简单介绍下后端测试集执行机制,如何优雅地进行测试任务调度及管理是自动化测试平台的核心,目前方式是引入 celery 作为任务调度器,多节点部署服务器。可扩展一定量的执行服务器(我司初期配置了 6 台基础配置的虚机,一台 200 个节点,可承载 1200 个测试任务并行运行)。

运行记录

运行记录
操作点击显示对应的测试报告

测试报告

测试报告
定制化测试报告展示

解决方案

很多情况下,需要多个测试集共同执行,且共用一套环境及运行参数,对此我们的解决方案是加入测试集解决方案 😓

解决方案
该解决方案还在不断优化中,也就不详细介绍了

以上仅为平台提供的部分功能,其他的像是监控、邮件通知等就不介绍了 。。。

共收到 15 条回复 时间 点赞

老大~有 QQ 号可以一起探讨么?多个测试集共同执行的。目前我这边也遇到

接口测试用例新增,与响应的验证,代码可以分享一下吗

仅楼主可见
弗多 回复

厉害,我之前也想用这 element 的,觉得挺好看的,想问下,你这个一个人做了多久?

simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08
仅楼主可见
simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44

能说说你接口参数中 ${test}值怎么实现的吗,是从哪去取值的

有开源吗?你的这个自动化测试平台好赞,想试用一下

弗多 上海测试沙龙-TesterHome 沪江联合主办 中提及了此贴 03月13日 11:03
弗多 HELLO 2018 中提及了此贴 01月31日 14:59
王十三 回复

公司内部平台有很多定制的不会开源,但部分通用的有考虑剥离出来

大佬,会开源出来吗

rockyrock 回复

前端-vue; web-flask; 数据库-mongo; 任务调度-redis+celery

lsy 回复

明眼人😄 element vue 前端组件

麦子 回复

对的 flask + wsgi + nginx

用了 vue?

@ftopia 后台用的是 flask 吗?生产环境用的是啥 web 服务器和 wsgi server?

采用的技术栈是哪些啊?

—— 来自 TesterHome 官方 安卓客户端

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册