performance-test-k6 · diff
git:20260907.741ed59 to git:20260915.bc5a8d6
96 added, 34 removed. Audit A to A.
---
name: performance-test-k6
- description: Use this skill when you need k6 load/stress/spike/soak scope, scripts, or runnable entry points; triggers include k6、k6 性能测试 and k6 performance testing.
+ description: Use this skill when you need to generate executable k6 load/stress/spike/soak test scripts from API specs or business scenarios; triggers include k6, k6 性能测试, 生成k6脚本, k6脚本, and k6 performance testing.
---
- # 性能测试(k6)(中文版)
-
- **英文版:** 见对应英文技能。
+ # k6 性能测试
## 何时使用
- - 需要把性能测试结果落到 k6 结构里。
- - 项目已经在用 k6,或希望输出直接适配 k6。
+ - 用户提供 API 接口或业务场景,需要生成**可直接执行的 k6 测试脚本**(.js)。
+ - 需要对已有 k6 脚本做优化、扩展或结果分析。
+ ## 输入要求
+
+ | 必填 | 字段 | 说明 |
+ |------|------|------|
+ | ✅ | 目标接口/场景 | 接口路径、方法、参数,或业务场景描述 |
+ | ✅ | 测试类型 | load / stress / spike / soak / smoke(选一或多选) |
+ | ⬜ | 并发模型 | VU 数、RPS 目标、持续时长、阶段配置 |
+ | ⬜ | 性能阈值 | 响应时间 P95/P99、错误率上限 |
+ | ⬜ | 测试数据 | 请求体、参数化数据、登录凭证 |
+ | ⬜ | 环境信息 | BASE_URL、环境名、网络条件 |
+
## 执行流程
- 1. 阅读并遵循「按需加载」中的主提示词(覆盖清单、输出结构、质量要求)。
- 2. 只补充真正影响结果的项目上下文:范围、环境、限制、风险、依赖、期望产出。
- 3. 信息不全时先给可用初版,并显式标出假设与信息缺口。
- 4. 默认 Markdown;用户指定其他格式时再切换。
+ ### 1. 输入审计
- ## 核心约束
+ - 检查接口信息是否完整(路径、方法、参数、鉴权)
+ - 检查测试类型是否匹配业务目标
+ - 缺失信息标记为「假设」并给出默认值
- - 按风险/业务影响排优先级,不要平均摊铺。
- - 把「已确认事实」和「当前假设」分开写;无 SLA/无流量时所有数字标「假设」并给待确认清单。
- - 不要编造用户未提供的接口、字段、环境或根因细节;密钥只用占位符 / `__ENV`,禁止真实 token。
- - 结果必须可执行:场景具体、有优先级、能指导下一步。
- - 默认只选最关键的 1~2 类性能场景,不要默认基线/负载/压力/尖峰/稳定性全做。
+ ### 2. 脚本生成
- ## 按需加载
+ 基于输入,复用 `scripts/` 框架生成测试文件:
- - 产出前必须阅读并遵循 `prompts/performance-test-k6.md`(最低覆盖清单、输出结构、质量要求)。
- - 需要套用现成模板时:读 `output-templates/` 中匹配的模板,不要自创冲突结构。
- - 用户要示例或对标现有资产时:读 `examples/` 中相关样例。
- - 需要框架规范、排障、报告 schema 等深资料时:只读 `references/` 里与当前问题相关的文件,不要整目录通读。
- - 需要格式转换或辅助校验时:优先使用 `scripts/` 中已有脚本,而不是重写一遍。
- - 需要评测/回归本 skill 时:使用 `evals/`,并用 skill-up 校验与运行。
+ ```
+ scripts/
+ ├── config.js # 已有:baseURL、阈值、示例数据(按需修改)
+ ├── helpers.js # 已有:get/post/assertOk/think 工具函数
+ ├── tests/
+ │ ├── load.js # 已有模板:按需生成新场景文件
+ │ ├── stress.js
+ │ ├── spike.js
+ │ ├── soak.js
+ │ └── api-smoke.js
+ └── tools/
+ ├── summarize_k6.py # 已有:汇总报告
+ ├── compare_k6.py # 已有:对比历史结果
+ └── local_mock_server.py # 已有:本地 mock
+ ```
- ## 交付前自检
+ **生成规则**:
+ - 新测试文件放在 `tests/` 目录,命名 `<场景>.js`
+ - 复用 `helpers.js` 的 `get/post/assertOk/think` 函数
+ - 复用 `config.js` 的 `common/thresholds/tags`
+ - 若用户场景与已有模板(load/stress/spike/soak/smoke)匹配,基于模板修改而非从零写
- - [ ] 已遵循主提示词的输出结构
- - [ ] 最低覆盖关注:目标场景、负载模型、数据需求、VU 或时长配置、阈值、环境和监控、重点瓶颈、结果汇报需求…(细节以主提示词为准)
- - [ ] 已覆盖最低清单,或标明为何省略
- - [ ] 高风险项有明确优先级
- - [ ] 未编造用户未提供的细节
- - [ ] 假设与信息缺口已标明
+ ### 3. 脚本校验
+ 生成后必须执行以下校验:
+
+ - [ ] JS 语法正确(无未闭合括号、无 import 路径错误)
+ - [ ] `options` 对象包含 `scenarios` 和 `thresholds`
+ - [ ] 使用 `helpers.js` 的函数而非直接调用 `http.*`
+ - [ ] 环境变量通过 `__ENV` 读取,无硬编码密钥
+ - [ ] `tags()` 函数调用包含 testType 和 module 参数
+ - [ ] threshold 阈值与用户要求一致(或标明默认值)
+
+ ### 4. 输出交付物
+
+ | 文件 | 内容 |
+ |------|------|
+ | `tests/<场景>.js` | 可执行的 k6 测试脚本 |
+ | `run-test.sh` | 一键执行命令 |
+ | `README.md` | 脚本说明:场景、参数、执行方式 |
+
+ **执行命令**(自动写入 run-test.sh):
+ ```bash
+ # 基础执行
+ k6 run tests/<场景>.js
+
+ # 指定环境
+ BASE_URL=https://api.example.com ENV=staging k6 run tests/<场景>.js
+
+ # 导出汇总 JSON
+ K6_SUMMARY_EXPORT=summary.json k6 run tests/<场景>.js
+ ```
+
+ ### 5. 自检清单
+
+ - [ ] 覆盖用户指定的测试类型(load/stress/spike/soak/smoke)
+ - [ ] 每个接口有独立的 check 断言
+ - [ ] 阈值设置合理(有默认值或用户指定)
+ - [ ] 测试数据可获取(非硬编码)
+ - [ ] 脚本可直接 `k6 run` 执行
+
+ ## 核心约束
+
+ - 输出必须是**可执行的 .js 脚本**,不是文档或方案。
+ - 复用已有框架(config.js / helpers.js),不重写基础函数。
+ - 默认只选最关键的 1~2 类场景,不要全做。
+ - 密钥、Token 只用 `__ENV` 占位,禁止真实值。
+
+ ## 参考文件
+
+ - `prompts/performance-test-k6.md`:详细执行规范。
+ - `references/framework-spec.md`:k6 框架结构说明。
+ - `scripts/`:完整可复用的脚本框架。
+
## 常见误区
- - 范围和上下文都不清楚时,不要假装已经完整可用。
- - 不要把所有项写成同等重要。
- - 不要跳过假设与信息缺口。
- - 不要输出大段与当前工具链无关的空泛理论。
+ - 只给方案不给脚本 → 必须输出可执行 .js。
+ - 每次从零写全部脚本 → 复用已有模板和工具函数。
+ - 默认全做基线/负载/压力/尖峰/稳定性 → 按优先级选 1~2 类。
+ - 硬编码密钥 → 用 `__ENV` 占位。