OBJUI

Python压测脚本测试接口方案设计与实施

2025-04-11 19:55:05 70

一、测试目标

  1. 验证接口在 1000+ QPS 下的稳定性
  2. 确定接口的响应时间 P95 < 500ms
  3. 检测服务器资源(CPU/MEM/网络)消耗情况
  4. 发现潜在的并发问题(如数据库锁、资源竞争)

二、测试工具选择

推荐使用 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 被测服务地址
更多精彩,请关注公众号

微信公众号