locsut 入門與實踐

無蹤發表於2021-01-05

基本介紹

Locust是開源的、使用python開發、基於事件、支援分散式並且提供webUI進行測試執行和結果展示的效能測試工具
注:locust1.x相比較於0.x變化較大,具體可參考:https://blog.csdn.net/kk_gods/article/details/110237549

locust特性

模擬使用者操作:支援多協議,locust可以壓測任意協議型別的系統
併發機制:摒棄了程式和執行緒,採用協程(gevent)機制,單臺測試機可以產生數千併發壓力

Locust核心庫

1、 gevent:gevent是一種基於協程的Python網路庫,它用到Greenlet提供的,封裝了libevent事件迴圈的高層同步API。
2、flask:Python編寫的輕量級Web應用框架。
3、requests:Python Http庫
4、msgpack-python:MessagePack是一種快速、緊湊的二進位制序列化格式,適用於類似JSON的資料格式。msgpack-python主要提供MessagePack資料序列化及反序列化的方法。
5、pyzmq:pyzmq是zeromq(一種通訊佇列)的Python實現,主要用來實現Locust的分散式模式執行

壓測工具比對

locust實踐

安裝

Pip install locust
注:mac通過軟連線方式配置環境變數 ln -s xxxx/bin/locust /usr/local/bin/locust

locust簡單指令碼

from locust import HttpUser, TaskSet, task
import logging


class UserBehave(TaskSet):

@task(1)
def get_books(self):
response = self.client.get("/bookstore/api/v1/books")
assert '200' in str(response), logging.info("failed")


class WebsiteUser(HttpUser):
tasks = [UserBehave]
min_wait = 1000
max_wait = 3000
host = "http://127.0.0.1:5000/"


if __name__ == '__main__':
import os
os.system(r'locust -f F:\code\perform\locusts.py --web-host="127.0.0.1" -P 8091')

訪問locust: http://127.0.0.1:8091

結果分析


New test:點選該按鈕可對模擬的總虛擬使用者數和每秒啟動的虛擬使用者數進行編輯;
Statistics:類似於jmeter中Listen的聚合報告;
Charts:測試結果變化趨勢的曲線展示圖,分別為每秒完成的請求數(RPS)、響應時間、不同時間的虛擬使用者數;
Failures:失敗請求的展示介面;
Exceptions:異常請求的展示介面;
Download Data:測試資料下載模組, 提供三種型別的CSV格式的下載,分別是:Statistics、responsetime、exceptions;

  • 核心指標:併發數、RPS、響應時間、異常率

相關文章