1. 程式人生 > 其它 >效能測試-locust

效能測試-locust

1、locust介紹

locust翻譯過來是蝗蟲的意思,模擬一群使用者訪問你的系統。是非常優秀的效能測試工具,它是依賴於Python的環境,所以使用它的前提是首先需要安裝它。

 

官網:https://locust.io/

 

locust是基於協程的設計,協程 可以把它理解為微小的執行緒,基於使用者的行為可以控制它。python一直很優秀,但是python在效能方面的表現很差勁,所以python設計了協程來改進這部分的設計缺陷。locust對服務端的負載能力很強,所以使用它可以來做服務端的穩定性測試。

在Python的技術棧的體系中,效能測試的⼯具是Locust的測試框架,Locust是⼀種易於編寫,可以編寫測試指令碼 和可以擴充套件的效能測試⼯具,它是基於協程來進⾏設計的,當然也可以說是基於event的事件來進⾏設計的。協程 我們可以簡單的理解為是基於⽤戶態的執行緒,更加專業的話說是微執行緒,基於⽤戶可以控制的⼀種微⼩的執行緒,也可以叫協程。

主要做負載測試和穩定性測試

 

jmeter與locust的區別:

1、JMeter是100%Java語言開發的,它是基於執行緒的模式向服務端傳送請求

2、Locust是Python語言開發的,它是基於協程的模式

 

2、操作

(1)安裝python3(之前學習已經安裝)

A、c盤下建立python3的資料夾 B、開啟安裝包,安裝,目錄選擇建立的python3 C、安裝的時候,勾選add to path

 

(2)安裝locust

pip3 install locust

(3)啟動jar包 (spring boot 服務)

(4)啟動jvisualvm

WEB模式:

常規的壓力測試使用web模式

(1)編輯locustfile檔案:

定義任務、定義任務集、定義使用者類

import time
from locust import HttpUser,task,between

class QuickStartUser(HttpUser):
  wait_time = between(1,2.5)

  @task
  def index(self):
    r=self.client.get('/testDev')
    assert r.status_code==200
 

/testDev是開發給的,也就是埠之後的地址,工作中修改這一部分

 

(2)先進入到放locustfile這個檔案的目錄,執行命令來啟動locustfile這個py檔案:locust -f locustfile.py

(3)訪問:

http://localhost:8089

埠是開發給的

下⾯具體針對界⾯的⽂字設定進⾏解釋,具體如下:

• Number of total users to simulate:設定模擬的⽤戶總數

• Spawn rate (users spawned/second):每秒啟動的⽤戶虛擬數

• Host (e.g. http://www.example.com):被測的⽬標伺服器的地址資訊

spring boot 的埠是8081

Type:請求型別(也就是請求具體是那個=⽅法)
Name:請求的路徑地址資訊
Requests:當前已完成的請求數量
Fails:當前失敗的數量
Mediam(ms): 響應時間的中位數
90%ile (ms):90%的請求響應時間
Average (ms):平均響應時間
Min (ms):最⼩響應時間
Max (ms):最⼤響應時間
Average size (bytes):平均請求的資料量
Current RPS:每秒中處理請求的數量,也就是RPS
New test:點選該按鈕可對模擬的總虛擬⽤戶數和每秒啟動的虛擬⽤戶數進⾏編輯;
Statistics:聚合報告
Charts:測試結果變化趨勢的曲線展示圖,分別為每秒完成的請求數(RPS)、響應時間、不同時間的虛擬⽤戶數;
Failures:失敗請求的展示界⾯;
Exceptions:異常請求的展示界⾯;
Download Data:測試資料下載模組, 提供三種類型的CSV格式的下載,分別是:Statistics、responsetime、exceptions;

 

你之前有做過服務端穩定性測試嗎?你是怎麼理解它的?(面試題)

1、服務端穩定性測試指的是持續高併發的向服務端傳送請求,服務端都能夠處理客戶端傳送的處理,通過這樣的一個模式來驗證服務端它在持續高負載下它的業務處理能力,和系統的整體設計能力。如一碼通,持續72小時連續不停的掃描二維碼,都應該能夠很快速的出健康碼。

 2、有做過,如果是使用JMeter,就是無限迴圈,如果是locust,就一直持續的請求,具體多久,我們之前是24小時連續不停的請求

 

負載模式:

用於負載測試的時候

(1)編輯locustfile2檔案:

 

import time
from locust import HttpUser,task,between

class QuickStartUser(HttpUser):
  host = 'http://localhost:8081'
  min_wait = 3000
  max_wait = 6000
  @task
  def index(self):
    r=self.client.get('/testDev')
    assert r.status_code==200

 

(2)執行命令來啟動locustfile這個py檔案:locust -f locustfile2.py

(3)訪問:http://localhost:8089/