本目录包含用于 JMeter Toolkit 测试的示例服务器和 JMX 文件。
一个简单的 FastAPI 服务器,提供多种 API 端点用于测试:
基础端点:
GET /- 根路径GET /health- 健康检查
用户管理 API:
POST /api/users- 创建用户GET /api/users- 获取用户列表GET /api/users/{id}- 获取指定用户PUT /api/users/{id}- 更新用户DELETE /api/users/{id}- 删除用户
订单管理 API:
POST /api/orders- 创建订单GET /api/orders- 获取订单列表GET /api/orders/{id}- 获取指定订单
认证 API:
POST /api/login- 用户登录
特殊测试端点:
GET /api/slow- 慢接口(1-3秒延迟)GET /api/error- 随机错误接口POST /api/upload- 文件上传模拟GET /api/stats- 统计信息
包含完整的 JMeter 测试计划:
主要测试线程组:
- 5个并发用户
- 每个用户执行3次循环
- 10秒内启动所有用户
测试步骤:
- 健康检查
- 用户登录
- 创建用户
- 获取用户信息
- 创建订单
- 获取用户列表
- 获取统计信息
压力测试线程组:(默认禁用)
- 20个并发用户
- 每个用户执行10次循环
- 专门测试慢接口
-
启动被测试服务器:
# 在终端1中启动测试服务器 ./start_test_server.sh # 或者直接运行 python test_server.py
-
启动 JMeter Toolkit:
# 在终端2中启动 JMeter Toolkit ./start_dev.sh # 或者 UV_INDEX_URL=https://pypi.org/simple uv run python main.py
-
上传并执行 JMX 文件:
- 访问 http://localhost:8000
- 上传
sample_test.jmx文件 - 点击执行测试
- 查看测试结果和报告
-
启动 Docker 服务:
docker-compose up -d postgres redis
-
设置环境变量并启动:
export DATABASE_URL=postgresql://jmeter:jmeter@localhost:5432/jmeter_toolkit export REDIS_URL=redis://localhost:6379/0 # 启动测试服务器(终端1) python test_server.py # 启动 JMeter Toolkit(终端2) python main.py
- 验证各个 API 端点的基本功能
- 检查请求和响应的正确性
- 验证用户登录和数据创建流程
- 测试并发用户访问
- 测量响应时间和吞吐量
- 识别性能瓶颈
- 测试系统在高负载下的表现
- 验证错误处理机制
- 测试慢接口的处理能力
- 所有 API 调用应该成功(HTTP 200)
- 断言检查全部通过
- 响应时间在合理范围内
- 平均响应时间:< 500ms(除慢接口外)
- 错误率:< 1%
- 吞吐量:根据并发用户数而定
-
编辑 JMX 文件中的变量:
BASE_URL: 修改目标服务器地址USERNAME/PASSWORD: 修改登录凭据- 线程数、循环次数、启动时间等
-
添加新的测试用例:
- 复制现有的 HTTP 请求
- 修改路径、方法和参数
- 添加相应的断言检查
- 在
test_server.py中添加新的端点 - 实现相应的业务逻辑
- 在 JMX 文件中添加对应的测试请求
-
连接被拒绝:
- 确保测试服务器在端口 3000 运行
- 检查防火墙设置
-
认证失败:
- 检查用户名密码是否正确
- 确认登录 API 正常工作
-
测试超时:
- 检查网络连接
- 调整 JMeter 超时设置
-
断言失败:
- 检查 API 返回的响应格式
- 确认断言条件是否正确
测试服务器会输出详细的访问日志,包括:
- 请求时间和路径
- 响应状态码
- 处理时间
- 使用 "View Results Tree" 查看详细请求/响应
- 使用 "Summary Report" 查看汇总统计
- 使用 "Aggregate Report" 查看聚合数据