

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

# 測試自動化
<a name="test-automation"></a>

使用專門的架構和工具進行自動化測試，可以減少人工介入並最大限度地提高品質。自動化效能測試與單元測試和整合測試等自動化測試並無不同。

在不同的階段使用 DevOps 管道進行效能測試。

![\[流程圖顯示五個階段。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/performance-engineering-aws/images/performance-engineering-devops-pipeline.png)


測試自動化管道的五個階段為：

1. **設定** – 使用此階段測試資料[產生一節所述的測試資料](test-data-generation.md)方法。產生逼真的測試資料對於取得有效的測試結果至關重要。您必須仔細建立涵蓋各種使用案例的多樣化測試資料，並緊密符合即時生產資料。在執行完整規模的效能測試之前，您可能需要執行初始試驗測試，以驗證測試指令碼、環境和監控工具。

1. **測試工具** – 若要執行效能測試，請選取適當的負載測試工具，例如 JMeter 或 ghz。在模擬真實世界使用者負載方面，考慮最適合您的業務需求。

1. **測試執行** – 建立測試工具和環境後，在一系列預期的使用者負載和持續時間中執行end-to-end效能測試。在整個測試過程中，請密切監控要測試之系統的運作狀態。這通常是長時間執行的階段。監控自動測試失效的錯誤率，如果有太多錯誤，請停止測試。

   負載測試工具提供資源使用率、回應時間和潛在瓶頸的洞見。

1. **測試報告** – 收集測試結果以及應用程式和測試組態。自動化應用程式組態、測試組態和結果的收集，有助於記錄效能測試相關資料並將其集中儲存。集中維護效能資料有助於提供良好的洞見，並支援以程式設計方式為您的業務定義成功條件。

1. **清除** – 完成效能測試執行後，請重設測試環境和資料，以準備後續執行。首先，您可以還原執行期間對測試資料所做的任何變更。您必須將資料庫和其他資料存放區還原為其原始狀態，還原測試期間產生的任何新、更新或刪除的記錄。

您可以重複使用管道重複測試多次，直到結果反映您想要的效能。您也可以使用管道來驗證程式碼變更不會破壞效能。您可以在非上班時間執行程式碼驗證測試，並使用可用於故障診斷的測試和可觀測性資料。

最佳實務包括下列項目：
+ 記錄開始和結束時間，並自動產生用於記錄URLs，這可協助您篩選適當的時段內的可觀測性資料。 監控和追蹤系統。
+ 叫用測試時，在 標頭中注入測試識別符。應用程式開發人員可以使用識別符做為後端的篩選條件，來豐富其記錄、監控和追蹤資料。
+ 將管道限制為一次只能執行一次一次。執行並行測試會產生噪音，在故障診斷期間可能會導致混淆。在專用效能環境中執行測試也很重要。

## 測試自動化工具
<a name="automation-tools"></a>

測試工具在任何測試自動化中都扮演重要角色。開放原始碼測試工具的熱門選擇包括下列項目：
+ [Apache JMeter](https://jmeter.apache.org/) 是經驗豐富的、功能強大的工具。多年來，Apache JMeter 變得更加可靠並新增了功能。使用圖形介面，您無需了解程式設計語言即可建立複雜的測試。BlazeMeter 等公司支援 Apache JMeter。
+ [K6](https://k6.io/) 是一種免費工具，可提供支援、負載來源託管以及用於組織、執行和分析負載測試的整合式 Web 介面。
+ [Vegeta](https://github.com/tsenart/vegeta) 負載測試遵循不同的概念。您可以定義特定速率，而不是定義並行或向系統施加負載。然後，此工具會建立獨立於系統回應時間的負載。
+ [Apache HTTP 伺服器工作台標記工具 - ](https://github.com/rakyll/hey)嘿，[ab](https://httpd.apache.org/docs/2.4/programs/ab.html) 是您可以從命令列使用的基本工具，在單一端點上執行指定的負載。如果您具有伺服器來執行這些工具，這是產生負載的最快方法。即使本機筆記型電腦也能執行，儘管它可能不足以產生高負載。
+ [ghz](https://ghz.sh/) 是一種命令列公用程式和 [Go](http://golang.org/) 套件，用於負載測試和標竿標記 [gRPC](http://grpc.io) 服務。

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)。