一、测试目标
- 验证接口在 1000+ QPS 下的稳定性
- 确定接口的响应时间 P95 < 500ms
- 检测服务器资源(CPU/MEM/网络)消耗情况
- 发现潜在的并发问题(如数据库锁、资源竞争)
二、测试工具选择
推荐使用 Locust + Prometheus + Grafana 组合:
- Locust:分布式压测,Python脚本易维护
- Prometheus:实时监控服务指标
- Grafana:数据可视化展示
三、测试脚本开发(Python + Locust)
from locust import HttpUser, task, between
import time
import random
class LocationUser(HttpUser):
wait_time = between(0.1, 0.5)
# 动态参数生成
def random_coords(self):
return {
"latitude": 21.618187 + random.uniform(-0.01, 0.01),
"longitude": 110.253484 + random.uniform(-0.01, 0.01),
"speed": random.randint(0, 120),
"accuracy": 25
}
@task
def upload_location(self):
headers = {
"Authorization": "Jxy your_valid_token_here",
"Content-Type": "application/json"
}
payload = {
"trace": self.random_coords(),
"order_id": f"D20250411{int(time.time()*1000)}",
"order_status": 2,
"uploadLocationType": "amap",
"timestamp": self.generate_timestamp()
}
self.client.post(
"/",
json=payload,
headers=headers,
name="upload_location"
)
def generate_timestamp(self):
return time.strftime(
"%a %b %d %Y %H:%M:%S GMT+0800 (CST)",
time.localtime()
)
命令行执行方式(无界面模式)
安装依赖
pip install locust prometheus-client requests
运行测试脚本
locust -f test.py --headless --users 2000 --spawn-rate 100 --run-time 30m --host http://xx.com
有界面执行
locust -f test.py
界面参数说明
参数项 | 推荐值 | 说明 |
---|---|---|
Number of users | 2000 | 最大并发用户数 |
Spawn rate | 100 users/second | 每秒新增用户数 |
Host | http://xx.com | 被测服务地址 |