Locust測(cè)試本質(zhì)上是一個(gè)Python程序。這使得它非常靈活,尤其擅長(zhǎng)實(shí)現(xiàn)復(fù)雜的用戶(hù)流。所以如果想要流暢的運(yùn)用Locust,必須熟悉Python語(yǔ)言編寫(xiě)腳本。
因此,Locust的簡(jiǎn)單測(cè)試過(guò)程,就從這里開(kāi)始:
一、編寫(xiě)locustfile腳本文件
from locust import HttpUser, task
class HelloWorldUser(HttpUser):
@task
def hello_world(self):
self.client.get("/hello")
self.client.get("/world")
這將模擬用戶(hù)一次又一次地向/hello和/world發(fā)出HTTP請(qǐng)求。
把上面的代碼放到一個(gè).py 的Python文件中。然后再該文件所屬的目錄中運(yùn)行l(wèi)ocust命令:
二、啟動(dòng)Locust
Locust的web界面
啟動(dòng)Locust之后,打開(kāi)瀏覽器并將其指向http://localhost:8089.會(huì)看到這樣的頁(yè)面:
首先設(shè)置用戶(hù)數(shù)量;
其次設(shè)置用戶(hù)加載和退出的速率;
最后,將測(cè)試指向自己的web服務(wù)器并啟動(dòng)它!
下面的屏幕截圖顯示了在以0.5用戶(hù)/s的速度運(yùn)行這個(gè)針對(duì)40個(gè)并發(fā)用戶(hù)的測(cè)試時(shí),將它指向一個(gè)響應(yīng)/hello和/world的服務(wù)器。
1、Charts模塊
Locust還可以將結(jié)果可視化為圖表,通過(guò)Charts模塊,可以查看每秒鐘請(qǐng)求數(shù)(RPS)、響應(yīng)時(shí)間(RT)、用戶(hù)量(NU)等。
每秒請(qǐng)求數(shù)(RPS):
響應(yīng)時(shí)間(毫秒):
虛擬用戶(hù)數(shù)量:
注意:
解釋性能測(cè)試結(jié)果是相當(dāng)復(fù)雜的,而且需要專(zhuān)門(mén)的業(yè)務(wù)知識(shí)和性能指標(biāo)參數(shù)的了解,但是如果運(yùn)行的圖開(kāi)始看起來(lái)像上面這樣,最有可能的原因是目標(biāo)服務(wù)/系統(tǒng)無(wú)法處理遇到的負(fù)載(它超載或“飽和”)
最明顯的跡象是,當(dāng)達(dá)到9個(gè)用戶(hù)時(shí),響應(yīng)時(shí)間開(kāi)始快速增長(zhǎng),以至于每秒的請(qǐng)求曲線趨于平緩,盡管仍有新用戶(hù)加入。
如果無(wú)法生成足夠的負(fù)載使系統(tǒng)飽和,或者需要一些關(guān)于如何開(kāi)始深入研究服務(wù)器端問(wèn)題的指針,請(qǐng)繼續(xù)關(guān)注系列文章的更新。
2、Failure模塊
該模塊會(huì)顯示出測(cè)試腳本運(yùn)行中失敗的內(nèi)容、原因等信息。
這里出現(xiàn)的失敗是因?yàn)檎?qǐng)求沒(méi)有收到返回的內(nèi)容也不支持這個(gè)請(qǐng)求地址。
3、Exceptions模塊
該模塊可以顯示運(yùn)行中出現(xiàn)的腳本異常等信息。目前看來(lái)是沒(méi)有異常的,說(shuō)明腳本運(yùn)行沒(méi)有問(wèn)題。
4、Tasks模塊
該模塊顯示運(yùn)行中的腳本和任務(wù):
包括運(yùn)行的測(cè)試腳本的信息;
每個(gè)類(lèi)別(請(qǐng)求的)的用戶(hù)比例;
總比例。
5、Download Data模塊
數(shù)據(jù)下載模塊可以提供請(qǐng)求統(tǒng)計(jì)、失敗情況、異常情況、測(cè)試報(bào)告等信息的下載。
三、控制測(cè)試腳本的運(yùn)行
1、編輯和設(shè)計(jì)測(cè)試腳本
通過(guò)點(diǎn)擊Locust運(yùn)行狀態(tài)【status】模塊中的【edit】,打開(kāi)設(shè)置,可以設(shè)置用戶(hù)數(shù)量和加載速度。
2、結(jié)束測(cè)試腳本運(yùn)行
可以點(diǎn)擊【stop】按鈕結(jié)束測(cè)試場(chǎng)景運(yùn)行。
3、重置運(yùn)行統(tǒng)計(jì)數(shù)據(jù)
可以點(diǎn)擊【Reset stats】按鈕重置統(tǒng)計(jì)數(shù)據(jù)。
四、直接使用命令行/無(wú)頭
使用Locust的web UI是完全可選的。可以在命令行上提供加載參數(shù),并以文本形式獲得結(jié)果報(bào)告:
要在多個(gè)Python進(jìn)程或機(jī)器上運(yùn)行Locust,可以使用——master命令行參數(shù)啟動(dòng)單個(gè)Locust主進(jìn)程,然后使用——worker命令行參數(shù)啟動(dòng)任意數(shù)量的Locust工作進(jìn)程。
更多關(guān)于軟件測(cè)試培訓(xùn)的問(wèn)題,歡迎咨詢(xún)千鋒教育在線名師,如果想要了解我們的師資、課程、項(xiàng)目實(shí)操的話可以點(diǎn)擊咨詢(xún)課程顧問(wèn),獲取試聽(tīng)資格來(lái)試聽(tīng)我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門(mén)到精通。