

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

# テストデータ生成
<a name="test-data-generation"></a>

テストデータの生成には、パフォーマンステストケースを実行するための大量のデータの生成と維持が含まれます。この生成されたデータは、さまざまなデータセットでアプリケーションをテストできるように、テストケースへの入力として機能します。

多くの場合、テストデータの生成は複雑なプロセスです。ただし、データセットの作成が不十分な場合、本番環境でアプリケーションの動作が予測不能になる可能性があります。パフォーマンステストのテストデータ生成は、従来のテストデータ生成アプローチとは異なります。これには実際のシナリオが必要であり、ほとんどのお客様は実際の本番稼働用データに似たデータを使用してワークロードをテストしたいと考えています。生成されたテストデータも、通常、各テスト実行後に元の状態にリセットまたは更新する必要があります。これにより、時間と労力が増大します。

テストデータの生成には、以下の主な考慮事項が含まれます。
+ **精度** – データの精度は、テストのあらゆる側面で重要です。データが不正確になると、結果が不正確になります。たとえば、クレジットカード取引が生成された場合、将来の日付にすることはできません。
+ **有効 –** データはユースケースに対して有効である必要があります。たとえば、クレジットカード取引のテスト中に、1 日あたりユーザーあたり 10,000 件の取引を生成することはお勧めしません。これは、有効なユースケースシナリオから大きく逸脱するためです。
+ **自動化** – テストデータ生成の自動化は、時間的労力の利点をもたらす可能性があります。また、効果的なテスト自動化にもつながります。テストデータを手動で生成すると、品質と時間的労力の要件に関して結果が生じる可能性があります。

  ユースケースに基づいて採用できるメカニズムは異なります。
  + **API 駆動**型 – この場合、開発者はテスターがデータの生成に使用できるテストデータ生成 API を提供します。[JMeter](https://jmeter.apache.org/) などのテストツールを使用して、テスターはビジネス API を使用してデータ生成をスケールできます。たとえば、ユーザーを追加する API がある場合、同じ API を使用して、異なるプロファイルを持つ数百のユーザーを作成できます。同様に、API の削除オペレーションを呼び出してユーザーを削除できます。複雑なワークフローアプリケーションの場合、開発者はさまざまなコンポーネント間でデータセットを生成できる複合 API を提供できます。このアプローチを使用すると、テスターは自動化を記述して、要件に基づいてデータセットを生成および削除できます。

    ただし、システムが複雑な場合、または呼び出しあたりの API 応答時間が長い場合、データの設定と削除に時間がかかることがあります。
  + **SQL ステートメント駆動**型 – 別の方法は、バックエンド SQL ステートメントを使用して大量のデータを生成することです。開発者は、テストデータ生成用のテンプレートベースの SQL ステートメントを提供できます。テスターは、ステートメントを使用してデータを入力することも、これらのステートメントの上にラッパースクリプトを作成してテストデータの生成を自動化することもできます。このアプローチを使用すると、テストの完了後にデータをリセットする必要がある場合に、テスターはデータを非常に迅速に入力および削除できます。ただし、このアプローチではアプリケーションのデータベースに直接アクセスする必要があります。これは、一般的なセキュリティで保護された環境では不可能な場合があります。さらに、無効なクエリでは、誤ったデータ母集団が発生し、結果に歪みが生じる可能性があります。また、開発者はアプリケーションコードの SQL ステートメントを継続的に更新して、時間の経過とともにアプリケーションに加えられた変更を反映する必要があります。

## テストデータ生成ツール
<a name="data-tools"></a>

AWS には、テストデータ生成に使用できるネイティブカスタムツールが用意されています。
+ **Amazon Kinesis Data Generator** – Amazon Kinesis Data Generator (KDG) は、データを生成して Amazon Kinesis に送信するタスクを簡素化します。このツールは、ブラウザで直接実行される使いやすい UI を提供します。詳細とリファレンス実装については、[「新しい Amazon Kinesis Data Generator によるストリーミングデータソリューションのテスト](https://aws.amazon.com/blogs/big-data/test-your-streaming-data-solution-with-the-new-amazon-kinesis-data-generator/)」ブログ記事を参照してください。
+ **AWS Glue テストデータジェネレータ**ー – AWS Glue テストデータジェネレーターは、 AWS Glue PySpark サーバーレスジョブを使用したテストデータ生成用の設定可能なフレームワークを提供します。必要なテストデータの説明は、YAML 設定ファイルを使用して完全に設定できます。詳細とリファレンスの実装については、[AWS Glue 「Test Data Generator](https://github.com/aws-samples/aws-glue-test-data-generator) GitHub repository」を参照してください。