test framework-14-测试平台聊一聊整体的架构设计
2016年4月26日大约 5 分钟
前言
测试平台最强大的一个设计应该是流程控制。
测试平台的用户群体是测试,知道一些简单的判断,但是编程能力一般。
所以我们需要设计一个流程控制的系列组件,让测试拥有近似于开发的编程能力。
chat
架构设计
好的!下面是针对“一体化测试平台”的架构设计方案,适用于覆盖基本功能测试、全链路测试和性能测试的系统,结合你 Java 后端 + Vue 前端的技术栈,设计成模块化、可扩展、高可用的架构。
一体化测试平台架构设计方案
1. 架构目标
- 支持多类型测试(接口、UI、性能、全链路)
- 支持复杂测试流程控制(执行树/流程编排)
- 高并发、多租户和分布式执行能力
- 易扩展、易维护,支持插件化机制
- 良好的可观测性和自动化集成能力
2. 架构总览图
+------------------------------------------------------------+
| 前端应用 (Vue) |
| - 用例管理、流程编排、执行控制、报告查看、环境管理 UI |
+-------------------------------+----------------------------+
|
| RESTful API / WebSocket
|
+-------------------------------v----------------------------+
| 后端服务层 (Spring Boot) |
| - 业务API服务 |
| - 权限认证(RBAC) |
| - 用例与流程管理 |
| - 测试环境与变量管理 |
| - 报告与日志管理 |
| - 任务调度(Quartz / 自研调度模块) |
| - 插件管理 & 执行引擎入口 |
+-------------------------------+----------------------------+
|
| 内部RPC / 消息队列
|
+-------------------------------v----------------------------+
| 测试执行引擎集群 |
| - 多节点分布式执行 |
| - 各类插件(HTTP、Dubbo、MQ、SQL、Shell、脚本等) |
| - 执行上下文与变量管理 |
| - 失败重试、错误捕获 |
+-------------------------------+----------------------------+
|
| 资源访问(DB、MQ、文件系统等)
|
+-------------------------------v----------------------------+
| 外部资源与基础设施 |
| - 关系数据库(MySQL/PostgreSQL) |
| - 消息队列(Kafka/RabbitMQ) |
| - 文件存储(MinIO / NFS) |
| - 监控系统(Prometheus + Grafana) |
| - 日志系统(ELK / Loki) |
+------------------------------------------------------------+
3. 关键模块设计
3.1 前端应用
技术栈:Vue 3 + Vuex + Vue Router + Element Plus
核心功能:
- 测试用例编辑与管理
- 执行树/流程设计器(树形结构编辑,拖拽节点)
- 测试任务管理(触发、停止、查看进度)
- 报告与日志浏览
- 用户权限管理界面
- 环境配置与变量管理
3.2 后端服务层
技术栈:Spring Boot + Spring Security + MyBatis / JPA + Redis
职责划分:
API 网关与认证:OAuth2 / JWT,保证安全访问
业务逻辑服务:
- 用例和流程管理
- 测试计划与调度
- 变量与环境配置管理
- 报告生成与存储
- 审计日志和权限控制
任务调度模块:
- 通过 Quartz 或自研调度模块管理测试任务执行时机
执行引擎协调:
- 接收执行请求,分发给执行引擎集群
- 汇总执行结果,更新状态和报告
3.3 测试执行引擎集群
特点:
- 可水平扩展,多节点并行执行
- 独立部署,灵活扩容,减轻主服务压力
功能:
- 递归执行“执行树”结构
- 动态加载对应插件(HTTP、Dubbo、MQ、SQL、Shell、脚本等)
- 变量上下文管理,支持流程内变量传递和提取
- 错误捕获与重试机制
- 执行日志与状态实时上报后端
技术实现建议:
- Java 进程,插件通过 SPI 加载
- 可使用 gRPC 或 HTTP 作为与后端的通信协议
- 支持容器化部署,结合 Kubernetes 进行管理和自动扩缩容
3.4 数据存储与基础设施
关系型数据库:
- 存储用例、流程定义、用户权限、测试报告元数据等
缓存系统(Redis):
- 缓存热点数据、执行上下文快速存取、分布式锁等
消息队列:
- 用于异步任务调度、执行引擎间通信、日志收集
文件存储:
- 存放测试过程中产生的文件(截图、日志、性能数据)
监控与日志:
- Prometheus + Grafana 监控服务状态
- ELK 或 Loki 集中日志管理
4. 关键技术点
技术点 | 说明 |
---|---|
插件化架构 | 扩展不同测试类型插件,保持核心执行引擎轻量灵活 |
执行树流程控制 | 支持条件分支、循环、并发,实现复杂业务流程自动化 |
分布式调度 | 保证任务负载均衡与高可用,防止单点瓶颈 |
变量和上下文管理 | 跨步骤传递变量,支持复杂断言和数据提取 |
安全机制 | 细粒度权限控制,审计日志,数据加密传输 |
自动化集成 | CI/CD 触发,Webhook 支持,开放 API |
5. 可扩展性与高可用设计
模块化开发,微服务拆分可选(根据团队规模和项目演进)
水平扩展:
- 测试执行节点支持动态增减
- Redis 分布式锁和消息队列保障任务一致性
容器化:
- 前后端及执行引擎均容器化,结合 Kubernetes 实现自动部署与弹性伸缩
备份与恢复:
- 数据库和文件存储定期备份
日志与监控:
- 全链路日志采集与监控,及时预警
6. 开发部署建议
- 采用 CI/CD 实现平台自身自动化交付
- 设计阶段重点完成核心流程执行引擎与用例管理模块
- 逐步完善性能测试、全链路测试、通知告警等能力
- 初期可先用单体架构开发,逐步演进至微服务架构
参考资料
贡献者
binbin.hou