一、思考❓❔
1.什麼是效能自動化測試?
- 效能
- 系統負載能力
- 超負荷執行下的穩定性
- 系統瓶頸
- 自動化測試
- 使用程式代替手工
- 提升測試效率
- 效能自動化
- 使用程式碼模擬大批量使用者
- 讓使用者併發請求
- 多頁面多使用者併發請求
- 採集引數,統計系統負載能力
- 生成報告
2.Python中的效能自動化測試庫?
locust庫
- 使用Python
- 使用程式碼來建立批量使用者
- 分散式
- 可以在多臺伺服器上,進行分散式效能測試
- 可伸縮性強
- 穩定、應用廣泛
- 經得住各種場景下的考驗
- 基於web ui介面展示測試詳情
- 能測任何系統
二、基礎操作??
1.安裝locust
- 使用官方pypi源來安裝
pip install locustio
- 使用豆瓣pypi源來安裝(推薦)
pip install -i https://pypi.douban.com/simple locustio
安裝成功之後,在cmd控制檯將會新增一條命令,可輸入如下命令檢視:
locust --help
2.基本用法
在專案根目錄下建立locustfile.py檔案
from locust import Locust, TaskSet, task class MyTasks(TaskSet): """ 建立測試任務類,需要繼承TaskSet 可以新增多個測試任務 """ # 每個測試任務,往往會以例項方法的形式來呈現 # 同時需要使用task裝飾器來裝飾測試任務 @task def one_task(self): print("執行一個偉大的測試任務!") class RunTasks(Locust): """ 建立執行測試類,需要繼承Locust父類 """ task_set = MyTasks # 指定測試任務類,使用task_set覆蓋父類的類屬性 min_wait = 2000 # 指定啟動任務間隔的時間範圍(單位毫秒):2~5秒之間 max_wait = 5000 # 使用min_wait、max_wait覆蓋父類的類屬性
執行效能測試
# 開啟Pycharm Terminal控制檯 # 執行如下命令: locust
執行之後,控制檯會在本地監聽一個埠
a. 程式檔案要命名為 locustfile.py才行
b. 假如命名為one_example.py,則需要這樣執行
locust -f one_example.py
在瀏覽器開啟UI設定介面
- 預設使用localhost:8089開啟
三、綜合案例演練??
1.編寫自動化測試指令碼
- 在專案根目錄下建立test_load.py檔案
from locust import HttpLocust, TaskSet, task
class AdminLoadTest(TaskSet):
"""
建立後臺管理站點壓測類,需要繼承TaskSet
可以新增多個測試任務
"""
def login(self):
"""
登入例項方法
:return:
"""
self.client.post("http://localhost:8088/users/login/",
{"user_account": "admin", "password": "123456"})
def logout(self):
"""
登出例項方法
:return:
"""
self.client.get("http://localhost:8088/users/logout/")
def on_start(self):
"""
當任何一個task排程執行之前,
on_start例項方法會被呼叫
先登入
:return:
"""
self.login()
def on_stop(self):
"""
當任何一個task排程執行之後,
on_stop例項方法會被呼叫
後登出
:return:
"""
self.logout()
@task
def admin_index(self):
"""
對後臺主頁進行壓測
:return:
"""
self.client.get("http://localhost:8088/admin/")
class RunLoadTests(HttpLocust):
"""
建立執行壓測類
"""
task_set = AdminLoadTest
2.使用命令列執行
- 開啟Pycharm Terminal控制檯,執行如下命令:
注意:--host引數指定http主機地址,-f引數指定壓測程式檔名
3.開啟web ui介面進行配置
設定併發使用者數為10,每5秒建立一個使用者
壓測過程截圖
美輪美奐的壓測報告
壓測失敗詳情
下載壓測統計資料
下載的壓測統計資料csv檔案
六、總結??
- locust做壓測功能極其強大
- 支援分散式部署
- 提供的介面簡單
- 壓測程式碼非常容易編寫
- 提供UI介面來配置
- 美觀、詳細的圖表統計