1. 程式人生 > 其它 >Locust效能測試1-環境準備與基本使用  

Locust效能測試1-環境準備與基本使用  

 

前言

提到效能測試,大部分小夥伴想到的就是LR和jmeter這種工具,小編一直不太喜歡寫這種工具類的東西,我的原則是能用程式碼解決的問題,儘量不去用工具。
python裡面也有一個性能測試框架Locust,本篇簡單的介紹Locust的基本使用,希望越來越多的小夥伴能一起愛上它!

環境準備:
python3.6
windows電腦
locust

Locust簡介

Locust是一款易於使用的分散式使用者負載測試工具。它用於對網站(或其他系統)進行負載測試,並確定系統可以處理多少併發使用者。
這個想法是,在測試期間,一群蝗蟲(Locust)會攻擊你的網站。您定義了每個蝗蟲Locust(或測試使用者)的行為,並且實時地從Web UI監視群集過程。這將有助於您在讓真正的使用者進入之前進行測試並識別程式碼中的瓶頸。
Locust完全基於事件,因此可以在一臺計算機上支援數千個併發使用者。與許多其他基於事件的應用程式相比,它不使用回撥。相反,它通過協程(gevent)機制

使用輕量級過程。每個蝗蟲蜂擁到你的網站實際上是在自己的程序內執行(或者是greenlet,這是正確的)。這允許您在Py​​thon中編寫非常富有表現力的場景,而不會使程式碼複雜化。

** gevent是第三方庫,通過greenlet實現協程。greenlet是python的並行處理的一個庫。 python 有一個非常有名的庫叫做 stackless ,用來做併發處理, 主要是弄了個叫做tasklet的微執行緒的東西, 而greenlet 跟stackless的最大區別是greenlet需要你自己來處理執行緒切換, 就是說,你需要自己指定現在執行哪個greenlet再執行哪個greenlet。**

環境安裝

Locust支援Python 2.7, 3.4, 3.5, and 3.6的版本,小編的環境是python3.6直接用pip安裝就行

$ pip install locustio

安裝完成後,使用pip檢視版本號0.9.0

$ pip show locustio

使用--help檢視幫助資訊

$ locust --help

快速開始

locust裡面請求是基於requests的,每個方法請求和requests差不多,請求引數、方法、響應物件和requests一樣的使用,之前學過requests庫的,這裡就非常簡單了

  • requests.get 對應client.get
  • requests.post 對應client.post
# 儲存為demo.py
# coding:utf-8
from locust import HttpLocust,TaskSet,task

class BlogDemo(TaskSet):
    '''使用者行為:開啟我的部落格首頁demo'''
    @task(1)
    def open_blog(self):
        # 定義requests的請求頭
        header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"}

        r = self.client.get("/yoyoketang",  headers=header, verify=False)
        print(r.status_code)
        assert r.status_code == 200

class websitUser(HttpLocust):
    task_set = BlogDemo
    min_wait = 3000  # 單位毫秒
    max_wait = 6000  # 單位毫秒

if __name__ == "__main__":
    import os
    os.system("locust -f demo.py --host=https://www.cnblogs.com")

程式碼註解:
新建一個類BlogDemo(TaskSet),繼承TaskSet,該類下面寫一些準備請求的行為(訪問的介面)
裡面的self.client呼叫get和post方法,跟requests是一樣的
@task裝飾該方法表示為使用者行為。括號裡面引數表示該行為挑選執行的權重,數值越大,執行頻率越高,不設定預設是1

WebsiteUser()類用於設定效能測試。
task_set :指向一個定義了的使用者行為類。
min_wait :使用者執行任務之間等待時間的下界,單位:毫秒。
max_wait :使用者執行任務之間等待時間的上界,單位:毫秒。

啟動locust

啟動locust可以直接在pycharm裡面執行上面的程式碼,執行後編輯器出現兩行
[2018-09-12 23:23:57,500] DESKTOP-HJ487C8/INFO/locust.main: Starting web monitor at *:8089
[2018-09-12 23:23:57,500] DESKTOP-HJ487C8/INFO/locust.main: Starting Locust 0.9.0

也可以通過cmd執行

$ locust -f demo.py --host=https://www.cnblogs.com

  • -f 引數是指定執行的指令碼
  • --host是指定執行專案的host地址,這裡用的https://www.cnblogs.com,程式碼裡面get訪問的是"/yoyoketang",拼接起來就是完整地址了

8089是該服務啟動的埠號。由於是在本機上搭建的locust,所以可以直接在瀏覽器輸入http://localhost:8089/開啟,
如果是在其它機器上搭建的locust服務,那就通過http://其它機器IP:8089/開啟

  • Number of users to simulate 設定虛擬使用者總數
  • Hatch rate (users spawned/second) 每秒啟動虛擬使用者數
  • 點選Start swarming 開始執行效能測試

效果展示

設定虛擬使用者數30,每秒啟動5個使用者,點選Start swarming 開始執行

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

點stop可以停止測試

New test可以重新設定使用者數

Charts圖示展示

三個圖示分別是

吞吐量/每秒響應事務數(rps)實時統計

平均響應時間/平均事務數實時統計

虛擬使用者數執行

