前言:市面上有很多开源的接口测试平台,各有所长。平台化的目的是易于维护和操作。Down 能够更加符合测试人的操作行为,像维护功能用例一样维护接口用例。

技术架构

Down 采用了 Django rest framework 作为后端 web 框架,尊重 restful 接口标准,可按照模型生成对应 swagger 文档,方便开发者进行平台接口调试。

前端采用了 React 库 (初学者不要轻易尝试) 进行编写,引用目前较流行的后台管理组件库 Ant Design,页面写的不好,请各位大佬轻喷。但交互是相对友好的(毕竟自己不但是个测开,还是个测试人员,做出来连自己都用的不顺手就不合适了。)

异步任务管理组件为 Celery,熟悉 python web 框架的不会对这个库陌生,可结合 django_celery_results 在 django-admin 查看管理后端任务执行和 log。并结合 django_celery_beat 完成定时任务调度。

功能简介

功能模块脑图

1 接口管理

讲道理,我 hate 配置接口,要调试一个接口,需要在 postman 中维护一堆接口配置信息,维护 query 参数,还不能出错,让人疯癫。我只想填参数值,然后点击调试。 只要遵循 restful 的接口标准,可以在 Down 中进行 OpenAPI 导入,自动生成当前项目对应接口。

导入后只需要配置好对应接口环境,就可以对接口进行在线调试了。

tip:回调参数设置完成之后,根据填写的 jsonpath 语法,可以对接口参数进行取值展示在回传值中。这个功能待会在用例配置中会说到。

2 环境管理

接口是不会单单纯纯的开放给各位进行随便调用的,多多少少都有鉴权这块的校验,讲白了就是需要用用户名密码去换取对应接口的通行证。如何在接口测试系统中去跨过这道坎,我觉得是很关键的。

在 Down 中,我用的是环境 + 鉴权环境 +UDF 自定义函数的方式进行管理,将 UDF 调用鉴权返回的序列化参数存储在 redis 或是数据库后端中。在调用接口的同时调取 redis 或是数据库中的记录,直接拿到对应通信证,便不需要再接口调用中去实时获取 token 值放入接口 header 中调试。

UDF 函数定义(直接调用存储序列化鉴权结果)

3 用例管理

用例基本信息配置

3.1 步骤类型:接口执行

接口执行步骤可根据配置接口进行直接测试调用,方便接口步骤配置调试。

根据上下文需要获取传递的参数进行回调参数配置,回调参数采用 jsonpath 语法获取。
并将参数调用名填写到对应接口参数中。

断言取值同时也是按照 jsonpath 语法取值,通过多种断言方式进行断言。断言失败则当前用例执行失败。

3.2 步骤类型:SQL 执行/查询

sql 执行查询,可对配置权限下对应表和数据进行操作,数据库读写返回结果封装为 json 返回,依然可以沿用其他步骤 jsonpath 取值和断言,方便步骤连续。

sql 查询

sql 执行异常返回

3.3 步骤类型:轮询

轮询接口,有些接口发送请求后后台结构并非马上执行完,如果单纯的只是做一个暂停时间来判断是否正常执行完成,无法做到准确性那么高,本步骤通过设置轮询次数和轮询间隔来判断某些异步任务是否执行完成。

通过设置轮询退出条件设置,当轮询退出条件所有满足的时候,则退出当前轮询,否则按照设置的次数和间隔直到次数完成,退出轮询后会进行回调函数取值和断言执行

3.4 步骤类型:回调列表循环

在回调参数中,获取的值为一个列表,需要循环对一个列表的值进行取值。进行列表循环取值,并将值分别传入接口作为接口参数,可利用一个回调列表进行多接口单独传参执行,循环列表值。

回调参数列表内容为字符串列表则无需设置循环键 (替换参数为回调参数"__list__.item"),如果回调参数列表为对象列表则需要设置对象取值键以及替换参数 (参照"_id_"格式)

3.4 步骤类型:等待时间

字面意思:等待 n 秒

4 日志管理

根据执行结果可查看对应用例执行结果日志,耗时,条数,断言验证等。

用例日志列表

用例详细日志

5 套件管理

测试套件日志

😄平台为个人自研开发,如有做的不合理的,各位大佬轻喷,欢迎在评论区讨论。后续会考虑开源,请耐心等待。感谢多位小伙伴对 Down 的关心与支持。

特别感谢 woody 哥,提供被测项目 pity 平台。打一波广告pity-github

在线体验地址

Down 测试平台

账户名、密码:tester/test@123456

欢迎创建项目进行验证。


↙↙↙阅读原文可查看相关链接,并与作者交流