

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 自動化をテストする
<a name="test-automation"></a>

特殊なフレームワークとツールを使用した自動テストにより、人間の介入を減らし、品質を最大化できます。自動パフォーマンステストは、ユニットテストや統合テストなどの自動化テストとは異なります。

DevOps パイプラインをパフォーマンステストのさまざまな段階で使用します。

![\[プロセス図は 5 つのステージを示しています。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/performance-engineering-aws/images/performance-engineering-devops-pipeline.png)


テスト自動化パイプラインの 5 つのステージは次のとおりです。

1. **セットアップ** — このステージの「Test-data [generation」セクションで説明されているテストデータ](test-data-generation.md)アプローチを使用します。有効なテスト結果を取得するには、現実的なテストデータを生成することが重要です。さまざまなユースケースをカバーし、ライブ本番稼働データと密接に一致する多様なテストデータを慎重に作成する必要があります。フルスケールのパフォーマンステストを実行する前に、初期トライアルテストを実行してテストスクリプト、環境、モニタリングツールを検証する必要がある場合があります。

1. **テストツール** – パフォーマンステストを実行するには、JMeter や ghz などの適切な負荷テストツールを選択します。実際のユーザーの負荷をシミュレートするという点で、ビジネスニーズに最適なものを検討してください。

1. **テスト実行** – テストツールと環境が確立されたら、予想されるユーザーの負荷と期間の範囲にわたってend-to-endのパフォーマンステストを実行します。テスト中は、テスト対象のシステムの状態を注意深くモニタリングします。これは通常、長時間実行されるステージです。自動テスト無効化のエラー率をモニタリングし、エラーが多すぎる場合はテストを停止します。

   負荷テストツールは、リソースの使用率、応答時間、潜在的なボトルネックに関するインサイトを提供します。

1. **テストレポート** – アプリケーションとテスト設定とともにテスト結果を収集します。アプリケーション設定、テスト設定、結果の収集を自動化し、パフォーマンステスト関連のデータの記録と一元的な保存に役立ちます。パフォーマンスデータを一元管理することで、優れたインサイトを提供し、ビジネスの成功基準をプログラムで定義できます。

1. **クリーンアップ** – パフォーマンステストの実行が完了したら、テスト環境とデータをリセットして後続の実行に備えます。まず、実行中にテストデータに加えられた変更をすべて元に戻します。データベースやその他のデータストアを元の状態に復元し、テスト中に生成された新規、更新、または削除されたレコードを元に戻す必要があります。

パイプラインを再利用して、必要なパフォーマンスが結果に反映されるまでテストを複数回繰り返すことができます。パイプラインを使用して、コードの変更がパフォーマンスを低下させないことを検証することもできます。コード検証テストを営業時間外に実行し、トラブルシューティングに使用できるテストデータとオブザーバビリティデータを使用できます。

ベストプラクティスは次のとおりです。
+ 開始時刻と終了時刻を記録し、ログ記録用の URLsを自動的に生成します。これにより、該当する時間枠でオブザーバビリティデータをフィルタリングし、システムをモニタリングおよびトレースできます。
+ テストの呼び出し中に、 ヘッダーにテスト識別子を挿入します。アプリケーションデベロッパーは、識別子をバックエンドのフィルターとして使用することで、データのログ記録、モニタリング、トレースを強化できます。
+ パイプラインは一度に 1 つの実行のみに制限します。同時テストを実行するとノイズが発生し、トラブルシューティング中に混乱が生じる可能性があります。また、専用のパフォーマンス環境でテストを実行することも重要です。

## テスト自動化ツール
<a name="automation-tools"></a>

テストツールは、テストの自動化において重要な役割を果たします。オープンソーステストツールの一般的な選択肢は次のとおりです。
+ [Apache JMeter](https://jmeter.apache.org/) は、長年の経験で培われたパワーホースです。長年にわたって、Apache JMeter は信頼性を向上させ、機能を追加してきました。グラフィカルインターフェイスを使用することで、プログラミング言語を知らなくても複雑なテストを作成できます。BlazeMeter などの企業が Apache JMeter をサポートしています。
+ [K6](https://k6.io/) は、サポート、負荷ソースのホスト、および負荷テストを整理、実行、分析するための統合ウェブインターフェイスを提供する無料ツールです。
+ [Vegeta](https://github.com/tsenart/vegeta) 負荷テストは別のコンセプトを採用しています。同時実行を定義したり、システムに負荷をかけたりする代わりに、特定のレートを定義します。また、このツールはシステムの応答時間とは無関係に負荷を作成します。
+ Apache HTTP サーバーベンチマーキングツールである [Hey](https://github.com/rakyll/hey) と [ab](https://httpd.apache.org/docs/2.4/programs/ab.html) は、単一のエンドポイントで指定された負荷を実行するためにコマンドラインから使用できる基本的なツールです。ツールを実行するサーバーがある場合、これは負荷を発生させる最も速い方法です。ローカルのラップトップでも動作しますが、高い負荷が発生するほど強力ではない場合があります。
+ [ghz](https://ghz.sh/) は、[gRPC](http://grpc.io) サービスの負荷テストとベンチマーキングのためのコマンドラインユーティリティおよび [Go](http://golang.org/) パッケージです。

AWS は、 での分散負荷テスト AWS ソリューションを提供します。このソリューションは、サーバーをプロビジョニングすることなく、一定のペースでトランザクションレコードを生成する何千人もの接続ユーザーを作成およびシミュレートします。詳細については、[AWS 「 ソリューションライブラリ](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/)」を参照してください。

を使用して AWS CodePipeline 、パフォーマンステストパイプラインを自動化できます。CodePipeline を使用して API テストを自動化する方法の詳細については、[AWS DevOps ブログ](https://aws.amazon.com/blogs/devops/automating-your-api-testing-with-aws-codebuild-aws-codepipeline-and-postman/)と [AWS ドキュメント](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)を参照してください。