轉載:https://www.cnblogs.com/yoyoketang/p/9638151.html

 

前言

提到效能測試,大部分小夥伴想到的就是LR和jmeter這種工具,小編一直不太喜歡寫這種工具類的東西,我的原則是能用程式碼解決的問題,儘量不去用工具。
python裡面也有一個性能測試框架Locust,本篇簡單的介紹Locust的基本使用,希望越來越多的小夥伴能一起愛上它!

環境準備:
python3.6
windows電腦
locust

Locust簡介

Locust是一款易於使用的分散式使用者負載測試工具。它用於對網站(或其他系統)進行負載測試,並確定系統可以處理多少併發使用者。
這個想法是,在測試期間,一群蝗蟲(Locust)會攻擊你的網站。您定義了每個蝗蟲Locust(或測試使用者)的行為,並且實時地從Web UI監視群集過程。這將有助於您在讓真正的使用者進入之前進行測試並識別程式碼中的瓶頸。
Locust完全基於事件,因此可以在一臺計算機上支援數千個併發使用者。與許多其他基於事件的應用程式相比,它不使用回撥。相反,它通過協程(gevent)機制使用輕量級過程。每個蝗蟲蜂擁到你的網站實際上是在自己的程序內執行(或者是greenlet,這是正確的)。這允許您在Py​​thon中編寫非常富有表現力的場景,而不會使程式碼複雜化。

** gevent是第三方庫,通過greenlet實現協程。greenlet是python的並行處理的一個庫。 python 有一個非常有名的庫叫做 stackless ,用來做併發處理, 主要是弄了個叫做tasklet的微執行緒的東西, 而greenlet 跟stackless的最大區別是greenlet需要你自己來處理執行緒切換, 就是說,你需要自己指定現在執行哪個greenlet再執行哪個greenlet。**

環境安裝

Locust支援Python 2.7, 3.4, 3.5, and 3.6的版本,小編的環境是python3.6直接用pip安裝就行

$ pip install locustio

安裝完成後,使用pip檢視版本號0.9.0

$ pip show locustio

使用--help檢視幫助資訊

$ locust --help

快速開始

locust裡面請求是基於requests的,每個方法請求和requests差不多,請求引數、方法、響應物件和requests一樣的使用,之前學過requests庫的,這裡就非常簡單了

  • requests.get 對應client.get
  • requests.post 對應client.post
# 儲存為demo.py
# coding:utf-8
from locust import HttpLocust,TaskSet,task

class BlogDemo(TaskSet):
    '''使用者行為:開啟我的部落格首頁demo'''
    @task(1)
    def open_blog(self):
        # 定義requests的請求頭
        header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"}

        r = self.client.get("/yoyoketang",  headers=header, verify=False)
        print(r.status_code)
        assert r.status_code == 200

class websitUser(HttpLocust):
    task_set = BlogDemo
    min_wait = 3000  # 單位毫秒
    max_wait = 6000  # 單位毫秒

if __name__ == "__main__":
    import os
    os.system("locust -f demo.py --host=https://www.cnblogs.com")

程式碼註解:
新建一個類BlogDemo(TaskSet),繼承TaskSet,該類下面寫一些準備請求的行為(訪問的介面)
裡面的self.client呼叫get和post方法,跟requests是一樣的
@task裝飾該方法表示為使用者行為。括號裡面引數表示該行為挑選執行的權重,數值越大,執行頻率越高,不設定預設是1

WebsiteUser()類用於設定效能測試。
task_set :指向一個定義了的使用者行為類。
min_wait :使用者執行任務之間等待時間的下界,單位:毫秒。
max_wait :使用者執行任務之間等待時間的上界,單位:毫秒。

啟動locust

啟動locust可以直接在pycharm裡面執行上面的程式碼,執行後編輯器出現兩行
[2018-09-12 23:23:57,500] DESKTOP-HJ487C8/INFO/locust.main: Starting web monitor at *:8089
[2018-09-12 23:23:57,500] DESKTOP-HJ487C8/INFO/locust.main: Starting Locust 0.9.0

也可以通過cmd執行

$ locust -f demo.py --host=https://www.cnblogs.com

  • -f 引數是指定執行的指令碼
  • --host是指定執行專案的host地址,這裡用的https://www.cnblogs.com,程式碼裡面get訪問的是"/yoyoketang",拼接起來就是完整地址了

8089是該服務啟動的埠號。由於是在本機上搭建的locust,所以可以直接在瀏覽器輸入http://localhost:8089/開啟,
如果是在其它機器上搭建的locust服務,那就通過http://其它機器IP:8089/開啟

  • Number of users to simulate 設定虛擬使用者總數
  • Hatch rate (users spawned/second) 每秒啟動虛擬使用者數
  • 點選Start swarming 開始執行效能測試

效果展示

設定虛擬使用者數30,每秒啟動5個使用者,點選Start swarming 開始執行

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

點stop可以停止測試

New test可以重新設定使用者數

Charts圖示展示

三個圖示分別是

吞吐量/每秒響應事務數(rps)實時統計

平均響應時間/平均事務數實時統計

虛擬使用者數執行

轉載:https://www.cnblogs.com/yoyoketang/p/9638151.html