1. 程式人生 > >效能測試工具Locust基礎安裝教程與學習總結

效能測試工具Locust基礎安裝教程與學習總結

一、locust簡介
1、locust作為一款效能測試工具,沒有單獨的ui介面,可以說是python下的一些庫的整合
locust完全基於python作為程式語言,採用pure python描述測試指令碼,其中的http請求也是完全基於Requests庫,除了HTTP/HTTPS協議,locust也可以測其他協議的系統,只需要採用python呼叫對應的庫進行請求描述即可,可以說python對應的庫還是非常齊全的。
2、與jmeter相比較而言,locust更加的輕量化,採用的是不同於jmeter中程序和執行緒的處理機制(協程【微執行緒】),有效避免了系統的資源排程,由此可以大幅度的提高單擊系統的併發能力
3、Github地址:https://github.com/locustio/locust注:如果想檢視python下依賴了哪些庫的話,可以進入github,點選setup.py進入檢視(如下圖)

上述標紅的地方就是依賴的第三方庫及支援版本(詳細的介紹見下方),安裝這些庫的時候也應遵循其顯示的版本號,如果與當前支援的版本號不一致或者小於當前版本號的時候就會安裝失敗。
4、locust組成模組(所依賴的庫)【gevent】是python下實現協程的一個第三方庫,能夠使系統獲取極高的併發效能(locust基礎模組)
【flask】python下的web開發框架(由於locust只是整合庫,沒有介面,所以需要web框架作為該工具的ui介面展示)
【request】介面測試所用的模組(locust做併發的時候會利用request庫向伺服器傳送請求)
【msgpack-python】這是一種快速的、緊湊的二進位制序列化格式,適用於類似JSON格式的資料
【six】提供一些簡單的工具用來封裝python2和python3之間的差異性
【pyzmq】如果有用於執行locust分佈在多個程序/機器的打算,需要安裝pyzmq
二、locust安裝(windows)
注:下面所有庫的安裝均在cmd中安裝,可以用電腦本身的命令終端,也可以用cmder進行安裝
1、python安裝
網址:https://www.python.org/進入上述網址進行下載安裝,版本沒有要求(python2/python3都是可以的),這裡以版本3.6.2為例
安裝完成後記得配置環境變數,然後進入cmd執行python命令檢視是否安裝成功,安裝成功介面:


2、pip安裝(python的包管理工具,沒有pip則不能安裝第三方庫)
python有兩個主流的包管理工具easy_install.py和pip,easy_install.py是安裝python的時候預設安裝的,而pip僅以zip檔案的形式儲存的python目錄中,需要我們手動的安裝
【命令】:E:\python\Scripts\pip.exe
這裡的路徑為你安裝的python路徑,找到安裝目錄中\Scripts資料夾下pip檔案即可安裝pip(這裡已經安裝好了)


3、gevent庫的安裝
【命令】: E:\python\Scripts\pip.exe install gevent


4、flask庫的安裝
【命令】:E:\python\Scripts\pip.exe install flask
注:如果不知道版本號可以直接安裝flask包,系統會安裝不同版本的包(不建議使用)


5、request庫的安裝
【命令】:E:\python\Scripts\pip.exe install requests==2.18.1

注:安裝庫的時候若不知道版本號,可以直接輸入命令E:\python\Scripts\pip.exe install requests== 從報錯資訊中檢視所有的版本號(建議安裝最新的版本)


6、msgpack-python庫的安裝
【命令】:E:\python\Scripts\pip.exe install msgpack-python==0.4.8


7、six庫的安裝
【命令】:E:\python\Scripts\pip.exe install six==1.11.0


8、pyzmq庫的安裝
【命令】:E:\python\Scripts\pip.exe install pyzmq


9、locust的安裝(最後一步)
【命令】:E:\python\Scripts\pip.exe install locustio


10、報錯資訊整理
在安裝過程中由於環境、版本等因素可能會出現一些問題,下面是針對我自己安裝過程中出現的報錯及解決方案簡單的整理了一下

