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