

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 測試資料產生
<a name="test-data-generation"></a>

測試資料產生涉及產生和維護大量資料以執行效能測試案例。此產生的資料可做為測試案例的輸入，讓應用程式可以在一組不同的資料上進行測試。

通常，產生測試資料是一個複雜的程序。不過，使用建立不良的資料集可能會導致生產環境中應用程式行為無法預測。效能測試的測試資料產生與傳統測試資料產生方法不同。它需要真實世界的案例，大多數客戶想要使用與其實際生產資料類似的資料來測試工作負載。產生的測試資料通常也需要在每次測試執行後重設或重新整理為其原始狀態，這會增加時間和精力。

測試資料產生包括下列主要考量事項：
+ **準確性** – 資料的準確性在測試的各個方面都很重要。不正確的資料會產生不準確的結果。例如，產生信用卡交易時，不應該是未來的日期。
+ **有效性** – 資料應該對使用案例有效。例如，在測試信用卡交易時，不建議每位使用者每天產生 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 測試資料產生器](https://github.com/aws-samples/aws-glue-test-data-generator) GitHub 儲存庫。