【問題】沒有追加對應的版本號導致沒有找到有用的版本

  • 【解決】新增可用的版本號
  • 【問題】追加了不存在的版本號
  • 【解決】報錯提示中會列舉目前可用的版本號,從列舉中選取一個即可(推薦用最新版本)
  • 【問題】命令格式書寫不正確,讀取位置發生異常
  • 【解決】正確格式:pip install 庫名==版本 (庫名與版本之間沒有空格,否則會預設讀取空格後的字元然後報錯)
  • 【問題】丟擲版本異常,可能是版本問題,也可能是不相容的問題
  • 【解決】更換其他版本即可
  • 【問題】管理包編輯失敗,也可能出現安裝到最後出現失敗的情況
  • 【解決】針對上述方法更換版本後仍報錯,可去掉版本號,直接安裝庫即可

下面是在網上統計出來的常見報錯資訊(但是我沒遇到),這裡也貼出來好了,以防萬一

【報錯1】ReadTimeoutError: HTTPSConnectionPool(host=’pypi.python.org’, port=443): Read timed out 解決方法:更新pip版本到pip官網下載:https://pypi.python.org/simple/pip/,下載完成後安裝最新版本,也可以用我上面的方法根據報錯資訊找到最新的版本號【報錯2】安裝locustio時出現(linux下):error:command ‘gcc’ failed with exit status 1 解決方法:執行命令:yum install gcc python-devel 用yum包管理器安裝安裝gcc和python-devel這兩個包,安裝完成後再次安裝locustio

(這兩個安裝包是放在yum管理器下面的,pip不支援,所以要用yum來安裝)注:驗證locustio是否已經安裝成功 (1)、可以執行命令列【locust –-help】進行檢視,出現相關的幫助文件說明已經安裝成功 (2)、執行命令列【pip show locustio】進行檢視 (3)、locust有兩種安裝方式,一種就是上面寫的方式按照庫名分別進行安裝,另一種方法可以直接去github上把整個專案下載下來,然後通過命令列【python setup.py install】進行整個專案的安裝(這個我沒用過)

三、測試指令碼(訪問指定域名)

#locust_baidu.py #!/usr/bin/env python #-*-coding:utf-8-*- #author:@TT #引用locust庫下面的三個類,http請求、任務設定、任務模組 from locust import HttpLocust, TaskSet, task #定義使用者行為 class UserBehavior(TaskSet): @task #裝飾器 def baidu_page(self): #定義一個方法訪問指定域名 self.client.get("/")#呼叫客戶端併發送一個get請求 class WebsiteUser(HttpLocust): task_set = UserBehavior min_wait = 3000 #使用者等待時間下限 max_wait = 5000 #使用者等待時間上限

四、locust啟動服務

【命令】locust -f baidu.py --host=https://www.baidu.com/注:-f 指定檔名稱 --host 指定host路徑,此處的連結與上面指令碼中的“/”進行拼接 1、第一行顯示locust啟動並部署在localhost:8089的域名中,且佔用了本地8089的埠號 2、第二行顯示當前所啟動的locust版本資訊

五、執行locust

1、瀏覽器訪問本地埠號8089,進入flask庫生成的web頁面

2、設定虛擬使用者數(Number of users to simulate),每秒鐘要啟動的使用者數(Hatch rate (users spawned/second)) 3、執行 【主頁面】

注:content size:請求頁面大小(和響應時間有關,數值越大說明頁面上面顯示元素就越多,請求響應時間就越長,反之,數值越小就說明頁面上顯示的元素就越少,請求響應時間就越短) 【圖表頁面】

【匯出頁面】

結語:上面的所有內容並沒有什麼高深的地方,僅僅是一個菜鳥在公司做的技術分享的稿子而已,學習也不過一週的時間,裡面肯定有很多不妥之處,這裡也算拋磚引玉吧,有什麼錯誤的地方,煩請指出,在此謝過。 至於為什麼會有這篇文章,主要是專案結束後太無聊了,無意間看到@蟲師的一個視訊教程,才認識到locust,後來自己跟著視訊學習了一遍,又花了一週的時間去惡補了一下,感覺並不難,並且能夠填上公司效能測試的空缺,所有臨時決定拿出來做一個技術分享,然後把分享的稿子貼到這裡而已,主要是看到關於locust詳細的教程並不是很多,同時也希望自己的帖子能夠給您一絲絲的幫助