testing-performance について
開発・テストチーム向けの性能テストスキルです。k6、Locust、JMeterで負荷を再現し、レイテンシや SLA、ボトルネックを分析できます。
主な機能
- 01k6による仮想ユーザー負荷の再現
- 02Locustでのカスタム負荷設定
- 03JMeterのしきい値によるSLA確認
- 04p50、p95、p99レイテンシの分析
- 05ボトルネック分析用のフレームグラフ生成
- 06複数マシンでの分散テスト
活用シーン
- 01リリース前の負荷時サービス動作の検証
- 02CI/CDでの性能SLA確認
- 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 を表示するなどして環境変数を確認します。
具体的な使用例
- k6で5分間、100人のユーザーを対象にeコマースAPIをテストするには、GETリクエストを含むスクリプトを作成し、
k6 run -u 100 -d 5m script.js --threshold "http_req_duration{type:200} < 500"を実行します。出力を分析してp95レイテンシーを確認し、SLAへの準拠を確かめます。 - 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クラスター
- 依存関係:メトリクス分析のための監視スキル、環境設定のためのデプロイスキル