【Jmeter】配置不同業務請求比例,應對綜合場景壓測


背景

在進行綜合場景壓測時,遇到了如何實現不同的請求所占比例不同的問題。

  • 有人說將這些請求分別放到單獨的線程組下,然后將線程組的線程數按照比例進行配置。

這種方法不是很好,因為服務器對不同的請求處理能力不同,有的處理快,有的處理慢。若采取上述方案的話,並不會按照我們預期的比例進行並發。

那么如何真實模擬按比例進行並發呢?此前使用LR進行過類似場景的測試時的思路如下:

  • 每次向服務器發出請求時,先生成一個隨機數,我們對隨機數的取值划分若干個范圍(對應若干個業務請求),然后對隨機數進行判斷,當隨機數落在某個范圍內,就可以執行對應的請求。
  • 比如,我們壓測的過程中,要訪問百度和besttest官網,並且請求比例是2:8,那么可以規定隨機數取值1<=random<=100,然后再划分2個范圍:當隨機數的取值在0到20之間,則訪問百度;當隨機數取值在20和100之間,則訪問besttest官網;根據概率論,當取樣量足夠大的話,訪問百度和besttest官網的請求比例會比較接近2:8。

Jmeter也能這樣實現嗎?答案是肯定的,下面我們使用Jmeter結合剛才的例子進行分解

Jmeter實現(Random)

首先,我們需要一個能夠生成隨機數的函數,剛好jmeter提供了這個函數

在測試計划下,我們右鍵“添加”——配置原件——Random Variable

設置隨機數的變量名稱為num,設置取值范圍0到100

添加兩個如果(if)控制器,添加控制條件,控制執行請求。

右鍵線程組添加“邏輯控制器”——如果(if)控制器

然后在兩個控制器下,分別添加1個http請求。

當隨機數num取值在20和100之間;調用獲取圖形獲取驗證碼;

添加判斷條件,如果當隨機數num取值在1和20之間,調用登錄接口

添加聚合報告,查看結果

運行jmeter驗證,取值是否按照比例請求,我們設置一個線程數,讓其循環100次,結果如下,獲取圖形獲取驗證碼78次,登錄接口22次,基本滿足我們想要的比例。

可以預見的是當數據量達到一定程度之后,會無限接近設置的2比8的比例。

Jmeter實現(計數器)

計數器可以通過如下方式添加,其他的實現思路一樣

后話:
其實在LR中也可以在場景設計里設置不同的請求的比例來實現。但是本文主要是討論Jmeter的實現思路,所以在前文中沒有提及。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM