关于 k6-load-testing
介绍使用 k6 对 API 和浏览器场景进行负载测试的技能指南,适用于开发者和性能工程师,可评估负载下的表现并比较代码变更,同时强调明确的安全限制。
主要功能
- 01对 HTTP API 进行负载测试
- 02测试 WebSocket 端点
- 03运行浏览器场景
- 04在 CI/CD 中设置性能回归测试
- 05分析负载下的系统表现
- 06比较代码变更前后的性能
适用场景
- 01评估预期流量下的 API 性能
- 02对 WebSocket 服务进行负载测试
- 03在 CI/CD 中添加性能回归检查
- 04验证 SLA 要求和性能预算
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill k6-load-testing安装后在 Claude Code 中输入/k6-load-testing确认已加载。
附带文件references/detailed-guide.md
详细介绍
k6 负载测试
执行范围
开始负载测试前,确认确切的目标、环境、VU/请求速率/持续时间上限、测试时段、停止条件、下游影响和测试数据清理方式。从 1 个 VU 开始;示例并不意味着可以对公共端点施加压力。使用云端输出需要获得上传结果和承担费用的授权。仅使用检查不会导致 k6 测试失败:添加检查阈值,以断言功能正确性。夹具必须非空,用户分配必须与并发量匹配;通过取模重复使用用户可能会扭曲身份验证结果。
详细指南
执行此技能前,请阅读详细指南。其中保留了完整流程和参考资料。必须遵守其中的安全要求、前提条件和验证要求。针对特定任务时,请加载相关章节;进行端到端工作时,请完整阅读指南。
何时使用此技能
- 需要对 HTTP API、WebSocket 端点或浏览器场景进行负载测试时
- 在 CI/CD 中设置性能回归测试时
- 分析系统在各种负载条件下的行为时
- 比较代码变更前后的性能时
- 验证 SLA 要求和性能预算时
示例
示例 1:基本 API 负载测试
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 50,
duration: '2m',
thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};
export default function () {
const res = http.get('https://api.example.com/users');
check(res, {
'status is 200': (r) => r.status === 200,
'response time < 500ms': (r) => r.timings.duration < 500,
});
sleep(1);
}
示例 2:使用身份验证和数据参数化进行测试
import http from 'k6/http';
import { check } from 'k6';
import { SharedArray } from 'k6/data';
const users = new SharedArray('users', function () {
return JSON.parse(open('./users.json'));
});
export default function () {
const user = users[__VU % users.length];
const loginRes = http.post('https://api.example.com/login',
JSON.stringify({ email: user.email, password: user.password }),
{headers: {'Content-Type': 'application/json'}, timeout: '10s', redirects: 0}
);
if (!check(loginRes, {'login succeeded': r => r.status === 200})) return;
let token;
try { token = loginRes.json('access_token'); } catch (_) { return; }
if (typeof token !== 'string' || !token) return;
const headers = { 'Authorization': `Bearer ${token}` };
const res = http.get('https://api.example.com/profile', { headers });
check(res, { 'profile loaded': (r) => r.status === 200 });
}
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为针对特定环境的验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。
评论
支持 Markdown