用途
Load Test Builder 用于创建负载与性能测试,借助 k6、Artillery 或 autocannon 验证系统在真实负载和压力条件下的行为。当用户提出“负载测试”等需求时使用。
核心工作流
- 定义场景:用户旅程与负载模式
- 设置阈值:性能要求
- 配置负载:爬升、峰值、持续时间
- 运行测试:执行负载场景
- 分析结果:指标与瓶颈
- 集成 CI:自动化性能门禁
主要能力
k6 负载测试
安装方式:
# macOS
brew install k6
# Docker
docker pull grafana/k6
技能提供多种 k6 测试脚本示例:
- 基础负载测试:包含自定义指标(errorRate、responseTime)、stages 配置、thresholds 阈值(如 p(95)<500、p(99)<1000、http_req_failed rate<0.01、errors rate<0.05),以及对首页和 API 的请求与检查。
- 用户旅程测试:使用 SharedArray 加载用户数据,通过 scenarios 配置 ramping-vus 执行器,按 group 划分登录、浏览产品、结账等步骤,并针对各 group 设置阈值。
- 压力测试:多阶段逐步提升负载至 400 用户,再恢复至 0,阈值 p(99)<1500、http_req_failed rate<0.05。
- 尖峰测试:快速爬升至 1000 用户并保持,再回落。
- 浸泡测试:持续 8 小时 100 用户的负载,阈值 p(95)<500、http_req_failed rate<0.01。
Artillery
安装:npm install -D artillery
技能提供 YAML 配置示例,包含 phases(warm up、normal load、spike、cool down)、defaults、plugins(expect)、ensure(p99、maxErrorRate)以及 scenarios 中的用户旅程流程(GET /、GET /api/products、GET /api/products/{{ productId }}、POST /api/cart),并支持 capture 提取变量。
还提供自定义函数(processor.js)示例:generateUser、logResponse、validateCheckout,以及在 YAML 中通过 processor 和 function/afterResponse 引用。
autocannon(Node.js)
技能提供 TypeScript 脚本示例,配置 url、connections、duration、pipelining、headers 和 requests 数组,运行后打印结果,并根据 latency.p99 和 errors 进行校验,失败时以非零状态退出。
CI 集成
提供 GitHub Actions 工作流示例(.github/workflows/load-tests.yml),支持定时(每日 2 AM)和手动触发,包含安装 k6、等待应用就绪、运行负载测试、上传结果、在 PR 中评论等步骤。
结果分析
提供 scripts/analyze-results.js 示例,从 results.json 中提取 totalRequests、avgDuration、p95Duration、p99Duration、errorRate、throughput,并以表格输出,同时根据阈值判断通过与否。
使用方式
根据项目技术栈选择 k6、Artillery 或 autocannon,按技能提供的示例编写测试脚本或配置文件,设置合理的负载阶段与性能阈值,运行测试并分析结果,最后将测试集成到 CI 流程中。
适用场景
- 在开发或发布前评估系统性能
- 发现性能回归
- 验证容量规划
- 模拟真实用户旅程进行端到端性能验证
- 通过 CI 自动化性能门禁
限制
技能资料未提供关于收费、价格、平台支持范围、具体效果保证等信息。实际性能表现取决于被测系统与环境。