mcpField
T
testing-performance

testing-performance

github.com/alphaonedevテスト・品質43 回インストール
リポジトリ

testing-performance について

開発・テストチーム向けの性能テストスキルです。k6、Locust、JMeterで負荷を再現し、レイテンシや SLA、ボトルネックを分析できます。

主な機能

  1. 01k6による仮想ユーザー負荷の再現
  2. 02Locustでのカスタム負荷設定
  3. 03JMeterのしきい値によるSLA確認
  4. 04p50、p95、p99レイテンシの分析
  5. 05ボトルネック分析用のフレームグラフ生成
  6. 06複数マシンでの分散テスト

活用シーン

  1. 01リリース前の負荷時サービス動作の検証
  2. 02CI/CDでの性能SLA確認
  3. 03WebサービスやAPIの高レイテンシ調査

インストール

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

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill testing-performance

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

詳細

testing-performance

目的

このスキルでは、k6、Locust、JMeter などのツールを使用してパフォーマンステストを実施します。負荷、ストレス、スパイクの各シナリオをシミュレートし、p50/p95/p99 レイテンシなどのメトリクスを測定し、SLA を適用するとともに、ボトルネック分析用のフレームグラフを生成できます。

使用する場面

負荷がかかった状態でのアプリケーションのパフォーマンス評価、スケーラビリティの問題の特定、SLA の検証、本番環境へのリリース前のコード最適化を行う場合に、このスキルを使用します。リリース前のテスト、CI/CD パイプライン、またはウェブサービスや API の高レイテンシ問題のデバッグに適用してください。

主な機能

  • VU(仮想ユーザー)数と継続時間を設定してトラフィックをシミュレートし、k6 で負荷テストを実行します。
  • テスト出力から p50(中央値)、p95(95 パーセンタイル)、p99 レイテンシなどのメトリクスを含むレポートを生成します。
  • Locust で Python スクリプトを使って負荷プロファイルを定義し、ユーザーの動作やランプアップ率をカスタマイズします。
  • JMeter でしきい値を設定し、結果を確認することで SLA を適用します。
  • k6 の統合プロファイリングや外部ツールを使用してフレームグラフを作成し、CPU/メモリ使用量を可視化します。
  • 大規模なシミュレーション向けに、複数のマシンにまたがる分散テストをサポートします。

使用パターン

基本的な負荷テストを行うには、シナリオに応じてツールを選択します。手早くスクリプトを作成するには k6、Python ベースでカスタマイズするには Locust、UI 要素を含む複雑なシナリオには JMeter を使用します。必ず最初にテストスクリプトを定義し、指定したプロファイルで実行してください。CI/CD では、コード変更時に実行されるステップとして組み込みます。環境(例:ステージングと本番)のパラメーター化を取り入れ、実行後は必ず結果を分析してください。例:API エンドポイント用の k6 テストをスクリプト化し、その後 Locust でユーザーシミュレーションの規模を拡大します。

主なコマンド/API

k6 では、CLI からテストを実行します:k6 run -u 50 -d 1m script.js(1 分間、仮想ユーザー 50 人で実行します)。--threshold p(95)<500 のようなしきい値を使うと、p95 レイテンシを 500ms 未満に保てます。スクリプトの例:

import http from 'k6/http';
export default function() { http.get('https://api.example.com'); }

Locust は次のコマンドで起動します:locust -f locustfile.py --host https://api.example.com --users 100 --spawn-rate 10(ユーザー 100 人、毎秒 10 人)。Locustfile の抜粋:

from locust import HttpUser, task
class QuickUser(HttpUser):
    @task
    def endpoint(self): self.client.get("/health")

JMeter は次のコマンドで実行します:jmeter -n -t test_plan.jmx -l results.jtl(非 GUI モード)。JMeter の設定は .jmx XML 形式で、50 ループの Thread Group や HTTP Sampler などの要素を含みます。API エンドポイント:テストに認証が必要な場合は、スクリプト内で $K6_API_KEY などの環境変数を設定します(例:実行前に export K6_API_KEY=your_key を実行します)。

統合に関する注意

コマンドをスクリプトや GitHub Actions などの CI ツールでラップし、このスキルをワークフローに統合します。例:YAML のステップに run: k6 run script.js を設定します。クラウドサービスでは、保護されたエンドポイントへのアクセスに環境変数(例:$LOCUST_API_TOKEN)で認証情報を渡します。出力をパイプで渡す(例:k6 の JSON 結果を Prometheus に渡す)ことで、監視ツールと組み合わせます。パッケージマネージャー(例:npm install -g k6 や pip install locust)でツールをインストールし、再現性を確保するために Docker イメージ(例:docker run loadimpact/k6 run - < script.js)を使用してください。API を使用する場合、k6 のクラウド API などのエンドポイントへのアップロードには $K6_CLOUD_TOKEN が必要です。

エラー処理

実行後に終了コードを確認します。k6 は、しきい値違反などの失敗時にゼロ以外の値を返します。スクリプトでは、Locust 用に try-catch でコマンドをラップします(例:Python では try: run_locust() except Exception as e: log(e))。JMeter では、.jtl ログを解析して「Assertion failure」などのエラーを確認し、しきい値に達した場合に停止するリスナーを設定します。よくある問題:スクリプトに再試行を追加してネットワークエラーに対処します(例:k6 の http.get(url, { retries: 3 }))。また、デバッグには k6 run --verbose script.js のような詳細フラグを使用します。認証に失敗した場合は、実行前に $K6_API_KEY を表示するなどして環境変数を確認します。

具体的な使用例

  1. k6で5分間、100人のユーザーを対象にeコマースAPIをテストするには、GETリクエストを含むスクリプトを作成し、k6 run -u 100 -d 5m script.js --threshold "http_req_duration{type:200} < 500" を実行します。出力を分析してp95レイテンシーを確認し、SLAへの準拠を確かめます。
  2. Locustでユーザーのログインをシミュレートするには、ログインと閲覧のタスクを含むlocustfile.pyを作成し、locust -f locustfile.py --host https://app.example.com --users 200 --run-time 10m を実行します。エラーを監視し、レポートを生成してボトルネックを特定します。

グラフの関係性

  • 関連項目:testing(クラスター)、performance-test(タグ)、k6(タグ)、locust(タグ)、load-test(タグ)
  • 接続先:unit-testingやintegration-testingなど、他のテストスキルが含まれるtestingクラスター
  • 依存関係:メトリクス分析のための監視スキル、環境設定のためのデプロイスキル

コメント