Locust基於python的協程機制,打破了執行緒程序的限制,可以能夠在一臺測試機上跑高並行
1.快慢:衡量系統的處理效率:響應時間
2.多少:衡量系統的處理能力:單位時間內能處理多少個事務(tps)
效能測試根據測試需求最常見的分為下面三類
1 負載測試load testing
不斷向伺服器加壓,值得預定的指標或者部分系統資源達到瓶頸,目的是找到系統最大負載的能力
2 壓力測試
通過高負載持續長時間,來驗證系統是否穩定
3 並行測試:
同時像伺服器提交請求,目的發現系統是否存在事務衝突或者鎖升級的現象
效能負載模型
自定義負載形狀
自定義一個shape.py通過繼承LoadTestShape並重寫tick
這個形狀類將以100塊為單位,20速率的增加使用者數,然後在10分鐘後停止負載測試(從執行開始的第51秒開始user_count會round到100)
from locust import LoadTestShape class MyCustomShape(LoadTestShape): time_limit = 600 spawn_rate = 20 def tick(self): run_time = self.get_run_time() if run_time < self.time_limit: # User count rounded to nearest hundred. user_count = round(run_time, -2) return (user_count, self.spawn_rate) return None
執行圖如下所示
通過命令列去觸發
os.system('locust -f read.py,shape.py --web-host="127.0.0.1"')
不同時間階段的例子
from locust import LoadTestShape class StagesShapeWithCustomUsers(LoadTestShape): stages = [ {"duration": 10, "users": 10, "spawn_rate": 10}, {"duration": 30, "users": 50, "spawn_rate": 10}, {"duration": 60, "users": 100, "spawn_rate": 10}, {"duration": 120, "users": 100, "spawn_rate": 10}] def tick(self): run_time = self.get_run_time() for stage in self.stages: if run_time < stage["duration"]: tick_data = (stage["users"], stage["spawn_rate"]) return tick_data return None
作者: yetangjian
出處: https://www.cnblogs.com/yetangjian/p/17366389.html
關於作者: yetangjian
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出, 原文連結 如有問題, 可郵件([email protected])諮詢.