mcpField
L
load-testing-apis

load-testing-apis

github.com/jeremylongshoreテスト・品質2.9k42 回インストール2 日前に更新
リポジトリ

load-testing-apis について

API の負荷・ストレス・ソークテストを計画、分析するスキルです。k6 や Artillery などのスクリプトを生成し、トラフィックをモデル化して、閾値に対する性能とボトルネックをレポートします。

主な機能

  1. 01負荷・ストレス・ソークテストの計画
  2. 02k6 と Artillery のスクリプト生成
  3. 03トラフィックシナリオの設定
  4. 04合否判定の閾値設定
  5. 05性能・ボトルネックレポート

活用シーン

  1. 01SLO に対する API 性能の測定
  2. 02急増トラフィック下での API テスト
  3. 03継続負荷テストでのボトルネック特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill load-testing-apis

インストール後、Claude Code で/load-testing-apisを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
errors.md
examples.md
implementation.md

詳細

API の負荷テスト

概要

包括的な負荷テスト、ストレステスト、ソークテストを実行し、API のパフォーマンスを検証してボトルネックを特定し、スループットのベースラインを確立します。設定可能な仮想ユーザーのランプアップ、リクエスト分布、失敗しきい値のアサーションを使用して、実際のトラフィックパターンをシミュレートする k6、Artillery、または wrk 用のテストスクリプトを生成します。

前提条件

  • 負荷テストツールがインストールされていること:k6(推奨)、Artillery、wrk、または Apache JMeter
  • 対象 API がステージング/パフォーマンス環境にデプロイされていること(安全対策なしに本番環境で負荷テストを実施しないでください)
  • 監視スタックにアクセスできること:テスト結果とサーバーメトリクスを関連付けるための Grafana/Prometheus、Datadog、または CloudWatch
  • テスト用の API 認証情報があること(API キー、テストユーザーの JWT トークン)
  • パフォーマンスのベースラインとなる SLO が定義されていること(目標 p95 レイテンシ、最大エラー率、最小スループット)

手順

  1. Glob と Read を使用して API 仕様とルート定義を読み込み、エンドポイントの完全な一覧を作成して、トラフィックの多いパスとリソース負荷の高い操作を特定します。
  2. 現実的なユーザー行動をモデル化するテストシナリオを定義します。ブラウジング(読み取り 80%)、チェックアウト(読み取りと書き込みの混在)、スパイクトラフィックのパターンを作成し、リクエスト間に適切な思考時間を設けます。
  3. 設定可能なステージを備えた k6 または Artillery のテストスクリプトを生成します。ランプアップ(2 min)、持続負荷(10 min)、スパイク(3 倍で 2 min)、クールダウン(2 min)を設定します。
  4. リクエストの分布が本番環境のトラフィックパターンに一致するよう設定します。均等な分布ではなく、エンドポイント全体から重み付けしてランダムに選択します。
  5. 合否基準のしきい値アサーションを追加します。p95 レスポンスタイム < 500ms、エラー率 < 1%、スループット > 100 requests/second とします。
  6. CSV または JSON のフィクスチャを使用して、現実的なペイロード、一意のユーザー ID、さまざまなクエリパラメーターを使ったデータ駆動型リクエストを実装し、キャッシュだけをテストする状態を避けます。
  7. 想定される本番負荷でベースラインテストを実行し、その後 2x、5x、10x へと段階的に負荷を増やして、限界点と飽和時の挙動を特定します。
  8. 結果を分析します。レイテンシの急増をサーバーメトリクス(CPU、メモリ、DB 接続数、イベントループの遅延)と関連付け、ボトルネック(データベース、ネットワーク、コンピューティング)を特定し、調査結果を記録します。
  9. 結果を SLO のしきい値と比較し、最適化の推奨事項を含むパフォーマンスレポートを生成します。

実装ガイドの全文は ${CLAUDE_SKILL_DIR}/references/implementation.md を参照してください。

出力

  • ${CLAUDE_SKILL_DIR}/load-tests/scenarios/ - トラフィックシナリオごとの k6/Artillery テストスクリプト
  • ${CLAUDE_SKILL_DIR}/load-tests/data/ - テストデータのフィクスチャ(ユーザー、ペイロード、トークン)
  • ${CLAUDE_SKILL_DIR}/load-tests/thresholds.json - 合否しきい値の設定
  • ${CLAUDE_SKILL_DIR}/reports/load-test-results.json - タイミングデータを含む生のテスト結果
  • ${CLAUDE_SKILL_DIR}/reports/load-test-summary.md - 人が読める形式のパフォーマンス分析レポート
  • ${CLAUDE_SKILL_DIR}/reports/bottleneck-analysis.md - 特定したボトルネックと対処方法の推奨事項

エラー処理

エラー原因解決方法
接続拒否対象サーバーのファイル記述子が不足した、または接続プールが枯渇したサーバーの ulimit と接続プールのサイズを増やします。同時接続数の上限に注意してください
ランプアップ時のタイムアウト急増サーバーが接続確立の速度に対応できない接続の事前ウォームアップを実装します。ランプアップ時間を延長し、接続プーリングを追加します
429 応答が結果の大部分を占める負荷テスト中にレートリミッターが作動しているレートリミッターで負荷テストの送信元 IP を許可リストに追加するか、レートリミッターの挙動を個別にテストします
ベースライン結果に一貫性がないステージング環境が他のトラフィックと共有されているテスト環境を分離し、時間外にテストを実施するか、専用のパフォーマンス環境を使用します
メモリリークが検出されたソークテスト中、数時間にわたってメモリが継続的に増加している開発チームに報告し、テストシナリオを分離してリークしているエンドポイントを特定します

包括的なエラーパターンについては ${CLAUDE_SKILL_DIR}/references/errors.md を参照してください。

例

Eコマースのチェックアウトフロー:500人の同時ユーザーが商品を閲覧(GET、70%)、カートに追加(POST、20%)、購入手続きを完了(POST、10%)する状況を、各アクションの間に2~5秒の思考時間を設けてシミュレートします。

APIのスパイクテスト:マーケティングキャンペーン開始によるトラフィックの急増をシミュレートするため、30秒で仮想ユーザー数を50人から1000人に増やします。オートスケーラーが応答し、60秒以内にレイテンシが回復することを確認します。

メモリリークのためのソークテスト:200人の同時ユーザーを4時間維持し、サーバーのメモリ、接続数、応答時間を監視して、リソースリークを示す劣化パターンがないか確認します。

その他の例については、${CLAUDE_SKILL_DIR}/references/examples.md を参照してください。

リソース

コメント