1. 程式人生 > >Locust效能測試

Locust效能測試

:背景:最近EN5專案中web簽到抽獎,在大併發的情況下,出現問題,之前同事也分享了這個,試下介面併發

1、編寫效能測試指令碼

#coding=utf-8
from locust import HttpLocust,TaskSet,task

class UserBehavior(TaskSet):
    @task(1)
    def baidu(self):
        self.client.get('/')

class Test(HttpLocust):
    task_set = UserBehavior
    host = "http://baidu.com"
    min_wait = 3000
max_wait = 6000

1)HttpLocust類

HttpLocust類:用於設定效能測試

  • task_set:指向一個定義的使用者行為類TaskSet
  • min_wait/max_wait :執行事務之間使用者等待時間的下/上界(單位:毫秒)
  • host:提供 URL 字首的預設值
  • stop_timeout:超時秒數
  • weight:被挑選執行的權重,數值越大,執行頻率越高

2)TaskSet類

TaskSet類:定義每個使用者的任務集合

  • on_start():定義每個Locust使用者開始做的第一件事
  • @task():裝飾的方法為一個事務,引數用於指定該行為的執行權重,引數越大每次被虛擬使用者執行的概率越高
  • interrupt(reschedule=True):True時,從被巢狀任務出來馬上選擇新任務執行;False,從被巢狀任務出來後,隨機等待min_wait和max_wait之間的一段時間,再選擇新任務執行
  • tasks = {stay:2}:每個使用者執行 stay 的頻率是2倍

2、執行效能測試

1)啟動效能測試:locust -f .py全路徑 –host -host名
這裡寫圖片描述

  • -f:指定效能指令碼檔案
  • -host:指定被測試應用的URL地址
  • Number of users to simulate:設定模擬使用者數
  • Hatch rate (users spawned/second):每秒啟動的虛擬使用者數

3)點選Start swarming,執行效能測試
這裡寫圖片描述

  • Type:請求的型別
  • Name:請求的路徑
  • request:當前請求的數量
  • fails:當前請求失敗的數量
  • Median:中間值,單位毫秒,一半的伺服器響應時間低於該值,而另一半高於該值
  • Average:平均值,單位毫秒,所有請求的平均響應時間
  • Min:請求的最小伺服器響應時間,單位毫秒
  • Max:請求的最大伺服器響應時間,單位毫秒
  • Content Size:單個請求的大小,單位位元組
  • reqs/sec:是每秒鐘請求的個數