基於python的效能測試工具 locust

2022-08-12 10:03:10 字數 2529 閱讀 1336

現在有很多的效能測試工具,比如說我們熟悉的loadrunner、jmeter、ab、webbench等等,這些工具如果對乙個沒用過的朋友來說,學習起來比較不容易,但是如果你能看懂python**,會寫就更好了,就可用嘗試一下今天的主角locust,一款基於python的效能測試工具,它的優點是學習起來比較簡單,功能完全自定製,使用比較靈活,支援分布式。

所有的效能測試工具都至少包含這3塊:

1、壓力產生器,也就是可以指定產生多大的壓力,多少併發;

2、資料統計,也就是結果的展示,要統計tps是多少,響應時間多少等等,這些資料;

3、**功能,**功能呢說白了就一句話,分攤壓力。比如說你壓測的時候要用1000個併發,但是你的電腦(壓力機)配置比較弱,只支援500併發,再大電腦就死掉了,完犢子,壓測不了。那怎麼辦呢,就得分攤壓力,再管你同事借一台電腦,倆電腦發壓力,那就可以了,每個人的電腦上500個併發,人多好幹活嘛,**就是幹這個的,把這個上面的壓力分攤到別的電腦上。

當然locust這3個功能都是有的。

locust的官網是 www.locust.io,上面也有怎麼安裝和例子。

怎麼用呢,很簡單,只需要幾行**就可以實現,並且有漂亮的web介面,可以設定併發數,和檢視結果,首先我們寫幾行簡單的**,寫乙個開啟besttest首頁的指令碼。12

#httplocust 這個類的作用是用來傳送http請求的

#taskset   這個類是定義使用者行為的,相當於loadrunnerhttp協議的指令碼,jmeter裡面的http請求一樣,要去幹嘛的

#task   這個task是乙個裝飾器,它用來把乙個函式,裝飾成乙個任務,也可以指定他們的先後執行順序

classbesttest(taskset):

#自己定義的類,繼承taskset,也就是這個類是實現咱們要去請求什麼的

@task#用task裝飾器把這個函式裝飾成乙個咱們要執行的效能任務

defindex(self):#這個函式裡面定義的是咱們要具體做的操作

self.client.get('/')#請求這個url裡面的哪個路徑,如果是介面的話,就是哪個介面

#這個類繼承了httplocust,代表每個併發裡面的每個使用者

task_set=besttest#這個是每個使用者都去幹什麼,指定了besttest這個類,它就會每個使用者去執行besttest這個類裡面的方法

**寫好了,下面執行一下,看看結果,但是執行的時候不是像乙個普通的python指令碼一樣執行了, 得使用locust命令,在命令列裡執行12

3locust-fbesttest.py--host=

#-f是指定乙個python檔案 後面跟上咱們剛才寫的python檔案

#--host是你要訪問哪個**,後面跟**的url

這樣就可以執行,執行完之後,就可以在瀏覽器裡面開啟locust的控制台了,locust的預設埠號是8089,執行完之後,訪問的時候用ip:8090就可以訪問了,如下圖:

啟動locust:

locust控制台頁面:

開始測試後的頁面:

tps圖和響應時間圖:

但是locust不像loadrunner和jmeter一樣可以設定開始時間和結束時間,只能你自己點stop的時候停止測試,這一點比較煩,所以在使用過程中還是需要自己注意一下測試時間。

剛才上面寫的例子是單個介面壓測, 或者更說單場景的,如果想做混合場景的壓測,比如說是乙個業務流程,先登入、然後下單、購物這樣的怎麼辦呢?

只需要寫多個task就可以了,也就是在類裡面寫多個函式,想誰想執行,標上數字就行了,1,2,3,4**如下:12

@task(1)#給task裝飾器傳乙個引數,代表先訪問首頁

defindex(self):#首頁

self.client.get('/')

#發get請求

@task(2)

deflogin(self):#登入

self.client.post('/login',)

#傳送post請求,第乙個是路徑,第二個這個介面的入參,賬號和密碼

#這個類繼承了httplocust,代表每個併發裡面的每個使用者

task_set=besttest#這個是每個使用者都去幹什麼,指定了besttest這個類,它就會每個使用者去執行besttest這個類裡面的方法

Mysql效能測試工具

一 mysqlslap測試 mysqlslap是mysql自帶的乙個測試工具。具體的用法可以通過man獲得。比較常用的options解釋如下 concurrency 代表併發數量,多個可以用逗號隔開,當然你也可以用自己的分隔符隔開,這個時候要用到 delimiter開關。engines 代表要測試的...

效能測試工具原理

廣義的講,可以把效能測試過程中使用到的所有工具都稱為效能測試工具,效能測試工具分為兩大類,服務端效能測試工具和前端效能測試工具 服務端效能測試工具需要支援產生壓力和負載,錄製和生成測試指令碼,設定和部署場景,產生併發使用者和向系統施加持續的壓力 而前端效能測試工具則不需要關係系統的壓力和負載,只需要...

mysqlslap 效能測試工具

mysqlslap 效能測試工具 常用引數 concurrency 代表併發數量,多個可以用逗號隔開。例如 concurrency 50,200,500 engines 代表要測試的引擎,可以有多個,用分隔符隔開。例如 engines myisam,innodb,memory iterations ...