性能測試工具Locust和JMeter比較

Apache JMeter?和Locust都是是最受歡迎的性能測試工具。

JMeter和Locust - 簡介

JMeter是久經(jīng)考驗(yàn)的性能框架之一,其第一個版本大約在20年前發(fā)布。 它是用純Java語言編寫的,。 最初,JMeter開發(fā)用于執(zhí)行Web和FTP應(yīng)用程序的負(fù)載測試。 但是,現(xiàn)在它允許測試幾乎所有應(yīng)用程序和協(xié)議,使用戶能夠使用與任何OS平臺兼容的桌面應(yīng)用程序來創(chuàng)建測試。

https://github.com/apache/jmeter 3000+星

Locust是Python編寫的相對新穎的性能框架,在過去的五年中廣為人知。 該框架的主要特點(diǎn)是它允許您使用純Python編寫性能腳本。具有高度可擴(kuò)展性,因?yàn)樗谑录耐耆珜?shí)現(xiàn)。 由于這些事實(shí),Locust擁有一個廣泛且快速發(fā)展的社區(qū),他們比JMeter更喜歡這個框架。

https://github.com/locustio/locust 10000+星

開源許可證

工具許可范圍的問題是最重要的問題之一,因?yàn)槟赡芟胫朗欠裥枰Ц额~外的第三方工具來完成負(fù)載測試。 如果某個工具是開源的,那么您幾乎可以實(shí)現(xiàn)為性能測試設(shè)置的任何目標(biāo),而無需任何額外付款。 開源JMeter和Locust也不例外。

JMeter和Locust都提供了許可軟件許可證,該許可證支持免費(fèi)軟件,對軟件的分發(fā)方式提出最低要求。 JMeter是由Apache開發(fā)的,它基于Apache License 2.0,而Locust是由一個由社區(qū)驅(qū)動的開發(fā)人員組成的小團(tuán)隊(duì)開發(fā)的 ,基于MIT許可證。 在這兩種情況下,這些工具都是開源的,允許您自由使用它們,而不受任何使用限制。

負(fù)載測試創(chuàng)建和維護(hù)

性能測試工作流程有三個主要步驟:創(chuàng)建,運(yùn)行和分析。 一般第一步是最耗時的。

編寫JMeter性能測試的最常用方法是使用其GUI模式。 JMeter GUI模式提供了一個桌面客戶端,允許您輕松創(chuàng)建測試,而無需編寫單行代碼(直到您需要創(chuàng)建棘手的測試)。 所以最簡單的場景可能如下所示:

JMeter非常簡單,通常,即使是沒有經(jīng)驗(yàn)的工程師也可以毫無困難地上手。但是如果需要,您可以使用Java在GUI和非GUI模式下使用代碼。 但是,由于腳本實(shí)現(xiàn)的復(fù)雜性(因?yàn)镴Meter旨在與GUI模式一起使用)以及缺乏如何制作此類腳本的文檔,因此這種方式在JMeter社區(qū)中并不流行。

Locust則需要python編程基礎(chǔ)。

支持的協(xié)議

理想情況下,您應(yīng)該能夠使用盡可能少的工具測試所有工具,只要它不會影響測試質(zhì)量。

使用JMeter,您可以使用完整的內(nèi)置函數(shù)和第三方插件,在一個地方創(chuàng)建所有內(nèi)容的性能測試。 您無需編碼即可測試不同的協(xié)議甚至數(shù)據(jù)庫。 這些包括JDBC,F(xiàn)TP,LDAP,SMTP等。JMeter還可以通過jar包擴(kuò)展,比如加載jython,可以使用python腳本。

根據(jù)文檔,Locust主要用于基于HTTP Web的測試。但可以擴(kuò)展其默認(rèn)功能并創(chuàng)建自定義Python函數(shù)來測試可以使用Python編程語言進(jìn)行測試的任何內(nèi)容。

并發(fā)用戶數(shù)

