mcpField
P
performance-testing

performance-testing

github.com/404kidwizテスト・品質125 回インストール
リポジトリ

performance-testing について

performance-testingは、アプリケーション、API、インフラの性能テストを支援するスキルです。負荷、ストレス、耐久テストに加え、指標の分析、ボトルネックの特定、テスト自動化を扱います。

主な機能

  1. 01負荷、ストレス、耐久テスト
  2. 02ワークロードとシナリオの設計
  3. 03レイテンシとスループットの分析
  4. 04リソースとボトルネックの分析
  5. 05性能回帰テストの自動化

活用シーン

  1. 01SLAに対するAPIレイテンシの検証
  2. 02ピーク時の前に容量上限を特定
  3. 03長時間テストでメモリリークを検出
  4. 04CI/CDに性能チェックを追加

インストール

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

$npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill performance-testing

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

詳細

パフォーマンステストスキル

目的

アプリケーション、API、インフラストラクチャシステムを対象に、負荷テスト、ストレステスト、耐久テストを専門とする包括的なパフォーマンステストの知識を提供します。さまざまな負荷条件下でのシステムの動作を検証し、容量の上限を特定します。

使用する場面

  • 同時ユーザーをシミュレートする負荷テストを実施するとき
  • 限界点を見つけるためにストレステストを実施するとき
  • メモリリークを検出する耐久テストを実行するとき
  • 負荷の増加に対するシステムの拡張性を検証するとき
  • 応答時間とスループットの指標を測定するとき
  • リソース使用率のパターンを分析するとき

例

例 1:E コマースプラットフォームの負荷テスト

シナリオ: ブラックフライデーを控えた E コマースプラットフォームで、予想トラフィックの 10 倍の負荷に対するパフォーマンスを検証する必要があります。

実装:

  1. 過去のトラフィックパターンを分析し、現実的な負荷をモデル化しました
  2. 重要な経路(閲覧、カート、チェックアウト)を対象とする JMeter テストシナリオを作成しました
  3. ランプアップ期間を設け、10,000 人の同時ユーザーをシミュレートしました
  4. 負荷下でデータベースクエリをテストし、N+1 問題を特定しました
  5. オートスケーリングのトリガーとしきい値を検証しました

結果:

  • 重大なボトルネックを 3 件(DB 2 件、API 1 件)特定しました
  • 平均応答時間を 2.3s から 450ms に短縮しました
  • システムが 50,000 人の同時ユーザーに対応できることを検証しました
  • オートスケーリングが 45 秒以内に作動することを確認しました
例 2:API のパフォーマンスベンチマーク

シナリオ: 金融サービスの API で、SLA 要件(P99 <200ms)に対するパフォーマンスの検証が必要です。

実装:

  1. すべての API エンドポイントを対象とする k6 テストスクリプトを作成しました
  2. さまざまな同時実行レベル(100、500、1000)でテストしました
  3. 応答時間の分布(P50、P90、P95、P99)を分析しました
  4. 応答を遅くしているデータベースクエリのプロファイルを作成しました
  5. クエリの最適化とキャッシュを実装しました

結果:

  • P99 レイテンシを 850ms から 145ms に短縮しました
  • スループットを 500 RPS から 2,500 RPS に向上させました
  • すべてのエンドポイントが SLA 要件を満たしています
  • パフォーマンスのリグレッションテストスイートを作成しました
例 3:マイクロサービスのカオステスト

シナリオ: マイクロサービスアーキテクチャで、一部のサービスが停止した場合の動作を検証する必要があります。

実装:

  1. サービス障害を想定したカオステストシナリオを設計しました
  2. レイテンシの注入とエラーレスポンスを実装しました
  3. サーキットブレーカーの機能と復旧をテストしました
  4. グレースフルデグラデーションの動作を検証しました
  5. カオス発生時のエンドツーエンドのリクエストフローを測定しました

結果:

  • 適切なサーキットブレーカーを備えていないサービスを 2 件特定しました
  • さまざまな障害シナリオにおける復旧時間を検証しました
  • システムが致命的な障害ではなく、段階的に機能を縮退することを確認しました
  • 各障害モードの復旧手順を文書化しました

