接口测试 开源一款接口自动化平台

cheunghr · 2023年01月09日 · 最后由 chunihs_zzz 回复于 2024年03月29日 · 13584 次阅读

开源一款接口自动化平台,支持自动生成测试用例、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 接口已经转发至真实接口


共收到 43 条回复 时间 点赞

感谢楼主分享

python 是哪里的功能用到了?

冯先生 回复

正交算法用的 python 的一个库

后端项目能适配一下 idea 吗,导入不能直接识别 spring boot 项目启动

仅楼主可见
冯先生 回复

后端是用 idea 开发的

wwtest 回复

对的

mark,找时间学习下开源代码

@chenhengjie123 版主老大,这个能收录到开源项目嘛

cheunghr 回复

可以呀,你在开源项目版块提交一下项目就好,我们审核内容 OK 后就可以发布,完成收录。

陈恒捷 回复


好像弄不了

cheunghr 回复

已经上传了封面图片

怎么部署啊 大佬 有教程吗

前端:
1.npm install
2.npm run dev

后端:
1.mvn clean install
2.java -jar jarName.jar

cheunghr 回复

你有选择了封面图片文件吗(jpg 格式)?

正常选择文件后,应该会变成这样,选择按钮右侧变为选择的文件名:

我用的 chrome 版本:Version 108.0.5359.124 (Official Build) (x86_64)
系统:macos 12.1

如果选择文件后,还是没有这么展示,麻烦同步下你的浏览器、操作系统等版本信息吧。

陈恒捷 回复

好像是第一次上传出错(上传的 icon 格式),后面在调整为正确格式(png)也报错。重新打开页面上传正确格式就好了。chrome 版本 108.0.5359.125

大佬,演示项目地址访问不通呀😳

圆滚滚 回复

我刚才试了是通的呀

退之 回复

有你想要的自动生成测试用例😀 😀

cheunghr 回复

哈哈,终于看到了实际的东西,这个找了半天都没找到,我自己也弄了一个,根据定义的规则自动生成一些参数化的测试数据。下来再好好研究下你的这个!👍

23楼 已删除

注册的账号由于未分配角色导致没有权限。你可以使用 youke/admini0 进行测试

23楼 已删除

admini0 吧,或者你去看下登录逻辑是用的 md5+ 盐

cheunghr 回复

好的,感谢

请问 断言能给个示例、截图吗?🙏

cheunghr 回复

收到,感谢

30楼 已删除

大神,能兼容 mysql5 吗

夜月如风 回复


包含 header body httpcode responsetime 的断言,你看一下

sunday 回复

应该兼容。你可以试一下

14楼 已删除

您好,测试套件,怎么使用,里面好像没法选择用例,我理解有误吗

sunday 回复

这样子


终于见到大佬了。

你好,有安装教程吗?

您好 你这个引用每次都会新请求一次吗?比如我要上一个接口的数据 下个接口引用的时候就不是上个接口的 而是新请求了一次。

Felling123 回复

请问有方法可以避免吗

Felling123 回复

可以通过前置用例的方式避免。

Felling123 回复

1.用例响应数据缓存(可以缓存多个值)

2.设置前置用例

3.引用响应数据缓存

测试套件怎么使用

麻烦问下这个工程运行貌似木看到请求执行那个用例怎么和 Mock 录入规则匹配

有碰到我这个问题吗?postman 和浏览器查看这个接口返回数据都正常,通过这个库之后乱码

请问怎么安装?可以提供建表语句吗

真的太感谢了

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