locust工具學習筆記(六) 自定義負載策略

2021-10-22 15:32:49 字數 3160 閱讀 2036

在實際測試場景中預設的每秒生成一定使用者數的場景不能滿足測試需要,此時就需要自定義壓測使用者數的載入策略。我們在locust中可以直接使用loadtestshape類,它可以完全的控制使用者數產生率

在指令碼檔案中定義乙個繼承loadtestshape類的類,locust在啟動時發現檔案中有使用這個類會自動啟動。

在該類中需要定義tick()方法,該方法返回使用者數以及產生率的元組(如果沒有返回這兩個測試將停止),locust啟動後每秒呼叫一次該函式。

loadtestshape類中可以使用get_run_time()方法來獲取測試執行的時間,使用此方法可以用來控制壓測的總時間。

#啟動策略:每隔10秒鐘增加啟動10個使用者

# time_limit設定時限整個壓測過程為60秒

time_limit = 60

# 設定產生率一次啟動10個使用者

spawn_rate = 10

​    def tick(self):

'''設定 tick()函式

並在tick()裡面呼叫 get_run_time()方法

'''# 呼叫get_run_time()方法獲取壓測執行的時間

run_time = self.get_run_time()

​        # 執行時間在 time_limit之內,則繼續執行

if run_time < self.time_limit:

# user_count計算每10秒鐘增加10個

user_count = round(run_time, -1)

print(str(user_count)+">>>>>"+datetime.datetime.now().strftime('%y-%m-%d-%h:%m:%s.%f'))

return (user_count, self.spawn_rate)

return none

執行結果

#啟動策略:前10秒鐘-30秒使用者數為10,30秒-60秒啟動總使用者數是30,大於60後啟動總使用者數是60個使用者

'''time -- 持續時間, 經過多少秒後,進入到下個階段

users -- 總使用者數

spawn_rate -- 產生率,即每秒啟動/停止的使用者數

'''​    stages = [,,

,,]​    def tick(self):

​        run_time = self.get_run_time()

​        for stage in self.stages:

if run_time < stage['time']:

tick_data = (stage['users'],stage['spawn_rate'])

return tick_data

​        return none

執行結果

#啟動策略:逐步負載策略每隔30秒新增啟動10個使用者

class mycustomshape(loadtestshape):

'''step_time -- 逐步載入時間長度

step_load -- 使用者每一步增加的量

spawn_rate -- 使用者在每一步的停止/啟動的多少使用者數

time_limit -- 時間限制壓測的執行時長

'''setp_time = 30

setp_load = 10

spawn_rate = 10

time_limit =  600

​    def tick(self):

run_time = self.get_run_time()

​        if run_time > self.time_limit:

return none

current_step = math.floor(run_time /self.setp_time) +1

return(current_step * self.setp_load,self.spawn_rate)

執行結果

備註:參考locust官方文件

Locust學習筆記1 效能測試工具選擇

一談到效能測試,很多人都會想到loadrunner和jmeter這兩款工具,其實python也有一套效能測試工具 locust。locust是一款支援分布式開源的效能測試框架,基於web介面實時監控效能資料。那麼這些效能測試工具到底有什麼區別,如何選擇呢?我們在接到效能測試需求的時候,應該以實際需求...

QML學習筆記(六) 自定義控制項 Button

原始碼 按鈕控制項也是乙個組成部分,單獨成乙個檔案 我自定義了乙個按鈕的控制項,邊框按鈕,滑鼠懸浮經過 按壓按鈕,都會變色,效果如下,錄製軟體沒有將滑鼠錄入。取名叫borderbutton,首字母要大寫 1.borderbutton.qml import qtquick 2.0import qtqu...

Linux Shell學習筆記六

第八學時 引用 術語引用 引用即是將被選擇文字用某種型別的引用標記括起來,從而使得被選擇文字變成文字字元。轉義 轉義乙個字元意味著該字元前加乙個反斜線 從而轉義或者去除了shell命令中該字元的特殊含 義,或者正如讀者在echo命令中看到的 n 一樣增加特殊含義。跟在反斜線後的字元被稱為轉義字元。特...