SuperAPI AI 工具集

k6 performance testing

测试与质量

查看项目

更新于 10-16 10:30

技能介绍

用途

k6 Performance Testing 是一个面向性能工程的技能,用于在用户要求编写、审查或调试 k6 负载测试时提供具体指导。其定位是扮演专注于 k6 负载测试的性能工程师。

主要能力与内容

技能围绕性能测试脚本展开,提供了从原则到代码的多层内容:

  • 核心原则:按真实用户行为建模测试;每个测试必须预先定义明确的通过/失败标准;逐步加压而非瞬间打满负载;在负载下广泛使用检查校验响应;将 k6 指标与服务端监控结合并进行关联分析。
  • 项目结构建议:给出 k6 目录组织方式,包含 scripts(smoke-test.js、load-test.js、stress-test.js、spike-test.js、soak-test.js)、scenarios(api-scenarios.js、user-flows.js)、utils(helpers.js、auth.js、data-generators.js)、data(users.csv、payloads.json)、thresholds(default-thresholds.js)、config(environments.js)、results 等目录与文件。
  • 基础负载测试脚本示例:使用 k6/http、k6 的 check/sleep/group,以及 k6/metrics 的 Rate、Trend、Counter 定义自定义指标;通过 options.stages 定义加压阶段,通过 options.thresholds 定义 http_req_duration、http_req_failed 及自定义指标的阈值;使用 __ENV.BASE_URL 读取环境变量;在 group 中执行首页请求与登录请求,并加入随机思考时间。
  • 常见测试类型配置:冒烟测试(vus 1、duration 1m)、负载测试(分段加压、稳态、降压)、压力测试(多级递增至 400 VU)、峰值测试(短时间冲高至 500 VU 再恢复)、浸泡测试(50 VU 持续 4 小时)。
  • 场景(Scenarios)高级配置:使用 ramping-vus、constant-arrival-rate、constant-vus 等 executor,并为不同场景分别定义阈值,如按 scenario 标签区分 http_req_duration 的 p(95) 目标。
  • 认证模式:使用 setup() 在测试前执行一次登录,返回 token,并在默认函数中通过 Authorization: Bearer 头携带凭证。
  • 数据驱动测试:使用 SharedArray 与 papaparse 解析 CSV,或使用 open() 读取 JSON payload;示例中包含按 __VU 取值的用法。
  • 自定义指标:展示 Trend、Rate、Counter、Gauge 四类指标的用途与添加方式。
  • 最佳实践与反模式:包括必须定义阈值、使用真实思考时间、逐步加压、参数化配置、用 group() 划分逻辑段、广泛使用 check()、大数据集用 SharedArray、给请求打 tag、先跑冒烟测试、用 --out json=results.json 保存结果;反模式包括无阈值、无思考时间、单点压测、忽略加压过程、硬编码 URL、不校验响应、忘记 setup()/teardown()、在默认函数中做大文件上传、不与服务端指标关联、未经批准对生产环境压测。

使用方式

技能通过 k6 命令运行脚本,示例命令包括:k6 run scripts/load-test.js;使用 -e 传入环境变量;使用 --out json=results/output.json 输出结果;使用 k6 cloud 输出到云端;使用 --out influxdb=... 输出到 InfluxDB;使用 --vus 与 --duration 覆盖虚拟用户数与时长。

结果分析

测试结束后需分析关键指标:http_req_duration(响应时间分布 p50/p90/p95/p99)、http_req_failed(失败请求比例)、http_reqs(总请求速率)、vus(活跃虚拟用户数)、iterations(完整迭代次数)、checks(断言通过/失败比例)、data_received/data_sent(网络吞吐)。技能还列出可关注的模式:响应时间随 VU 增加而上升代表容量上限;特定 VU 数下错误率突增代表拐点;浸泡测试中内存逐步增长代表内存泄漏;响应时间先平稳后突然飙升代表线程池耗尽。

适用场景与限制

适用于需要编写、审查、调试 k6 性能与负载测试的场景,覆盖从冒烟到浸泡的多种测试形态以及多场景配置、认证与数据驱动。资料未提供该技能的安装方式、版本依赖、收费或价格、以及其在不同平台上的具体效果,相关信息暂未提供。