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


































