k6負荷テスト基盤の構成とベストプラクティス
k6
負荷テスト
k6を使った負荷テスト基盤を構築する際の設計ポイント
ディレクトリ構成
scripts/: テストシナリオファイル(*.test.ts)lib/: 共通ユーティリティ(認証、ステージ設定等)reports/: テスト結果保存先(gitignore対象)
共通ライブラリの設計
- 認証ヘッダー生成関数(
getAuthHeaders())を用意 - 環境変数から設定を読み込む(BASE_URL, TOKEN, TENANT_ID等)
- 共通のレスポンスチェック関数とthresholds設定を提供
- ヘルパー関数(クエリパラメータ生成、エラーログ出力等)を実装
負荷レベルのプリセット
- SMOKE_TEST: 疎通確認用(VU=1、短時間)
- LOAD_TEST: 通常負荷(VU=10→50)
- STRESS_TEST: 高負荷(VU=10→200)
- SPIKE_TEST: 急激な負荷変動
- SOAK_TEST: 長時間安定性テスト
- BREAKPOINT_TEST: 限界値特定用
環境変数管理
- direnvで
.envrcを使い、ステージング環境の認証情報を管理 .envrc.exampleをテンプレートとして提供- トークン、テナントIDなど機密情報をgitignore
シナリオ設計
- setup関数で認証情報を準備(全VU実行前に1回)
- メインシナリオで複数のAPIエンドポイントをテスト
- think time(
sleep(randomSleep()))でユーザー操作間隔をシミュレート - タグ機能でエンドポイントごとの結果を分類