performance-testing について
performance-testingは、アプリケーション、API、インフラの性能テストを支援するスキルです。負荷、ストレス、耐久テストに加え、指標の分析、ボトルネックの特定、テスト自動化を扱います。
主な機能
- 01負荷、ストレス、耐久テスト
- 02ワークロードとシナリオの設計
- 03レイテンシとスループットの分析
- 04リソースとボトルネックの分析
- 05性能回帰テストの自動化
活用シーン
- 01SLAに対するAPIレイテンシの検証
- 02ピーク時の前に容量上限を特定
- 03長時間テストでメモリリークを検出
- 04CI/CDに性能チェックを追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill performance-testingインストール後、Claude Code で/performance-testingを入力して読み込まれたか確認します。
詳細
パフォーマンステストスキル
目的
アプリケーション、API、インフラストラクチャシステムを対象に、負荷テスト、ストレステスト、耐久テストを専門とする包括的なパフォーマンステストの知識を提供します。さまざまな負荷条件下でのシステムの動作を検証し、容量の上限を特定します。
使用する場面
- 同時ユーザーをシミュレートする負荷テストを実施するとき
- 限界点を見つけるためにストレステストを実施するとき
- メモリリークを検出する耐久テストを実行するとき
- 負荷の増加に対するシステムの拡張性を検証するとき
- 応答時間とスループットの指標を測定するとき
- リソース使用率のパターンを分析するとき
例
例 1:E コマースプラットフォームの負荷テスト
シナリオ: ブラックフライデーを控えた E コマースプラットフォームで、予想トラフィックの 10 倍の負荷に対するパフォーマンスを検証する必要があります。
実装:
- 過去のトラフィックパターンを分析し、現実的な負荷をモデル化しました
- 重要な経路(閲覧、カート、チェックアウト)を対象とする JMeter テストシナリオを作成しました
- ランプアップ期間を設け、10,000 人の同時ユーザーをシミュレートしました
- 負荷下でデータベースクエリをテストし、N+1 問題を特定しました
- オートスケーリングのトリガーとしきい値を検証しました
結果:
- 重大なボトルネックを 3 件(DB 2 件、API 1 件)特定しました
- 平均応答時間を 2.3s から 450ms に短縮しました
- システムが 50,000 人の同時ユーザーに対応できることを検証しました
- オートスケーリングが 45 秒以内に作動することを確認しました
例 2:API のパフォーマンスベンチマーク
シナリオ: 金融サービスの API で、SLA 要件(P99 <200ms)に対するパフォーマンスの検証が必要です。
実装:
- すべての API エンドポイントを対象とする k6 テストスクリプトを作成しました
- さまざまな同時実行レベル(100、500、1000)でテストしました
- 応答時間の分布(P50、P90、P95、P99)を分析しました
- 応答を遅くしているデータベースクエリのプロファイルを作成しました
- クエリの最適化とキャッシュを実装しました
結果:
- P99 レイテンシを 850ms から 145ms に短縮しました
- スループットを 500 RPS から 2,500 RPS に向上させました
- すべてのエンドポイントが SLA 要件を満たしています
- パフォーマンスのリグレッションテストスイートを作成しました
例 3:マイクロサービスのカオステスト
シナリオ: マイクロサービスアーキテクチャで、一部のサービスが停止した場合の動作を検証する必要があります。
実装:
- サービス障害を想定したカオステストシナリオを設計しました
- レイテンシの注入とエラーレスポンスを実装しました
- サーキットブレーカーの機能と復旧をテストしました
- グレースフルデグラデーションの動作を検証しました
- カオス発生時のエンドツーエンドのリクエストフローを測定しました
結果:
- 適切なサーキットブレーカーを備えていないサービスを 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 パイプラインに統合します
- リソースの競合:負荷生成ツールの性能が不十分であること。十分な負荷生成能力を確保します
コメント
Markdown 対応