

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

# 使用的工具
<a name="tools"></a>

## k6
<a name="k6"></a>

[k6](https://k6.io/) 是免費的工具，可提供支援、託管負載來源，以及整合的 Web 界面，以組織、執行和分析負載測試。

k6 是以 Go 撰寫，並以單一可執行檔形式運送。它將使用來源系統的所有核心。它使用 JavaScript 的子集來執行複雜的案例，且包含測試設定檔。您可以使用 JavaScript 建立高效執行的複雜測試案例。輸出可以是摘要，也可以是許多目標儲存的詳細輸出。支援擴充功能，但除了官方 k6 擴充功能之外，只有少數維護良好的擴充功能。

大多數負載測試可以從單一伺服器執行，如果伺服器足夠大，這將避免更複雜的分散式負載測試。

負載測試結果可以轉送至 [Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html)、[Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 或其他監控服務以進行更詳細的分析。還可以在案例程式碼中包含成功條件，以在持續整合 (CI) 管道中執行它。

## Vegeta
<a name="vegeta"></a>

[Vegeta](https://github.com/tsenart/vegeta) 負載測試遵循不同的概念。您可以定義特定速率，而不是定義並行或向系統施加負載。然後，此工具會建立獨立於系統回應時間的負載。

這是探索背壓案例或後端程序的長期行為的好方法，您希望在其中消除回應時間和測試的影響。此工具無法執行複雜行為，但您可以執行不需要在請求之間傳遞資訊的任何請求序列。

Vegeta 也可以用作 Go 應用程式庫。這樣，您就可以實作自己的負載測試，並擁有強大的後端。儘管使用其他工具可能比實作自己的測試更有意義。

## Hey 和 ab
<a name="hey-ab"></a>

[Hey](https://github.com/rakyll/hey) 和 [ab](https://httpd.apache.org/docs/2.4/programs/ab.html) (Apache HTTP 伺服器基準測試工具) 是基本工具，您可以從命令列將其用於在單一端點上執行指定的負載。如果您具有伺服器來執行這些工具，這是產生負載的最快方法。即使本機筆記型電腦也能執行，儘管它可能不足以產生高負載。

## Apache JMeter
<a name="apache-jmeter"></a>

[Apache JMeter](https://jmeter.apache.org/) 是經驗豐富的、功能強大的工具。多年來，Apache JMeter 變得更加可靠並新增了功能。使用圖形介面，您無需了解程式設計語言即可建立複雜的測試。BlazeMeter 等公司支援 Apache JMeter。

## 上的分散式負載測試 AWS
<a name="distributed-load-testing-on-aws"></a>

[AWS 解決方案上的分散式負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/)支援使用自訂 Apache JMeter 指令碼。當您在 AWS 解決方案上使用分散式負載測試時，您可以上傳 Apache JMeter 指令碼以在雲端中執行測試。另一個好處是輸出支援。您可以將事件串流至時間串流資料庫並在頂部執行進階查詢，從而讓您詳細了解完整的測試執行。若要使用此工具，[請在 AWS 主控台中啟動 範本](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?&templateURL=https://solutions-reference.s3.amazonaws.com/distributed-load-testing-on-aws/latest/distributed-load-testing-on-aws.template&redirectId=PrescriptiveGuidance)。

## 砲兵
<a name="artillery"></a>

Artillery 提供新的雲端自訂功能。Artillery 的突出功能之一是能夠 AWS 帳戶 使用 AWS Lambda 函數 （容器模式） 和 等無伺服器架構，直接從 執行測試 AWS Fargate。這種無伺服器方法不需要管理專用基礎設施，提供高度可擴展且符合成本效益的負載測試解決方案。

Artillery 也具有內建自動化，用於佈建和銷毀執行測試所需的資源。與傳統工具不同，您不需要將基礎設施撰寫為程式碼 (IaC) 指令碼或手動管理雲端資源。Artillery 負責處理一切，這使得它成為現代雲端原生應用程式的高效且適合開發人員的選擇。

最後，Ardery 支援 GitHub 動作，以與現有的持續整合和交付 (CI/CD) 管道整合。