JMeter和Locust有完全不同的方式來處理機(jī)器資源。 JMeter有一個基于線程的模型,它為每個用戶分配一個單獨(dú)的線程。 每個步驟的線程分配和基準(zhǔn)測試需要大量資源,這就是為什么JMeter對于您可以在一臺機(jī)器上模擬的用戶數(shù)量非常有限的原因。 您可以在一臺計算機(jī)上運(yùn)行的用戶數(shù)取決于許多因素,如腳本復(fù)雜性,硬件,響應(yīng)大小等。 如果您的腳本很簡單,JMeter允許您在一臺機(jī)器上運(yùn)行多達(dá)數(shù)千個,但腳本執(zhí)行逐漸變得不可靠。

image.png
image.png

Locust有完全不同的用戶模擬模型,它基于事件和異步方法,以gevent coroutine作為整個過程的基石。 這種實(shí)現(xiàn)允許Locust框架在一臺機(jī)器上輕松模擬數(shù)千個并發(fā)用戶,即使是在非常規(guī)的筆記本電腦上,也可同時運(yùn)行內(nèi)部有許多步驟的復(fù)雜測試。

image.png

增強(qiáng)靈活性

這兩個工具提供相對相同的生成負(fù)載的方式 - 您可以指定在性能測試期間要使用的用戶數(shù)以及它們應(yīng)該加速的速度。

在JMeter中,您可以在指定字段的“線程組”控制器中配置負(fù)載:但是JMeter還有其他插件,可以讓您配置非常靈活的負(fù)載。 最好的方法之一是使用Ultimate Thread Group ,它允許用戶制作非常具體的加載模式:

Locust有不同的方法。 當(dāng)您運(yùn)行性能腳本時,Locust會自動在http://localhost:8089上啟動Web界面的服務(wù)器,該界面為您提供僅指定線性負(fù)載的輸入元素, 當(dāng)然也可以命令行執(zhí)行通過參數(shù)定制。

腳本錄制

這是JMeter具有強(qiáng)大優(yōu)勢的地方,因?yàn)樗哂心_本錄制的內(nèi)置功能,而Locust根本沒有此功能。 除此之外,還有許多第三方插件可以為JMeter制作腳本錄制。 記錄此類腳本最方便的方法之一是使用BlazeMeter chrome擴(kuò)展。

參考資料

測試監(jiān)控

JMeter和Locust都提供了強(qiáng)大的內(nèi)置功能來監(jiān)控性能腳本并分析您的測試結(jié)果。 JMeter有許多不同的元素叫做監(jiān)聽器。 每個偵聽器都提供特定類型的監(jiān)視,你也可以使用許多現(xiàn)有的自定義監(jiān)聽器擴(kuò)展默認(rèn)庫。另一方面,JMeter監(jiān)聽器在其運(yùn)行的機(jī)器上消耗大量資源。這就是為什么通常,JMeter是以非GUI模式執(zhí)行的,沒有任何監(jiān)聽器或監(jiān)控過程,在這種情況下,可使用3方工具,如BlazeMeter 。

image.png

Locust的監(jiān)測能力稍弱,不過幾乎提供了所有可用于監(jiān)控基本負(fù)載的信息。在腳本運(yùn)行期間,Locust運(yùn)行一個簡單的Web服務(wù)器,您可以在其中找到所有可用的監(jiān)視結(jié)果:

image.png
image.png

與JMeter相比,Locust監(jiān)控不占用您機(jī)器的大量資源。 這就是為什么Locust比JMeter有很大的好處,因?yàn)槟憧梢允褂脙?nèi)置監(jiān)控,即使你需要模擬很多用戶。 另一方面,默認(rèn)監(jiān)控不提供您可以從第三方工具獲得的非常詳細(xì)的信息。 這就是為什么你可能想檢查腳本監(jiān)控的其他選項(xiàng)。

監(jiān)控和分析測試結(jié)果的最簡單方法之一是使用Taurus框架和BlazeMeter報告,它為您提供出色的實(shí)時報告,并能夠保存它們以進(jìn)行進(jìn)一步比較。 您可以查看這篇文章以獲得基本想法。

JMeter和蝗蟲比較表

看看這個JMeter和Locust特征和能力的比較表:

結(jié)論

對性能或靈活性要求高的建議使用Locust。反之JMeter可能是更好的選擇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容