Locust是一個易于使用、可編寫腳本和可擴展的性能測試工具。
可以讓使用者在常規的Python代碼中定義用戶的行為,而不是被困在UI或限制性的領域特定語言中。
這使得Locust可以無限擴展,對開發者非常友好。下面介紹一下這款性能測試平臺。
一、Locust的特點:
1、用簡單的舊Python編寫測試場景
如果你希望你的用戶循環、執行一些條件行為或執行一些計算,只需使用Python提供的常規編程結構。Locust在自己的greenlet(輕量級流程/協程)中運行每個用戶。這樣你可以像編寫普通(阻塞)Python代碼一樣編寫測試,而不必使用回調或其他機制。因為你的場景“只是python”,所以你可以使用你的常規IDE,并將你的測試作為常規代碼進行版本控制(而不是使用XML或二進制格式的其他工具)。
2、分布式和可擴展—支持數十萬并發用戶
Locust使運行分布在多臺機器上的負載測試變得很容易。它是基于事件的(使用gevent),這使得一個進程可以處理數千個并發用戶。雖然可能有其他工具能夠在給定的硬件上每秒執行更多的請求,但每個Locust用戶的低開銷使得它非常適合測試高并發的工作負載。
3、基于web的UI
Locust有一個用戶友好的web界面,可以實時顯示測試的進度。你甚至可以在測試運行時更改負載。它也可以在沒有UI的情況下運行,這使得它很容易用于CI/CD測試。
4、可以測試任何系統
盡管Locust主要用于web站點/服務,但它可以用于測試幾乎任何系統或協議。只需編寫一個您想要測試的客戶端,或者探索一些由社區創建的客戶端。
5、可刪節/控制的
Locust很小,非常靈活,研發團隊打算保持這種方式。如果你想把報告數據發送到你喜歡的數據庫和圖形系統,包裝調用到一個REST API來處理系統的細節,或者運行一個完全自定義的加載模式,沒有什么可以阻止你!
二、Locust的名字和背景
1、Locust名字的來源
Locust的誕生源于對現有解決方案的失望。沒有一個現有的負載測試工具能夠很好地針對動態網站生成真實的負載,在動態網站中,大多數頁面為不同的用戶提供不同的內容。現有的工具使用笨拙的接口或冗長的配置文件來聲明測試。在《Locust》中,采取了不同的方法。你會得到一個python框架,它可以讓你使用python代碼定義用戶的行為,而不是配置格式或ui。
Locust的名字來源于蝗蟲種類,蝗蟲以其群集行為而聞名。
以前版本的Locust使用了從自然界借用的術語(群集,孵化,攻擊等),但現在使用了更多的行業標準命名。
2、Locust的歷史
創建Locust是因為我們厭倦了現有的解決方案。他們都沒有解決正確的問題,對我來說,他們沒有抓住重點。我們已經嘗試了Apache JMeter和Tsung。這兩種工具都可以使用;我們在工作中多次使用前一種方法進行基準測試。JMeter附帶了一個UI,您可能會認為這是一件好事。但是您很快就會意識到,通過一些指向-點擊界面來“編碼”您的測試場景是一個PITA。其次,JMeter是線裝的。這意味著對于您想要模擬的每個用戶,都需要一個單獨的線程。不用說,在一臺機器上對數千個用戶進行基準測試是不可行的。
另一方面,Tsung沒有這些線程問題,因為它是用Erlang編寫的。它可以利用BEAM本身提供的輕量級流程,并樂于擴展。但是,當涉及到定義測試場景時,Tsung和JMeter一樣有限。它提供了一個基于xml的DSL來定義用戶在測試時應該如何行為。我猜您可以想象“編碼”這一過程的恐怖。在完成時顯示任何類型的圖形或報告需要您對測試生成的日志文件進行后處理。只有這樣你才能了解測試是如何進行的。
無論如何,我們在創建Locust時嘗試解決這些問題。希望上述痛點都不存在。
我猜你會說,我們真的只是想在這里撓自己的癢。我們希望其他人會發現它和我們一樣有用。
三、Locust安裝配置
1、安裝Python
需要使用Python3.6以上的版本。
2、安裝Locust
在Python中,使用命令安裝即可:
pip3 install locust
安裝完成后,檢查一下Locus的安裝結果,如果可以查看到Locus的版本號,就是安裝成功了,如下所示:
好啦,做完這一步就證明你可以開始使用Locust了!
更多關于軟件測試培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。