SuperAPI AI 工具集

load-test-builder

测试与质量

查看项目

更新于 10-15 18:37

技能介绍

用途

Load Test Builder 用于创建负载与性能测试,借助 k6、Artillery 或 autocannon 验证系统在真实负载和压力条件下的行为。当用户提出“负载测试”等需求时使用。

核心工作流

  1. 定义场景:用户旅程与负载模式
  2. 设置阈值:性能要求
  3. 配置负载:爬升、峰值、持续时间
  4. 运行测试:执行负载场景
  5. 分析结果:指标与瓶颈
  6. 集成 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 自动化性能门禁

限制

技能资料未提供关于收费、价格、平台支持范围、具体效果保证等信息。实际性能表现取决于被测系统与环境。