ベストプラクティス

テスト設計
  • 現実的なワークロードのモデル化: 本番トラフィックの分析に基づいて負荷パターンを作成します
  • 思考時間の設定: リクエスト間に現実的なユーザーの待ち時間を含めます
  • データのパラメーター化: キャッシュによる影響を避けるため、多様なテストデータを使用します
  • 包括的なカバレッジ: 典型的な成功経路だけでなく、重要なユーザージャーニーをすべてテストします
実行
  • 本番環境に近い環境: 本番環境と同じ構成の環境でテストします
  • 適切なウォームアップ: 測定前にランプアップ期間を設けます
  • 十分な実行時間: 問題を発見できるだけの時間、ストレステストを実行します
  • エラー率の監視: 応答時間とエラー率の両方を追跡します
分析
  • パーセンタイル分析: 平均だけでなく、P50、P90、P95、P99 を報告します
  • ベースラインとの比較: 確立済みのベースラインと必ず比較します
  • 傾向の追跡: スナップショットだけでなく、パフォーマンスを継続的に監視します
  • 指標の絞り込み: SLA に関連する指標を追跡し、指標を増やしすぎないようにします
ツール
  • テストの保守: テストを本番コードと同様に扱い、保守・更新します
  • CI/CD との統合: デプロイパイプラインでパフォーマンステストを自動化します
  • 十分なリソース: 負荷生成ツールが必要な負荷を生成できるようにします
  • 結果の分析: 分析とアラートを自動化します

概要

アプリケーション、API、インフラストラクチャシステムの負荷テスト、ストレステスト、パフォーマンス最適化を専門とするパフォーマンステストのエキスパートです。

パフォーマンステストの種類

負荷テスト
  • 同時ユーザーのシミュレーション
  • トランザクション量のテスト
  • スケーラビリティの評価
  • リソース使用率の分析
  • 応答時間の測定
ストレステスト
  • 限界点の特定
  • 障害モードの分析
  • 復旧時間の測定
  • リソース枯渇のテスト
  • システム安定性の検証
耐久テスト
  • 長期的な安定性の評価
  • メモリリークの検出
  • パフォーマンス低下の分析
  • リソース増加の監視
  • システム持続性のテスト

パフォーマンステストツール

オープンソースツール
  • Apache JMeter - 包括的なパフォーマンステスト
  • Gatling - 高性能な負荷テスト
  • k6 - JavaScript による最新の負荷テスト
  • Locust - Python ベースの負荷テスト
  • WRK - HTTP ベンチマークツール
商用ソリューション
  • LoadRunner Professional
  • NeoLoad
  • Silk Performer
  • BlazeMeter
  • WebLOAD
クラウドベースのプラットフォーム
  • AWS Load Testing
  • Azure Load Testing
  • Google Cloud Load Testing
  • k6 Cloud
  • BlazeMeter Cloud

パフォーマンス指標と分析

主要業績評価指標
# Example patterns for performance analysis
grep -r "response_time\|latency\|throughput" logs/ --include="*.log" --include="*.txt"
grep -r "cpu\|memory\|disk" monitoring/ --include="*.metrics" --include="*.json"
grep -r "concurrent\|connections\|requests" load_tests/ --include="*.js" --include="*.py"
応答時間分析
  • 平均応答時間
  • 中央値(50 パーセンタイル)
  • 90、95、99 パーセンタイル分析
  • 最大応答時間
  • 応答時間の分布
スループット指標
  • 1 秒あたりのリクエスト数(RPS)
  • 1 秒あたりのトランザクション数(TPS)
  • データ転送速度
  • 同時ユーザー数の上限
  • ピーク負荷への対応
リソース使用率
  • CPU 使用率の監視
  • メモリ消費量の追跡
  • ディスク I/O の分析
  • ネットワーク帯域幅の使用状況
  • データベース接続プーリング

テストの設計と実行

テストシナリオの計画
  • ユーザージャーニーのマッピング
  • ビジネスプロセスのモデリング
  • ピーク負荷のシミュレーション
  • 負荷の段階的な増加戦略
  • 思考時間の実装
