Alex接口自动化平台

-
JAVA、VUE
Windows、Linux
cheunghr · 2023年01月12日 · 8900 次阅读 · 5 条评论

开源一款接口自动化平台,支持自动生成测试用例、MOCK 等功能。平台其实已经写好蛮久了,之前一直在 coding 托管,最近迁移至 github 公共仓库

1.地址

演示地址:http://42.194.187.183:7778/#/ youke/admini0
开源地址:https://github.com/Biexei

2.运行环境

基于 vue+elemui+java+mysql
jdk1.8、nodejs12.19.0、mysql8、python3.6.5、redis3.2.100

3.功能简介

  1. 用例支持 har/json/yaml/excel/csv 导入
  2. 支持根据等价类,边界值,正交法,笛卡尔积自动生成测试用例,且支持动态数据,数据来源支持数据库
  3. 测试套件支持并行,大幅提升测试效率,生成的测试报告美观,报表数据丰富
  4. 定时任务支持动态启停,配置
  5. 支持在线配置代理
  6. 动态 mock 服务,无需启停服务,且支持请求转发
  7. 丰富的断言策略,目前已支持 jsonpath,xpath,header,code,响应耗时
  8. 支持接口间数据依赖,方便测试流程
  9. 数据中心支持接口依赖,sql 依赖,反射方法。解决数据依赖,数据加密的痛点
  10. 稳定性测试

4.主要功能

4.1 测试数据

目前支持了四种测试数据的来源,第一种是基于 jsonpath 从接口返回值提取数据,第二种是通过 SQL 查询语句,第三种是基于内置的反射方法,第四种是基于固定值。采取 ${xxx}语法表达式提取

  • 基于 jsonpath 从接口返回值提取数据
  • 通过 SQL 查询语句
  • 基于内置的反射方法
  • 基于固定值

4.2 自动生成测试用例

自定义了一套生成用例的约束,根据约束填写模板,将会产生标准的测试用例文件,而后再导入至平台即可

  • 以自动生成用户注册接口测试用例为例。支持生成正交测试用例,也可以生成全量的笛卡尔积测试用例。同时为了保证用例的可复用性,支持生成动态测试数据(如用户注册生成的用户名具有唯一性,这就需要保证每次生成的用户名都是唯一的)
    • 生成的用例如下

4.3 用例执行

支持串行、并行,两种策略可自行保证用例的执行顺序 or 高效运行。

以及还算丰富的测试报告

4.4 Mock

mock 基于 java 的 mock-server。目前支持多节点(可方便不同人员调试相同接口地址),以及丰富的命中策略



4.4 常见问题

一. 如何保证用例之间的数据关联关系?


目前可采取两种方式解决用例间的数据依赖问题
1.数据中心 - 接口依赖创建

  • 举个栗子,添加用户需要用到登录成功返回的 token 字段
  • 第一步先创建一个登录成功的接口
  • 第二步在数据中心 - 接口依赖创建选择该接口,并提取 token 字段
  • 第三步通过 ${token}引用


2.配置前置用例

  • 第一步先创建一个登录成功的接口,并为其配置响应数据缓存
  • 第二步为需要关联的用例选择前置用例
  • 第三步通过 #{token}引用

存在两种方式主要是为了减少重复请求次数,以及确保数据的一致性,如需要前置接口返回的多个数据,通过第一种方式则会在需要数据的时候就请求一次,而通过第二种方式则无论需要前置接口的多少个请求数据,都只请求一次

二. 数据加密如何处理?


通过反射方法的形式,可自定义方法处理加密(统一处理类:org.alex.platform.common.InvokeCenter),目前仅提供 md5 哈希



三. 如从 TEST 环境切换到 STG 环境,是否需要编写多套用例?

不需要。系统在创建项目时已强制为每个环境配置 host 和 domain,目前支持 5 种环境。即使在用例中引用了数据库也无需担心环境问题


在执行测试套件时可指定运行环境



四. mock 是否支持请求转发?

支持。举个例子,第一步:配置请求转发

第二步:试验。可以看到/user/list 接口已经转发至真实接口


评论列表
楚人阿飞 发表于 2024年02月27日

有两点疑问:
1、貌似不支持链路
2、每套环境怎么单独设置请求参数

菜鸟 发表于 2023年06月23日

开源的吗,大佬

发表于 2023年06月12日

t_interface_processor 表的 name 重名判断是因为什么,代码和表都做了限制。如果去掉会有什么影响

cheunghr 发表于 2023年02月10日

你好,关键的方法均有注释

TJxxx 发表于 2023年01月30日

可以添加一下每个类和接口具体功能的注解吗?对新人可以友好一点