k6-load-testing について
k6 で API やブラウザーシナリオの負荷テストを行うスキルガイドです。開発者やパフォーマンスエンジニアが負荷時の挙動や変更前後の性能を評価できるよう、安全上の上限設定も重視します。
主な機能
- 01HTTP API の負荷テスト
- 02WebSocket エンドポイントのテスト
- 03ブラウザーシナリオの実行
- 04CI/CD での性能回帰テスト設定
- 05負荷時のシステム挙動の分析
- 06コード変更前後の性能比較
活用シーン
- 01想定トラフィック下での API 性能評価
- 02WebSocket サービスの負荷テスト
- 03CI/CD への性能回帰チェック追加
- 04SLA 要件と性能予算の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
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から開始してください。例は、公開エンドポイントに負荷をかけてよいという許可ではありません。Cloud に出力するには、結果のアップロードと料金の発生について承認を得る必要があります。チェックだけでは 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 対応