Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API 自动化测试平台

面向团队的 API 测试管理平台,当前已打通“项目与环境 → 接口定义 → 接口用例/场景用例 → 测试执行 → 测试报告 → 数据看板”主链路。

当前能力

  • 项目、成员、环境、接口和目录管理。
  • 接口调试:Query、Header、JSON/raw、form-data,以及持久化文件或本地临时文件上传。
  • 接口用例:只能从接口列表的“添加 Case”入口显式创建,保存成功后形成独立请求快照。
  • 场景用例:同一接口可重复添加,步骤按稳定 instanceId 独立保存和排序。
  • 场景执行:严格顺序执行;一次运行内提取变量可向后共享,不同运行之间完全隔离。
  • 执行与报告:接口用例和场景可组合执行,保存实际请求/响应、耗时和断言结果。
  • multipart 执行:接口调试、场景运行、测试执行和报告链路统一发送真实文件内容。
  • 权限:JWT、操作权限、项目成员角色、资源归属四层校验。
  • 数据看板:统计当前用户可访问项目的接口、用例、今日执行、近 10 次通过率和 14 天趋势。

核心领域边界

概念 含义
接口定义 可复用的协议模板,不等于接口用例
接口用例 从“添加 Case”显式保存的独立快照;保留来源 interface_id,创建后不再实时继承原接口
场景用例 由接口步骤快照组成的有序流程,不会隐式创建 api_case
测试执行 描述执行哪些接口用例/场景、使用哪个环境和如何触发
测试报告 一次运行的不可变汇总及逐请求快照

详细设计见:

技术栈

技术
前端 Vue 3、TypeScript、Element Plus、Pinia、Axios、Vite 5
后端 Spring Boot 2.7.6、Java 8、MyBatis Plus、Spring Security、JWT
数据 MySQL 8.0、Redis
HTTP 执行 OkHttp 4.12
数据库迁移 Flyway V1-V7
API 文档 springdoc / Swagger UI

项目结构

api-test-platform/
├── docs/                         # PRD、系统、数据库、权限和验收文档
├── backend/
│   ├── api-test-common/          # 统一响应、实体基类、异常和 MyBatis 配置
│   ├── api-test-system/          # 当前主应用、业务接口、执行器和报告
│   ├── api-test-engine/          # 执行引擎扩展模块
│   ├── api-test-report/          # 报告扩展模块
│   └── sql/init.sql              # 只负责重建空数据库
├── frontend/                     # Vue 3 SPA
└── README.md

当前开发环境

前后端在本机运行,MySQL 和 Redis 使用远程开发服务。

服务 地址 凭据
前端 http://<FRONTEND_HOST>:<FRONTEND_PORT>
后端 http://<BACKEND_HOST>:<BACKEND_PORT> 平台账号以初始化数据为准
MySQL 8.0 <MYSQL_HOST>:<MYSQL_PORT>/<MYSQL_DATABASE> <MYSQL_USERNAME> / <MYSQL_PASSWORD>
Redis <REDIS_HOST>:<REDIS_PORT> <REDIS_PASSWORD>

MySQL 数据持久化目录由服务器部署配置决定。服务器 SSH 示例:

ssh -i /path/to/<SSH_KEY>.pem -p <SSH_PORT> <SSH_USER>@<SERVER_HOST>

以上凭据仅用于当前开发环境,不应复制到生产配置或公开制品。

本地启动

后端

cd backend
mvn package -pl api-test-system -am -DskipTests

# 只在数据库中不存在 admin 时需要提供
export APP_BOOTSTRAP_ADMIN_PASSWORD='至少12位的初始化密码'
java -jar api-test-system/target/api-test-system-1.0.0-SNAPSHOT.jar

Swagger UI:http://<BACKEND_HOST>:<BACKEND_PORT>/swagger-ui.html

如 macOS 没有全局 Maven,可使用 IntelliJ 内置 Maven,或当前已下载的 /tmp/apache-maven-3.9.9/bin/mvn

前端

cd frontend
npm ci
npm run dev

Vite 将 /api 代理到本地后端,具体地址由前端开发配置决定。

验证命令

cd backend
mvn -pl api-test-system -am test
mvn -pl api-test-system -am package -DskipTests

cd ../frontend
npm run build

数据库迁移

表结构由 backend/api-test-system/src/main/resources/db/migration 中的 Flyway V1-V7 管理。不要在 DataInitializer 或业务代码中直接建表。

仅在明确允许清空全部数据时执行:

mysql -h <MYSQL_HOST> -P <MYSQL_PORT> -u <MYSQL_USERNAME> -p < backend/sql/init.sql

接口、接口用例、场景步骤、执行计划和报告都属于用户数据;不得因为看起来像示例数据就自动清理。接口用例只能由“添加 Case”保存成功创建,也只能由用户明确删除或受控的数据迁移删除。

权限编码

前后端统一使用 resource:action

  • dashboard:view
  • project:list/create/read/update/delete/member:manage
  • interface:read/write/debug
  • case:read/write/run
  • suite:read/write/run
  • environment:read/write/debug
  • execution:read/write/run
  • report:read/export/delete
  • system:user:read/write/reset-password
  • system:role:read/write
  • mock:read/write

前端权限只控制可见性和交互,后端 @PreAuthorize 与项目归属校验才是安全边界。

实现状态

能力 状态
接口、接口用例、场景、环境管理 已实现
文件上传与 multipart 全链路 已实现
顺序执行、变量提取与运行隔离 已实现
RBAC 与项目数据隔离 已实现
执行报告、最近通过率、14 天趋势 已实现
Mock 服务、导入导出、报告 PDF/HTML、集群任务队列 规划中

About

API testing platform with interface, scenario, execution, report, environment and permission management

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages