

# テストシナリオを実行する
<a name="run-test-scenario"></a>

テストシナリオを作成したら、すぐに実行するか、将来の特定の時間に実行するようにスケジュールできます。実行中のテストに移動すると、コンソールにリアルタイムのタスクステータスとメトリクスを含むシナリオの詳細タブが表示されます。

![タスクステータスとリアルタイムメトリクスを示すテストシナリオの実行](http://docs.aws.amazon.com/ja_jp/solutions/latest/distributed-load-testing-on-aws/images/running-test-overview.png)


## シナリオの詳細ビュー
<a name="scenario-details-view"></a>

シナリオの詳細タブには、テストに関する主要な情報が表示されます。各リージョンのタスクステータステーブルのリアルタイム情報。

 **タスクステータステーブル** 

タスクステータステーブルには、各リージョンののリアルタイム情報が表示されます。
+  **リージョン** - タスクが実行されている AWS リージョン
+  **タスク数** - リージョンに設定されたタスクの合計数
+  **同時実行数** - タスクあたりの仮想ユーザー数
+  **実行中** - 現在テストを実行しているタスクの数
+  **保留中** - 開始を待っているタスクの数
+  **プロビジョニング** - プロビジョニング中のタスクの数

## テスト実行ワークフロー
<a name="test-execution-workflow"></a>

テストが開始されると、次のワークフローが発生します。

1.  **タスクプロビジョニング** - ソリューションは、指定された AWS リージョンにコンテナ (タスク) をプロビジョニングします。タスクは [プロビジョニング中] 列に表示されます。

1.  **タスクのスタートアップ** - ソリューションは、各リージョンでターゲットタスク数に達するまでタスクのプロビジョニングを続行します。タスクは、[プロビジョニング中] から [保留中]、そして [実行中] に移動します。

1.  **トラフィック生成** - ソリューションがリージョン内のすべてのタスクをプロビジョニングすると、ターゲットエンドポイントへのトラフィックの送信が開始されます。

1.  **テストの実行** - テストは設定された期間 (ランプアップ \+ ホールド時間) 実行されます。

1.  **結果の解析** - テストが終了すると、バックグラウンド解析ジョブはすべてのリージョンの結果を集計して処理します。

## テスト実行のステータス
<a name="test-statuses"></a>

テスト実行は、次の状態になります。
+  **スケジュール済み** - テストは今後実行されるようスケジュールされています。
+  **実行中** - テストは現在進行中です。
+  **キャンセル済み** - ユーザーが進行中のテスト実行をキャンセルしました。
+  **エラー発生** - テスト実行でエラーが発生しました。
+  **完了** - テスト実行は正常に完了し、結果の準備が完了しています。

## ライブデータを使用したモニタリング
<a name="monitoring-live-data"></a>

テストシナリオの作成時にライブデータを有効にした場合、テストの実行中にリアルタイムのメトリクスを表示できます。リアルタイムメトリクスセクションには、テストの進行に伴って継続的に更新される 4 つのグラフが表示され、データは 1 秒間隔で集計されます。

![ライブテストのパフォーマンスデータを示すリアルタイムメトリクスグラフ](http://docs.aws.amazon.com/ja_jp/solutions/latest/distributed-load-testing-on-aws/images/real-time-metrics.png)


 **グラフの説明** 

 **平均応答時間**   
各リージョンで処理されたリクエストの平均応答時間を秒単位で示します。Y 軸は応答時間を秒単位で示し、X 軸はその日の時刻を示します。各リージョンは、凡例内の異なる色で表されます。

 **仮想ユーザー**   
各リージョンで負荷をアクティブに生成する同時仮想ユーザーの数を示します。グラフには、テスト中に仮想ユーザーがどのように増加し、ターゲットの同時実行レベルが維持されるかが表示されます。

 **成功したリクエスト**   
各リージョンで成功したリクエストの累積数を継続的に示します。グラフには、成功したリクエストが処理されるレートが表示されます。

 **失敗したリクエスト**   
各リージョンで失敗したリクエストの累積数を継続的に示します。カウントが低いかゼロの場合は、正常なテスト実行であることを示します。

 **マルチリージョンの視覚化** 

複数のリージョンでテストを実行する場合、各グラフにはすべてのリージョンのデータが同時に表示されます。各グラフの下部にある凡例で、各リージョンを表す色 (us-west-2 や us-east-1 など) を識別できます。

 **技術的な実装** 

Fargate タスクの CloudWatch ロググループには、テスト結果をキャプチャするサブスクリプションフィルタが含まれています。パターンが検出されると、Lambda 関数はデータを構造化して AWS IoT Core トピックに発行します。ウェブコンソールはこのトピックにサブスクライブし、リアルタイムでメトリクスを表示します。

**注記**  
ライブデータはエフェメラルであり、テストの実行中にのみ使用できます。ウェブコンソールには最大 5,000 個のデータポイントが保存され、その後、最も古いデータが最新のデータに置き換えられます。ページが更新されると、グラフは空白になり、次に利用可能なデータポイントから開始されます。テストが完了すると、このソリューションは結果データを DynamoDB と Amazon S3 に保存します。まだ利用可能なデータがない場合、グラフには「利用可能なデータはありません」と表示されます。

## テストのキャンセル
<a name="cancelling-tests"></a>

実行中のテストは、ウェブコンソールからキャンセルできます。テストをキャンセルすると、次のワークフローが発生します。

1. キャンセルリクエストが `microservices` API に送信されます

1. `microservices` API は、現在起動しているすべてのタスクを停止する `task-canceler` Lambda 関数を呼び出します。

1. `task-runner` Lambda 関数が最初のキャンセル呼び出し後も引き続き実行される場合、タスクは一時的に起動し続けることがあります。

1. `task-runner` Lambda 関数が終了すると、AWS Step Functions は `Cancel Test` ステップに進み、`task-canceler` Lambda 関数を再度実行して、残りのタスクを停止します。

**注記**  
ソリューションがすべてのコンテナを終了するため、キャンセルされたテストはシャットダウンプロセスを完了するのに時間がかかります。すべてのリソースがクリーンアップされると、テストステータスは [キャンセル済み] に変わります。