测试平台
项目概述
本项目是一个基于微服务架构的企业级接口测试平台,旨在为开发团队提供完整的API测试解决方案。该平台支持HTTP/HTTPS接口测试、WebSocket实时通信测试、自动化测试用例生成、定时执行测试计划、分布式测试执行、智能断言等功能,具备高可用性、可扩展性和易维护性。
技术架构设计
整体架构
- 前端:Vue3 + Arco-Design
- 后端:Spring Cloud Alibaba + SpringBoot + Spring Data JPA +Redis + RabbitMQ
- 测试机:Python及其相关网络库
- 部署:Kuberntes + Docker
微服务架构
- dsg-api-gateway : API网关服务,统一入口和路由分发
- dsg-service-discovery : 基于Nacos的服务注册与发现
- dsg-config-server : 配置中心,集中管理配置信息
- dsg-auth-service : 认证授权服务,JWT令牌管理
- dsg-user-service : 用户管理服务
- dsg-organization-service : 组织架构管理
- dsg-project-service : 项目管理服务
- dsg-test-service : 测试用例管理核心服务
- dsg-execution-engine : 测试执行引擎调度服务
- dsg-report-service:测试结果存储与测试报告通知服务
- dsg-rbac-service:用户组织权限和项目权限的认证与存储服务
- dsg-plugin-service:插件管理服务
- dsg-websocket-service : WebSocket测试专用服务
核心功能
组织-项目-用户
组织包含多个项目和多个用户
项目负责测试用例管理和插件管理
组织管理员可以通过账户邀请用户加入组织,共享组织内的项目
项目支持单独对用户设置权限,用户加入组织后项目级别的默认权限为MEMBER,项目级别支持对用户的多种权限,而且可以自由分配
多协议支持
- 支持HTTP/HTTPS,支持GET、POST、PUT、DELETE等方法
- 插件方式提供WebSocket,支持WebSocket连接和消息测试
- 支持设置请求头、请求体、变量替换等配置,可通过在测试用例中设置全局变量后在具体步骤中使用
测试用例管理
项目分组管理
按项目管理测试用例
可设置简单测试用例和流程测试用例
支持设置
- 测试用例级别:全局变量、用例类型、超时时间、优先级
- 测试步骤级别:是否启用步骤、请求方法与路径、请求头与请求参数、变量提取、断言引擎和前后置脚本
变量提取器通过JSONPath来实现变量的提取和替换断言操作符包括运算操作符、集合操作符、正则匹配三种断言类型包括状态码、响应时间、JSON路径、响应体、响应头、XPATH等
测试用例执行的正确性
测试用例设置了锁,保证一个测试用例如果处于编辑状态,那么其他人将无法进行编辑和测试,保证了测试用例的正确性
执行模块
定时任务调度
基于Quartz调度器和RabbitMQ支持一次性定时任务和Cron表达式周期任务
基于定时任务类型创建两类调度器
- TaskSchedulerJob:负责一次性定时任务的执行,每60s进行一次调度轮询定时任务,调度器数量可根据定时任务数量动态扩展
- CronTaskJob:负责周期任务的执行,每60s进行一次调度轮询,根据合理的Cron表达式来执行任务,调度器数量可根据周期任务数量动态扩展
可正确设置定时任务
周期任务调度器正确发现任务并执行
批量执行
支持多个测试用例的批量执行
测试用例列表有选择框,选择多个测试用例开始测试,只有选择了测试用例后才可使用,否则批量执行按钮置灰
点击批量执行后,测试执行微服务将测试用例集发送至测试节点,与此同时通知报告微服务准备接收测试结果
可以正确实现多个测试用例的批量执行
通知模块
测试的后处理,生成测试报告并存储,并且可通过选择飞书或者邮箱的通知机制实现测试结果的通知
- 支持邮件、飞书通知
- 灵活的通知策略:通知微服务通过缓存的通知选项,结合测试用例实际通知结果来判定是否需要发送报告
以单个简单测试用例执行为例,验证通知功能
选择添加飞书和邮箱的通知 可以正确的发送通知
插件
采用插件式思想提供了Allure报告导出、Pytest自动化用例导出和WebSocket用例测试三个功能
通过项目与插件绑定存储到redis中,每次执行插件相关功能时会验证插件是否开启
- 插件内容较大通过扩展微服务在前端设置入口来控制,如WebSocket,可在此基础上扩展更多协议
- 插件内容过小则通过修改已有微服务并在其微服务内部来设置是否执行
- 前端通过访问插件管理来判断插件的启动状态灵活设置入口
Allure
开启Allure插件后,所有的通知方式从文本方式变成Allure报告
自动化测试用例导出
- test文件夹包括将pytest_case和包含测试用例数据的yaml文件
- utils文件夹包括两大模块:yaml文件的读写和相关报文操作
- 根目录还包括Python相关依赖、pytest配置文件、可供选择的入口函数
WebSocket测试用例
基于执行-测试-通知体系,通过之前预设定的协议字段,可以在不修改执行模块和通知模块的基础上完成对任何协议的扩展,只需实现相应的微服务和测试机支持即可
可以正确的集成到已有的体系
部署
采用固定IP + Kubernetes服务抽象网络架构
- Ingress提供固定外部ip
- 前端、API网关、微服务使用ClusterIP
- 测试执行节点使用NodePort暴露服务
- MySQL、RabbitMQ、Redis部署在固定IP主机
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号