八種值得推薦的微服務測試工具
譯文【51CTO.com快譯】近年來,微服務為各個行業打造了高度靈活、且適應性強的IT基礎設施。作為一種獨特的軟件開發方法,它主要專注于通過分別執行和實現單一的功能模塊,來協同實現軟件產品所既定的整體任務與服務。同時,它可以使開發者按需僅更改某一項服務,而無需修改其余的基礎架構。
簡而言之,微服務架構既可以輕松部署和更改每一項服務,又不會影響其他的應用程序或服務功能。測試人員和開發人員不必拘泥于傳統的、集多種功能為一身的單體架構(monolithic architecture),而只需使用微服務方法,為每個功能構建獨立的模塊即可。
不過,微服務架構也會讓應用程序變得更加復雜,尤其是在我們添加了多項功能后。相應地,由于應用程序本身具有分布式的特性,它也增加了針對眾多服務組合功能的測試復雜性。此外,由于微服務在實現上,可以遵循不同的架構,因此我們往往還需要某些特殊的工具與策略,來測試和驗證微服務的執行效果。通常,在針對微服務的測試中,我們應當注意如下三個方面:
- 是否能檢驗各種代碼的基本功能和運行能力
- 是否能提供準確、快速且可靠的反饋
- 是否能簡化整個維護過程
微服務架構的主要優勢
- 更好的可擴展性
能夠伴隨著對于某些服務需求而增長,或是在不同的基礎設施和服務器上按需執行。
- 快速交付
通過分布式開發,微服務架構使團隊能夠同時開發出大量的微服務。此外,由于開發周期的縮短,微服務也有益于加快代碼的迭代與更新。在此基礎上,測試團隊將會有更多的時間去全面測試目標代碼或軟件產品。
- 已定義的架構
由于那些大型應用會被分解成為更小的部分,因此測試人員將可以更加輕松地去理解各個較小的部分,進而快速地對它們進行改進或增強。通過此類方式,整個項目團隊將能夠獲取更加快速的開發周期。
- 魯棒性
由于微服務能夠支持各種自主開發、不同的環境應用、以及服務運維。因此,如果應用程序能夠很好地遵循此類模式,那么就算有單個服務出現了異常或崩潰,也不會影響到同一個應用中的其他服務。可以說,每個微服務的“服務邊界性”,有效地保障了整個應用對于故障的隔離。
- 易于執行
由于微服務應用遵循的是模塊化的方法,因此導致了每個服務都會比傳統的單體架構應用程序的體積要小得多。同理,單個服務在執行的過程中也就更加簡便。
知名的八種微服務測試工具
目前,業界有著許多種工具可以被用于按需跟蹤、監控和修復微服務各項設計和操作。在此,我將向您簡要地介紹八種最為常用且流行的微服務測試工具。
- InfluxDB
InfluxDB是一種采用Go語言編寫而成的免費應用工具。實際上,它是一個快速、可靠、且具有高度可訪問性的數據庫。通過優化,它能夠檢索各種時序類型的數據。憑借著其分布優勢,測試人員往往可以通過使用該工具,迅速地發現并定位被測微服務在性能上的瓶頸。如果您想了解更多有關InfluxDB的具體特性,請參見--https://www.influxdata.com/。
- Apache JMeter
作為一種高效且實用的性能測試工具,Apache JMeter可以通過從不同來源獲取數據的方式,方便測試人員在不同規模的軟件中,對微服務全面開展功能和性能上的測試。如果您想了解更多有關Apache JMeter的具體特性,請參見--https://jmeter.apache.org/。
- Gatling
Gatling是一種采用Scala語言編寫的微服務測試工具。在設計上,該工具具有易用性、可維護性、以及較高的性能。它能夠被測試人員在許多平臺上模擬微服務的執行。而執行完畢后,Gatling會在自動生成的報告中,體現活動用戶數、以及響應時間等運行中的參數指標。作為一種開源且免費的工具,Gatling主要測量的是那些基于HTTP的Web應用服務器,并且能夠在測試中支持各種腳本、插件和集成。它對于微服務的性能測試能力,有著不俗的表現。如果您想了解更多有關Gatling的具體特性,請參見--https://gatling.io/。
- Jaeger
Jaeger是一種端到端的分布式開源跟蹤工具(Uber在其分布式系統中,就用到了該工具),可用于檢測和排查以微服務為中心的系統。通過在被測軟件的運行環境中跟蹤不同的服務,它可以檢查各種潛在的根本原因、關鍵服務的依賴關系、以及有待執行性能優化的領域。如果您想了解更多有關Jaeger的具體特性,請參見--https://www.jaegertracing.io/。
- Hoverfly
作為一種自動化的開源式API通信模擬工具,Hoverfly可以協助用戶開展各種集成測試工作。例如,用戶可以根據網絡中的速率限制和延遲問題,去檢查微服務的API是如何就某個具體事件做出反應的。同時,它可以通過模擬通信的方式,在微服務之間運行各種測試調用,進而以代理的模式,記錄針對某種請求的響應效果,并最終確認其是否能夠按照預期執行或反饋。如果您想了解更多有關Hoverfly的具體特性,請參見--https://hoverfly.io/。
- Pact
作為一種契約式測試工具,Pact可用于監控HTTP和各種消息之間的交互,以確保應用程序以消費者驅動契約(consumer-driven contract)的方式運行。此處的契約是指,在軟件系統中,各項服務之間進行數據交互的標準化格式。例如:消費者端(client)和服務器端(server)之間交互的數據接口等。從本質上講,消費者驅動契約能夠讓測試者以一種離線且解耦的方式(即,無需消費者端和服務器端同時在線),而依賴契約作為中間的標準,以驗證服務器端的內容是否滿足消費者端的預期輸出。因此,此類獨特的測試方法,可以大幅減少單元測試的工作量。最初,Pact是采用Ruby語言實現的,后來陸續被JS、C#、Java、Go、Python等語言所重寫。Pact可以針對微服務模式下的多個單獨服務接口進行契約測試。如果您想了解更多有關Pact的具體特性,請參見--https://docs.pact.io/。
- Amazon CloudWatch
作為一套針對監控的解決方案,Amazon CloudWatch可被用于監控部署在Amazon Web Services上的各種應用程序、或微服務的資源使用情況。CloudWatch為用戶提供了相關數據和切實見解,以監控應用程序、響應系統的性能變化、優化資源的利用率,并在統一視圖中查看整體運營的狀況。
它能夠以日志、事件、以及參數指標的形式,通過收集監控到的數據,發現被測微服務、及其環境中的各種負載狀態、異常行為、性能變化、以及有待優化的資源利用率等方面,因此它是一個非常實用的工具。如果您想了解更多有關Amazon CloudWatch的具體特性,請參見--https://aws.amazon.com/cloudwatch/。
- Grafana
Grafana是一個免費的、針對參數指標可視化的分析套件。測試者可以使用它來可視化各種時序數據,以實時地反映出被測微服務的流量變化和服務狀態。如果您想了解更多有關Grafana的具體特性,請參見--https://grafana.com/。
小結
總的說來,選擇一款合適自己的微服務測試工具,不但可以幫助我們盡早地發現和糾正現有軟件代碼中的問題,進而提高待測軟件的整體質量;而且從長遠角度來說,能夠極大地增加開發團隊和客戶對于被測軟件產品的信心,增強贏得市場的動力。
原文標題:Top Microservices Testing Tools Testers Should Know About,作者:Shormistha Chatterjee
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

































