日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python locust api_干货 | 基于Locust的接口压测

發(fā)布時間:2025/3/12 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python locust api_干货 | 基于Locust的接口压测 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者介紹:吳鋒雷。PP云高級測試工程師,擁有10年業(yè)務研發(fā)和測試經(jīng)驗,目前負責SDK及相關(guān)產(chǎn)品的測試工作。

系統(tǒng)上線前一般要通過壓力測試來判斷下是否能承受預估的訪問量,假設我們要測試的接口每天訪問量是10萬,那么平均下來的RPS(request per second)大概是10,假設高峰時訪問量是平時的3倍,那么要上線,RPS必須在30+以上,下面以Locust為例說明下要達成這個目標,怎么來實現(xiàn)壓測。

概述

Locust是一個基于python的壓力測試工具,可以通過寫python腳本的方式來定義用戶行為對web接口進行性能測試,擴展性比較好,也可以在較快地實現(xiàn)性能測試。與其他性能測試工具LoadRunner,Jmeter之類的工具相比,Locust的優(yōu)點有:

1. Locust采用Python腳本描述,比較容易實現(xiàn)復雜的因果邏輯,比如待壓的接口有完整的流程的,假設程序要訪問一個api,可以把鑒權(quán)返回的token放在Queue中,然后在調(diào)用接口的task中取得Queue中的token就可以了。另外python腳本也比較容易實現(xiàn)虛擬用戶使用的數(shù)據(jù)不重復,保證并發(fā)測試數(shù)據(jù)唯一性。

2. Locust的http請求基于Request庫,這個庫簡潔易用,功能十分強大。

3. Locust的并發(fā)機制摒棄了進程和線程,采用協(xié)程(gevent)的機制使,用協(xié)程提供的阻塞IO和coroutine來實現(xiàn)網(wǎng)絡層的并發(fā)請求,即使是單臺壓力機也能產(chǎn)生數(shù)千并發(fā)請求數(shù);因此Locust能在使用較少壓力機的前提下支持極高并發(fā)數(shù)的測試。

基本概念

HttpLocust繼承了locust 類, 添加了可以發(fā)送http請求的功能。

HttpLocust類有如下屬性:

task_set:在taskset類定義了每個用戶的行為。

min_wait:每個任務最少間隔多久執(zhí)行一次。

max_wait:每個任務最少間隔多久執(zhí)行一次。

Host:被壓測的網(wǎng)站的域名。

Weight:一個Locust實例被挑選執(zhí)行的權(quán)重,數(shù)值越大,執(zhí)行頻率越高。

應用實例

我們以ppyun的一些接口為例,看下locust怎么實現(xiàn)一個簡單的性能測試。

代碼示例:

上面的例子腳本中主要包含了兩個類:PptvyunTasks和WebsiteUser,其中PptvyunTasks是繼承了TaskSet,而WebsiteUser是繼承了HttpLocust。

我們使用Locust腳本測試的時候,所有的場景都是依賴這兩個基類來進行描述的。PptvyunTasks類中定義的是指我們測試任務中的具體業(yè)務操作,上面的腳本的意思就是訪問一個svc.pptvyun.com路徑下兩個不同的接口,其中兩個請求最小間隔1000ms最大的間隔為5000ms,兩個請求比例為2比1。

打開http://localhost:8089/頁面就能看到如下頁面:填寫要模擬的用戶數(shù)(Numberof user to simulate)和每秒產(chǎn)生的用戶數(shù)(Hatchrate)

點擊Startswarming后,得到如下結(jié)果。可以看到由于代碼中config接口的權(quán)重是1,getplayinfo的權(quán)重是2。產(chǎn)生的請求數(shù)量getplayinfo接口大概是config接口的兩倍。RPS在逐步提升到30后,系統(tǒng)的響應時間趨于穩(wěn)定,在30ms左右。

通過前面對Locust的使用,可以看到Locust的結(jié)果展示比較簡單,主要關(guān)注并發(fā)數(shù)、RPS、響應時間、異常率這幾個指標,與其它工具相比要少一些,但對多數(shù)的場景已經(jīng)夠用了。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的python locust api_干货 | 基于Locust的接口压测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。