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í)行逐漸變得不可靠。


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

增強(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ò)展。
參考資料
- Locust和JMeter比較 http://www.itdecent.cn/p/dd0fcfdfa561
- JMeter性能測試工具快速入門教程-目錄 http://www.itdecent.cn/p/7b1a3346dc0f
- python測試開發(fā)項(xiàng)目實(shí)戰(zhàn)-目錄
- python工具書籍下載-持續(xù)更新
- python 3.7極速入門教程 - 目錄
- 討論qq群630011153 144081101
- 原文地址
- 本文涉及的python測試開發(fā)庫 謝謝點(diǎn)贊!
- 本文相關(guān)海量書籍下載
- https://github.com/Blazemeter/taurus
- https://blazemeter.com/blog/jmeter-vs-locust-which-one-should-you-choose/
測試監(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 。

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


與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可能是更好的選擇。