負荷プロファイルの設計
  • 一定負荷パターン
  • スパイクテストのシナリオ
  • 負荷を段階的に増加させるパターン
  • カスタム負荷曲線
  • 実際のトラフィックのシミュレーション
テストデータの管理
  • テストデータの生成
  • パラメーター化戦略
  • 多様なデータの作成
  • データベース状態の管理
  • プライバシー保護対策

アプリケーション固有のテスト

Web アプリケーションのパフォーマンス
  • ページ読み込み時間の分析
  • アセット読み込みの最適化
  • JavaScript 実行パフォーマンス
  • CSS レンダリングパフォーマンス
  • サードパーティ依存関係の影響
API パフォーマンステスト
  • RESTful API テスト
  • GraphQL のパフォーマンス
  • SOAP Web サービスのテスト
  • 認証によるオーバーヘッド
  • レート制限の検証
データベースのパフォーマンス
  • クエリの最適化
  • インデックス効率の分析
  • 接続プーリング
  • データベースのスケーリング
  • ロック競合の分析
モバイルアプリケーションのテスト
  • ネットワーク状況のシミュレーション
  • デバイスごとのパフォーマンスのばらつき
  • バッテリー消費量の分析
  • アプリ起動時間
  • メモリ使用パターン

高度なパフォーマンステスト

分散テスト
  • 複数の負荷生成器
  • 地理的な分散
  • ネットワーク遅延のシミュレーション
  • 帯域幅の制限
  • クラウドベースの負荷生成
リアルユーザーモニタリング(RUM)
  • フロントエンドのパフォーマンス追跡
  • ユーザーエクスペリエンス指標
  • 地理的なパフォーマンス分析
  • デバイス固有のパフォーマンス
  • ブラウザー互換性の影響
継続的なパフォーマンステスト
  • CI/CD との統合
  • 自動回帰テスト
  • パフォーマンスしきい値の検証
  • アラートと通知
  • 傾向分析とレポート作成

パフォーマンス分析と最適化

ボトルネックの特定
  • CPU 負荷の分析
  • メモリの最適化
  • I/O ボトルネックの検出
  • ネットワーク遅延の分析
  • データベースクエリの最適化
プロファイリングと診断
  • アプリケーションのプロファイリング
  • システムコールの分析
  • メモリリークの検出
  • スレッド競合の分析
  • ガベージコレクションの調整
キャッシュ戦略
  • アプリケーションレベルのキャッシュ
  • データベースクエリのキャッシュ
  • コンテンツ配信ネットワーク
  • ブラウザーキャッシュの最適化
  • 分散キャッシュの実装

監視と可観測性

アプリケーションパフォーマンス監視(APM)
  • リアルタイムのパフォーマンス追跡
  • 分散トレーシング
  • エラー率の監視
  • カスタムメトリクスの収集
  • パフォーマンスダッシュボード
インフラストラクチャ監視
  • サーバーリソースの監視
  • ネットワークパフォーマンスの追跡
  • データベースパフォーマンスのメトリクス
  • クラウドリソースの使用状況
  • コンテナパフォーマンスの分析
ログ分析
  • パフォーマンス関連のログパターン
  • エラーログの相関分析
  • アクセスログの分析
  • カスタムパフォーマンスログ
  • ログの集約と検索

パフォーマンステストの自動化

テスト自動化フレームワーク
  • JMeterの自動化
  • Gatlingのスクリプト作成
  • k6のJavaScript自動化
  • Pythonベースの自動化
  • CI/CDとの統合
継続的インテグレーション
  • テスト実行の自動化
  • パフォーマンスのリグレッション検出
  • レポートの自動生成
  • しきい値の検証
  • 失敗通知システム
クラウドベースの自動化
  • スケーラブルな負荷生成
  • 地理的な分散
  • オンデマンドのリソースプロビジョニング
  • コストの最適化
  • マルチクラウド戦略

環境ごとのパフォーマンステスト

開発環境
  • 早期のパフォーマンス検証
  • ユニットレベルのパフォーマンステスト
  • ローカルでのベンチマーク
  • 開発フィードバックループ
  • パフォーマンスのベストプラクティス
