SuperAPI AI 工具集

k6-load-testing

测试与质量

查看项目

更新于 10-16 15:02

技能介绍

用途

k6 用于负载测试(load testing)、性能测试(performance testing)与 API 压力测试(stress testing)。当需要评估 API 或服务在并发访问下的响应表现、错误率与吞吐能力时,可编写 k6 脚本并执行,通过阈值判断是否达到预期质量标准。

安装与验证

  • macOS:brew install k6
  • Debian/Ubuntu:添加 k6 仓库后 sudo apt-get install k6
  • Windows:choco install k6
  • Docker:docker run --rm -i grafana/k6 run - <script.js
  • 验证版本:k6 version

主要能力

基础测试脚本

脚本基于 JavaScript,导入 k6/http 的 http、k6 的 check、sleep。通过 options 设置 vus(并发虚拟用户数)与 duration(运行时长),在默认导出函数中发起请求并用 check 断言。使用 k6 run script.js 执行。

虚拟用户与时长

可通过 vus、duration、iterations 控制执行规模,也可用 stages 定义阶段(ramp up 爬坡、steady state 稳态、ramp down 降坡)。

测试类型

  • 负载测试:模拟典型预期流量。
  • 压力测试:阶梯式递增超过正常容量。
  • 浸泡测试(soak):长时间持续负载(如 8 小时)。
  • 峰值测试(spike):流量骤增。
  • 断点测试(breakpoint):用 ramping-arrival-rate 执行器寻找系统极限。

校验与阈值

check 可断言状态码、响应体内容、响应时间、Content-Type 等。thresholds 定义通过/失败标准,如 http_req_duration 的 p(95)<500、http_req_failed 的 rate<0.01、checks 的 rate>0.99、http_reqs 的 rate>100,也可对带标签请求设置阈值(如 http_req_duration{name:login})。任一阈值未通过时 k6 以非零状态退出,适合作为 CI 门禁。

HTTP 方法与鉴权

支持 http.get、post、put、del,以及 multipart 文件上传(http.file)。可在请求头中携带 Bearer token;也可在 setup 中登录获取 token 并传给默认函数;还可用 http.cookieJar() 设置 Cookie。

分组与标签

使用 group 组织用户流程(如 login、browse),并通过 tags 给请求打标签,便于在阈值与输出中按 name 过滤。

参数化

使用 SharedArray 配合 k6/data 与 papaparse 读取 JSON/CSV 数据;SharedArray 只在加载时读取一次并在 VU 间共享,以减少内存占用。

自定义指标

可创建 Counter(累计计数)、Rate(真值比例)、Trend(分布,含 min/max/avg/p90/p95)、Gauge(最后值),并在脚本中添加数据,同时在 thresholds 中对自定义指标设置阈值。

结果输出

k6 run 默认输出 stdout 摘要。可输出到 JSON(--out json=results.json)、CSV(--out csv=results.csv)、InfluxDB(--out influxdb=http://localhost:8086/k6)、Grafana Cloud(需设置 K6_CLOUD_TOKEN 并使用 --out cloud),也支持多输出同时使用。可用 handleSummary 自定义摘要输出。

浏览器测试

通过 k6/browser 使用浏览器场景,scenarios.ui 指定 executor: 'shared-iterations' 与 browser.type: 'chromium',在异步函数中打开页面、定位元素、输入与点击,并用 check 校验页面文本。

CI/CD 集成

提供 GitHub Actions 示例:使用 grafana/k6-action@v0.3.1 并指定 filename,可通过 env 传入 K6_CLOUD_TOKEN。阈值作为质量门禁,未通过时该步骤失败。

常见模式

资料中给出三类常见脚本示例:API 端点测试(带 stages 与 thresholds 的健康检查)、登录流程测试(登录后取 token 再访问个人资料)、文件上传测试(上传 PDF 并校验状态码与耗时)。

适用场景与限制

适合在 CI/CD 中对 API 性能和稳定性做自动化校验,也适合在测试环境模拟负载、压力、峰值与长时间运行。限制与未提供信息:资料未说明 k6 的具体许可、版本兼容矩阵、云服务收费标准、浏览器测试的完整支持范围与非 Chromium 浏览器支持情况,以及除文中列出的执行器与输出方式之外的其他功能。