|
| 1 | +# 🚀 BINGO アプリケーション 負荷試験フレームワーク(共通基盤) |
| 2 | + |
| 3 | +このディレクトリには、BINGOアプリケーション用の負荷試験フレームワークの共通設定と分析ツールが含まれています。 |
| 4 | + |
| 5 | +**注意**: 実際の負荷試験ツール(ArtilleryとK6)は、GitHub差分サイズの制限により別ブランチに分離されています。 |
| 6 | + |
| 7 | +## 🗂️ ブランチ構成 |
| 8 | + |
| 9 | +このプロジェクトは以下の3つのブランチに分離されています: |
| 10 | + |
| 11 | +### 1. `feat/yama/server-testing` (このブランチ) |
| 12 | +- **目的**: 共通設定とドキュメント |
| 13 | +- **内容**: 環境設定、結果分析ツール、概要ドキュメント |
| 14 | + |
| 15 | +### 2. `feat/yama/artillery-load-testing` |
| 16 | +- **目的**: Artillery負荷試験ツール |
| 17 | +- **内容**: Artillery統合テスト(3ファイル構成) |
| 18 | +- **特徴**: HTTP/WebSocket統合、動的設定生成 |
| 19 | + |
| 20 | +### 3. `feat/yama/k6-load-testing` |
| 21 | +- **目的**: K6高性能負荷試験ツール |
| 22 | +- **内容**: K6統合テスト(4ファイル構成) |
| 23 | +- **特徴**: JavaScript実行、WebSocket/HTTP分離テスト |
| 24 | + |
| 25 | +## 📁 共通ファイル構成 |
| 26 | + |
| 27 | +``` |
| 28 | +loadtest/ |
| 29 | +├── config/ # 共通設定 |
| 30 | +│ └── environments.js # 環境設定 |
| 31 | +├── results/ # テスト結果保存 |
| 32 | +├── analyze-results.sh # 結果分析スクリプト |
| 33 | +└── README.md # このファイル |
| 34 | +``` |
| 35 | + |
| 36 | +## 🚀 使用方法 |
| 37 | + |
| 38 | +各負荷試験ツールを使用するには、対応するブランチに切り替えてください: |
| 39 | + |
| 40 | +### Artillery負荷試験 |
| 41 | +```bash |
| 42 | +git checkout feat/yama/artillery-load-testing |
| 43 | +cd loadtest |
| 44 | +./run-tests.sh artillery |
| 45 | +``` |
| 46 | + |
| 47 | +### K6負荷試験 |
| 48 | +```bash |
| 49 | +git checkout feat/yama/k6-load-testing |
| 50 | +cd loadtest |
| 51 | +./run-tests.sh unified # 統合HTTP負荷テスト |
| 52 | +./run-tests.sh websocket # WebSocket負荷テスト |
| 53 | +``` |
| 54 | + |
| 55 | +### 結果分析(全ブランチ共通) |
| 56 | +```bash |
| 57 | +./analyze-results.sh |
| 58 | +``` |
| 59 | + |
| 60 | +## 🎯 負荷試験種類の概要 |
| 61 | + |
| 62 | +### Artillery統合負荷試験 |
| 63 | +- HTTP APIとWebSocketの統合テスト |
| 64 | +- 動的設定生成(最大ユーザー数に基づく) |
| 65 | +- HTMLレポート生成 |
| 66 | +- 現実的なユーザー行動パターン |
| 67 | + |
| 68 | +### K6統合負荷試験 |
| 69 | +- **統合HTTP負荷テスト**: ユーザー行動シミュレーション |
| 70 | +- **WebSocket負荷テスト**: リアルタイム通信専用 |
| 71 | +- JavaScript実行エンジン |
| 72 | +- JSON結果出力 |
| 73 | + |
| 74 | +## ⚙️ 環境設定 |
| 75 | + |
| 76 | +### 対応環境 |
| 77 | +- **local**: localhost:3000, localhost:8080 |
| 78 | +- **production**: bingo.nutfes.net, bingo-api.nutfes.net |
| 79 | + |
| 80 | +### 設定オプション |
| 81 | +```bash |
| 82 | +# 環境指定 |
| 83 | +-e, --environment ENV 実行環境 (local|production) |
| 84 | + |
| 85 | +# 最大ユーザー数指定 |
| 86 | +-u, --max-users NUM 最大ユーザー数 |
| 87 | +``` |
| 88 | + |
| 89 | +## 📊 パフォーマンス目標 |
| 90 | + |
| 91 | +| 指標 | Artillery目標 | K6目標 | |
| 92 | +|------|---------------|---------| |
| 93 | +| HTTP平均レスポンス時間 | < 500ms | < 300ms | |
| 94 | +| HTTP 95%ileレスポンス時間 | < 1000ms | < 800ms | |
| 95 | +| WebSocket接続時間 | < 1000ms | < 500ms | |
| 96 | +| エラー率 | < 1% | < 0.5% | |
| 97 | + |
| 98 | +## 🔧 結果分析 |
| 99 | + |
| 100 | +共通の結果分析ツール: |
| 101 | + |
| 102 | +```bash |
| 103 | +./analyze-results.sh # 基本分析 |
| 104 | +./analyze-results.sh evaluate # パフォーマンス判定 |
| 105 | +./analyze-results.sh list # 結果ファイル一覧 |
| 106 | +``` |
| 107 | + |
| 108 | +## 📈 メトリクス |
| 109 | + |
| 110 | +### Artillery |
| 111 | +- HTTP response time |
| 112 | +- WebSocket connection time |
| 113 | +- Error rates |
| 114 | +- User scenarios |
| 115 | + |
| 116 | +### K6 |
| 117 | +- HTTP response time |
| 118 | +- WebSocket message latency |
| 119 | +- Connection errors |
| 120 | +- Custom metrics |
| 121 | + |
| 122 | +## 🚧 注意事項 |
| 123 | + |
| 124 | +1. **ブランチ分離**: 実際の負荷試験実行には、対応するブランチに切り替えが必要です |
| 125 | +2. **依存関係**: 各ブランチで異なる依存関係(Artillery: npm, K6: k6バイナリ) |
| 126 | +3. **結果保存**: 結果は各ブランチの`results/`ディレクトリに保存されます |
| 127 | + |
| 128 | +## 🔗 関連PR |
| 129 | + |
| 130 | +- [#338 - 負荷試験フレームワーク(共通基盤)](https://github.com/NUTFes/nutfes-Bingo/pull/338) (このブランチ) |
| 131 | +- [#341 - Artillery負荷試験ツール](https://github.com/NUTFes/nutfes-Bingo/pull/341) |
| 132 | +- [#342 - K6高性能負荷試験ツール](https://github.com/NUTFes/nutfes-Bingo/pull/342) |
0 commit comments