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