用途
Locust 最佳实践技能面向使用 Python 编写负载测试脚本的开发者与测试人员,帮助其编写、修复和结构化 Locust 脚本。它针对 HTTP/REST API 场景,强调真实用户行为、自定义负载形状与正确的响应校验,并强制采用一致、可上生产的脚本模式。
主要能力
该技能在生成或修复 locustfile 时,始终交付三样内容:一份完整可运行的 locustfile(而非片段)、包含全部所需参数的精确运行命令(--headless、-u、-r、-t、--host),以及一行关于所选 wait_time 策略及其为何契合负载目标的说明。
脚本必须遵循四段式结构:
- 第 1 段:导入与配置(locust 导入、常量、环境变量)
- 第 2 段:用户类(HttpUser,含 host、wait_time、on_start、@task 方法)
- 第 3 段:负载形状(可选,LoadTestShape 用于自定义爬坡曲线)
- 第 4 段:运行命令(以注释形式置于文件底部的 locust CLI 及全部参数)
使用方式
技能首先收集上下文,仅询问未知信息:目标(新建 locustfile、修复现有文件或特定 API 问题)、协议(HTTP/REST 默认、WebSocket、gRPC)、工作负载(固定并发用户还是固定到达率 RPS)、认证方式(无、启动时登录、从环境变量取令牌)、数据来源(静态、CSV 文件、按用户生成)。
仅在用户询问自定义负载配置、多阶段爬坡、尖峰模拟或 LoadTestShape 时,才加载 references/SHAPES.md;仅在涉及 WebSocket、gRPC 或非 HTTP 协议时加载 references/PROTOCOLS.md;仅在询问项目结构、多用户类、TaskSet、共享认证辅助、大规模 CSV 数据加载、模块化 locustfile 或多文件组织时加载 references/DESIGN-PATTERNS.md;仅在询问 headless 模式、CI/CD 集成、退出码、基于 SLA 的构建失败、分布式测试、master/worker 设置、多核、日志写入文件或自定义日志级别时加载 references/RUNNING.md。
HttpUser 规则包括:始终使用 catch_response=True 校验响应体,而非仅依赖 HTTP 状态;用 name= 归并动态 URL,避免统计表被参数化路径淹没;在 on_start 中为每个虚拟用户独立认证,绝不跨用户共享令牌;根据负载目标选择 wait_time(模拟真实用户思考时间用 between(1,5),维持固定 RPS 用 constant_throughput(2),复现精确节奏用 constant(1),绝不使用 constant(0));用 @task 权重反映真实流量分布。
适用场景
适用于编写或修复 Locust 负载测试脚本、构建 HTTP/REST API 压测、模拟真实用户行为、设计自定义负载曲线、进行响应校验,以及将 Locust 集成到 CI/CD 或分布式测试环境等场景。
限制
该技能主要面向 HTTP/REST 协议,WebSocket、gRPC 等非 HTTP 协议需参考额外文档。FastHttpUser 虽更快,但不支持 requests 的全部特性(如 cookie jar、部分认证辅助),仅当确认瓶颈在测试运行器本身而非目标系统时才应使用。资料未提供该技能的收费、价格或平台信息。