python模拟用户压力测试_Python 工具 Locust 进行负载测试
Locust 是一個用?Python?編寫的開源的負載測試工具。 它允許您針對模擬用戶行為的 Web 應用程序編寫測試,然后按規模運行測試以幫助查找瓶頸或其他性能問題。
安裝
安裝是使用 Python 常用的工具 pip 完成的:$pip?install?locustio
配置
Locust 最好的功能之一是通過”Plain Old Python”1?完成配置。您只需創建一個名為 locustfile.py 的文件,為您的負載測試任務進行所有配置,并在其中進行測試。
下面是 locustfile.py 的一個例子,它定義了一個簡單的用戶行為,它由一個獲取特定網頁的“任務”組成:from?locust?import?HttpLocust,?TaskSet,?task
class?UserBehavior(TaskSet):
@task
def?get_something(self):
self.client.get("/something")
class?WebsiteUser(HttpLocust):
task_set?=?UserBehavior
我們再來添加第二個任務:class?UserBehavior(TaskSet):
@task
def?get_something(self):
self.client.get("/something")
@task
def?get_something_else(self):
self.client.get("/something-else")
當上面的 UserBehavior 運行時,Locust 將在每個任務之間隨機選擇并運行它們。 如果你想為不同的任務定義權重,那么你可以按照下面的方法來加權:class?UserBehavior(TaskSet):
@task(2)
def?get_something(self):
self.client.get("/something")
@task(1)
def?get_something_else(self):
self.client.get("/something-else")
權重定義了所有任務執行的比例,所以這里 get_something 在負載測試中的頻率會是 get_something_else 的兩倍。
您也可以編寫嵌套的任務,以執行一系列連續的或有特殊順序的任務。 這使您可以通過多個請求來定義用戶操作流。 例如:class?UserBehavior(TaskSet):
@task
def?get_something(self):
self.client.get("/something")
@task
def?get_something_else(self):
self.client.get("/something-else")
@task
def?get_two_things(self):
self.get_something()
self.get_something_else()
TaskSet 類可以有選擇地聲明一個 on_start 函數,當模擬用戶開始執行該 TaskSet 類時會調用該函數。 在開始負載測試之前,可以使用它來登錄:class?UserBehavior(TaskSet):
def?on_start(self):
self.client.post("/login",?{
'username':?'foo',?'password':?'bar'
})
@task
def?get_something(self):
self.client.get("/something")
在本地運行
要運行 Locust,可以在與 locustfile.py 相同的目錄下運行 locust 命令:$?locust?--host=http://localhost:5000
一旦命令運行,Locust 啟動一個本地 Web 服務器,您可以在瀏覽器中訪問:
選擇用戶數量和用戶產生速率后,您可以開始測試,這將顯示正在運行的測試的實時視圖:
分布式運行
在本地運行對于開始使用 Locust 和基本的測試來說是好的,但是如果您只是從本地機器運行它,大多數應用程序將不會收到很大的負載。在分布式模式下運行它幾乎是不可避免的。用戶可以輕松使用幾個云節點來增加負載。
安裝 Locust 并將 locustfile.py 移動到所有節點后,可以啟動“主”節點:$?locust?--host=http://localhost:5000?--master
然后啟動任何 slave 節點,給他們對主節點的引用:$?locust?--host=http://localhost:5000?--slave\
--master-host=192.168.10.100
不足
盡管 Locust 很好用,但是仍有有一些缺點。 首先,對于測試結果來說,統計信息相當糟糕(gen ben bu cun zai),或者說完全應該做得更好(例如,沒有圖表,并且不能在沒有運行多個測試的情況下將增加的故障率與較高的負載相關聯)。其次,有時候除了錯誤的狀態外,很難獲得錯誤響應的細節。 最后,做非 HTTP 或非 RESTful 請求的測試可能是會有一定復雜度的(盡管這很少見)。
優點
總的來說,Locust 是一個非常有用的負載測試工具,特別是作為一個開源項目。 如果您的代碼庫是基于 Python 的,由于有機會從現有的代碼庫中獲取數據,模型或業務邏輯,所以這自然是您可以使用的最舒服的工具,但即使您不使用 Python,也可以輕松整合它。
本文來自投稿,不代表訪得立場,如若轉載,請注明出處:http://www.found5.com//view/1460.html
總結
以上是生活随笔為你收集整理的python模拟用户压力测试_Python 工具 Locust 进行负载测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java职业发展路线图_Java程序员如
- 下一篇: 找出两列表共有的元素python,两个列