ステージング環境
  • 本番環境に近いテスト
  • キャパシティプランニングの検証
  • パフォーマンスのリグレッションテスト
  • 統合パフォーマンステスト
  • デプロイ前の検証
本番環境の監視
  • リアルタイムのパフォーマンス追跡
  • パフォーマンスSLAの監視
  • ユーザーエクスペリエンスの測定
  • インシデント対応
  • パフォーマンス最適化サイクル

レポートとドキュメント

パフォーマンステストレポート
  • エグゼクティブサマリー
  • 詳細なテスト結果
  • パフォーマンスの比較
  • ボトルネック分析
  • 最適化の推奨事項
パフォーマンスダッシュボード
  • リアルタイムメトリクスの表示
  • 過去の傾向分析
  • SLA遵守状況の追跡
  • リソース使用率のグラフ
  • ユーザーエクスペリエンスのメトリクス
ベンチマークドキュメント
  • ベースラインとなるパフォーマンスメトリクス
  • 業界との比較
  • 競合分析
  • パフォーマンス目標の設定
  • 進捗状況の追跡

業界別の専門知識

Eコマースのパフォーマンス
  • ショッピングカートのパフォーマンス
  • チェックアウトプロセスの最適化
  • 検索機能のテスト
  • 商品カタログのパフォーマンス
  • 決済処理の最適化
金融サービス
  • 取引システムのパフォーマンス
  • リスク計算の速度
  • レポート生成のパフォーマンス
  • データ処理の効率
  • 規制コンプライアンス要件
医療システム
  • 患者データの取得
  • 医用画像処理のパフォーマンス
  • リアルタイム監視システム
  • データプライバシーのコンプライアンス
  • システム可用性要件

成果物

テスト計画とシナリオ
  • 包括的なテスト戦略
  • 詳細なテストシナリオ
  • 負荷プロファイルの仕様
  • テストデータ要件
  • 実行スケジュール
パフォーマンスレポート
  • 詳細な分析レポート
  • エグゼクティブサマリー
  • 技術的な推奨事項
  • 最適化ロードマップ
  • パフォーマンスベンチマーク
自動化フレームワーク
  • カスタムテストスクリプト
  • CI/CD統合コード
  • 監視設定
  • アラートシステムの設定
  • ドキュメントとトレーニング資料

アンチパターン

テスト設計のアンチパターン
  • 非現実的なワークロード:実際の使用パターンを反映しないテスト — まず本番トラフィックをプロファイリングします
  • 思考時間の欠如:ユーザーの一時停止時間を設けずにリクエストを連続して行うこと — 現実的なユーザーの遅延を含めます
  • 静的データのみ:データに変化のないテスト — パラメーター化した多様なテストデータを使用します
  • 単一シナリオへの偏重:1つの経路のみをテストすること — 重要なユーザージャーニーをすべて網羅します
実行時のアンチパターン
  • テスト環境のギャップ:本番環境を適切に反映していない環境でテストすること。本番環境の構成に合わせます
  • ウォームアップなし:システムをウォームアップせずにテストを開始すること。ランプアップ期間を設けます
  • 早すぎる終了:限界を見つける前にテストを終了すること。障害が発生するまで続けます
  • エラー率の無視:応答時間だけに注目すること。エラー率も監視します
分析時のアンチパターン
  • 平均値のみ:平均値だけに依存すること。パーセンタイルと分布を分析します
  • ベースラインなし:ベースラインと比較せずにテストすること。パフォーマンスのベースラインを設定します
  • スナップショットテスト:傾向を追跡せずに一度だけテストすること。継続的に監視します
  • メトリクスの過剰追跡:関連性のないメトリクスを追跡しすぎること。SLA に関連するメトリクスに注目します
ツールに関するアンチパターン
  • 一度だけ作成したスクリプト:テストを保守・更新しないこと。テストを本番コードとして扱います
  • テストの手動作成:テスト生成を自動化しないこと。仕様からテストを生成します
  • CI との統合なし:パフォーマンステストを手動で実行すること。CI/CD パイプラインに統合します
  • リソースの競合:負荷生成ツールの性能が不十分であること。十分な負荷生成能力を確保します

コメント