當前位置:成語大全網 - 書法字典 - 如何將jmeter報表中的內存轉換成百分比?

如何將jmeter報表中的內存轉換成百分比?

1.多線程模式,比如A采樣器用20個線程,B線程用60個線程,那麽比例就是1:3。

然而,這將導致壹個問題。如果按照時間維度執行,兩者都執行了10min,采樣器A和采樣器B的響應時間不同,那麽這段時間內A和B的請求數不可能是1:3。

2.jmeter自帶計算功能,可以達到結果。

簡述控制器的功能。這個控制器對每個請求進行計數,相當於給他壹個數字。

當參數為true時,每個用戶都有自己的計數器,比如10個線程組和100個循環,這意味著計數器的值為1-100。

當選擇false時,全局計算器有10個線程組和100個循環,計數器值為1-10000。

那麽如果妳想用1:3的比例,就用if控制器。

條件是什麽?${__counter(true,)}%4==0且${__counter(true,)}%4!=0

詳見/seling Chen/article/details/47844375。

3.用JSR223采樣器?+?絕妙的

將以下代碼添加到控制器中。

12345678910111213141516171819

int as int[];vars.putObject("RANDOM_VALUES ",值);}//將在SwitchController值中使用的增量將在0和2//之間,因為有3個TCS Integer Increment =(Integer)vars . getobject(" Increment ");if(increment = = null){ increment = integer . value of(0);}別的?{ increment = integer . value of((increment . int value()+1)% values . length);?} String value = integer . tostring(values[increment . int value()]);?vars.put("SWITCH_VALUE ",值);vars.putObject("INCREMENT ",增量);sample result . setresponsedata(" SWITCH _ VALUE from inside:"+VALUE,null);回歸?"開關值:"+值;

相當於每次遍歷RANDOM_VALUES數組,依次取值,然後用if控制器判斷,達到百分比的效果。

參見:/translate/jmeter-control-percentage-of-sampler?金屬波紋管

比較以上三種方式:

不用說,第壹種方案有時達不到百分比分配要求的效果,這才是上策。

經過測試,第三種方案有壹個很大的缺點,就是使用取樣器,消耗量大。尤其是更復雜的場景,比如場景A和場景B,需要壹個JSR223采樣器,場景A下面還有壹個復合場景,需要按比例分配請求(這是相當常見的),然後還需要壹個額外的采樣器。這樣的話,就太麻煩了。如果使用本地jmeter而不是分布式的,壓力可能會因為開銷而過高。

方案二:用jmeter自帶的計算器是個不錯的方法。但是對於壹些復雜的場景,這個公式就有點難寫了。

比如比例為3:2時,我看到網上實現都是$ {_ _ counter (true,)}% 2 = = 1 | $ {_ _ counter (true,)}% 3 = = 0。

這個計算方法比較復雜,那麽有沒有更簡單的方法實現呢?

其實是有的。

例如,以下場景:

那麽表達式應該怎麽寫呢?

上面有3的倍數和5的倍數,所以取它的最小公倍數15,按15除。

兩者都使用If控制器,表達式如下:

答:?${__counter(false,)} % 15 & lt;=5

b:?${__counter(false,)} % 15 & gt;五

c:?${__counter(false,)}%15==1

d: ${__counter(false,)} % 15 & gt;1。& amp?${__counter(false,)} % 15 & lt;=5

總結規律:

按照最小公倍數劃分,每個控制器拿自己的份額。

上面的3:2實現方法就更簡單了,壹個占2/5,壹個占3/5,不用寫那麽復雜的數學表達式~ ~ ~