测试平台架构图
2025-06-17 17:10:34 7 举报
参考测试之家的平台设计
作者其他创作
大纲/内容
TestCase SetUp Code
TestCase SetUp Hook
链路追踪OpentracingJaeger
Mitmproxy
Check if skip ( TestCase )
流量控制APILimiterRedis Lua
数据层
Check if skip ( TestStep )
结束
Xmind
AIORedis
开始
JSON-Schema
分布式压测
step
产品环境配置模块
Dynamic Callback
Prometheus Grafana
输出流管理 - 伪代码示例
Dynamic Mixins
TestStep Variables
LocustMaster
SQLAlchemy
TestCase
RESTful
Chrome Extension
TestStep 1
前端代码分析模块
日志记录MQ
WebHook
流量分析模块
初始化线程级变量
Chrome CDP
TestStep 3
UI Testing
用例转换模块
Stress Testing
Issue
定时任务、部署任务触发测试执行
S3
Thread Variables
SSL Check
端到端工作流程
1. 数据准备阶段数据结构:使用 Redis 的 List 存储账号队列(先进先出)。操作:通过 Python 脚本预生成账号并推送到 Redis。2. Locust 测试脚本Slave 初始化:每个 Slave 启动时从 Redis 获取一个账号(原子操作)。任务执行:用获取的账号调用登录接口。异常处理:账号耗尽时停止测试。3. 分布式执行流程3.1 启动 LocustMaster:启动、协调任务,不执行实际请求。 locust -f locustfile.py --masterSlave(启动 3 个 Worker): locust -f locustfile.py --worker --master-host=localhost3.2 运行时行为Slave 1 启动,从 Redis LPOP 获取 testuser_1,执行登录。Slave 2 启动,获取 testuser_2,执行登录。...当某个 Slave 尝试获取账号但 Redis 队列为空时,触发 runner.quit(),该 Slave 停止。Master 监控所有 Slave 状态,最终生成聚合报告。4. 关键问题与解决方案4.1 如何避免账号重复分配?Redis 的 LPOP 是原子操作,确保即使多个 Slave 并发获取数据,也不会分配同一账号。4.2 如何动态监控剩余账号?在 Locust 的 Web UI 或日志中观察 Redis 队列长度:span style=\
Job Scheduler
SkyWalking
TestSuite Queue & Global Queue
Extract
执行完成后,消息推送,测试报告落库,平台前端展示
TestSuite
维护环境、测试数据
WebSocket
Swagger
APScheduler
Unit Test
Dynamic Plugin
MockJs
Plan
RabbitMQ
覆盖率分析模块
Queue ThreadPool
看板模块
VNC Terminal
Debug Variables
Tools
前后置模块
S4
case thread 1
消息
转换、编写测试用例
import subprocessfrom threading import Threaddef run_test_case(case_id): \"\"\" 将子线程的输出重定向到缓冲区 :param case_id: :return: \"\"\" # 启动子进程并重定向输出 process = subprocess.Popen([\"python\
S2
S1
变量查找顺序
Redis
cURL
Env Variables
Selenium
Aggregate report
Docker Manager
API Testing Detail
TestStep TearDown Hook
接口请求模块
该部分本质是 多线程环境下的输出流管理和日志聚合,通过重定向和异步读取实现:隔离性:每个用例的输出独立。可追溯性:日志与用例关联。扩展性:平台可对输出进一步处理(如告警、分析)。
JSON-Schema validate
Python Script
接口
POST GET PUT DELETE
Parse API Request
输出流管理、日志聚合
ThreadPool
S5
UI Recorder
case thread 2
Redis 的作用:中央化的动态数据池,解决分布式环境下数据共享的竞争问题。Locust 的协作:Slave 按需获取数据,无需预分配,最大化资源利用率。适用场景:需要参数化、数据唯一性或动态调整的压测(如秒杀、注册、登录)。扩展思考:如果测试需要更复杂的数据(如依赖 token),可以在 Redis 中用 Hash 存储账号状态(例如 user:1001:token)。
Zalenium
API Testing
辅助函数模块
Convert
DUBBO
报告模块
Runner
PIL ImageChops
Send Request
测试平台核心功能架构
JsonPath & Re
Celery
初始化环境变量
测试平台架构
HTTP
前端
FastAPI Router
Process Manager
权限控制RedisToekn
Git Diff
Generate cURL Obj
Performance Testing
Diff image
EventBus
Assert validate
TestStep TearDown Code
Case
HAR
TestCase Variables
stdout redirectorstdout redirector
服务层
Review
TestStep 2
MQTT Pub/Sub
流程用例编写模块
Slave
Vue & Element UI Plus
异步校验事件模块
case thread 3
Trace
初始化TestCase级变量
OutputBuffer
Dynamic Teatdown Script
MySQL
HTTPS
JMeter
Report
Mock
0 条评论
下一页