面向团队的 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.jarSwagger 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 devVite 将 /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:viewproject:list/create/read/update/delete/member:manageinterface:read/write/debugcase:read/write/runsuite:read/write/runenvironment:read/write/debugexecution:read/write/runreport:read/export/deletesystem:user:read/write/reset-passwordsystem:role:read/writemock:read/write
前端权限只控制可见性和交互,后端 @PreAuthorize 与项目归属校验才是安全边界。
| 能力 | 状态 |
|---|---|
| 接口、接口用例、场景、环境管理 | 已实现 |
| 文件上传与 multipart 全链路 | 已实现 |
| 顺序执行、变量提取与运行隔离 | 已实现 |
| RBAC 与项目数据隔离 | 已实现 |
| 执行报告、最近通过率、14 天趋势 | 已实现 |
| Mock 服务、导入导出、报告 PDF/HTML、集群任务队列 | 规划中 |