jmeter 撒的一個謊,你可能都已經信以為真了


jmeter是目前大家都喜歡用的一款性能測試工具,因為它小巧、簡單易上手,所以很多人都願意用它來做接口測試或者性能測試,因此,在目前企業中,使用各個jmeter的版本都有,其中以jmeter3.x、4.x的應該居多。

但是,不管大家使用jmeter的什么版本,都可能被jmeter的一個謊言給欺騙了,直到最近jmeter5.2.1版本發布,這個謊言才逐漸浮出水面。

到底是什么謊言呢?

應該大家在做性能測試的時候,都喜歡設置N個線程數,然后循環M次,以此來模擬真實同時N多個用戶使用被測系統。對吧!

現實中被測系統,在N多個用戶同時使用時,這N個用戶應該都是相互獨立,互不關聯的,對吧!

我們用jmeter設置N個線程數,循環M次,目的就是想模擬這樣N個互不關聯的用戶使用被測系統。但是,jmeter卻在這個時候,給我們撒了一個彌天大謊。


 

大家先看這張圖,我在jmeter5.1.1版本創建一個普通的線程組,設置線程數2、循環次數2,線程組下用一個“csv數據文件設置”獲取登錄的賬戶信息,一個普通的http取樣器做登錄,一個普通的http取樣器做登錄后獲取用戶列表。

為了找出這個‘謊言’,我在登錄接口下面加個后置正則表達式提取器,提取登錄成功后的session值,然后把session值放在下一個取樣器的‘名稱’中打印出來。

分析

如果完全等價於真實場景,那應該有4個用戶登錄,生成4個session,用4個不同的session去獲取用戶列表信息,對吧!

好,現在我們用這個腳本run一下,看下結果:


 

看下結果:


 

看到一個奇怪的事情沒有?4個手機號都不相同,但是session只有2個。線程1的兩次迭代使用了相同的session,線程2的兩次迭代也使用了相同的session。

說明同一線程無論迭代多少次,都是使用相同的session,也就是線程第一次登錄的用戶生成的session一直用於后面的迭代。、

為了驗證,我們的這個總結,我們修改線程數為3,迭代次數為永遠,持續循環10秒鍾,再看下run的結果。


 

 

看到了嗎?不管迭代多少次,同一個線程下,所有用戶都是使用相同的session。

原來在我們使用jmeter做性能測試時,使用多線程循環迭代多次,並不是我們理想中的真實場景。jmeter欺騙了我們。

那,這種情況,只是出現在jmeter5.1.1版本中嗎?我們把相同的腳本,拷貝到jmeter3.2版本和jmeter4.0版本中,我們再來看看。


 

 

看到了嗎?原來這是jmeter的家族遺傳史啊,都是這樣的情況。沒有深入研究,你是不是一直都認為jmeter多用戶迭代做性能測試,就是你理想中的模擬用戶真實使用場景的呢?

這個有沒有什么辦法,做到你理想中的模擬用戶真實的使用場景呢?

告訴大家一個好消息,在jmeter最新的5.2.1版本中,已經發生變化啦!走過、路過、不要錯過,都過來看看啦!別被一個‘謊言’迷惑終身啦!

在jmeter5.2版本發布的時候,已經在 線程組 的設置中,悄悄的加上了一個復選配置項:Same user on each iteration 默認為勾選,同時,在cookie管理器、緩存管理器、授權管理器 的配置選項中,也都增加了一個 ‘Use Thread Group configuration to control clearing’的復選配置項。


 

 

加了這個,怎么用呢?

首先,我們的腳本和前面的腳本做法完全一樣。

只是,要注意:

1、在線程組配置時,要去掉默認的Same user on each iteration 的勾選;

2、在cookie管理器配置中,要勾選Use Thread Group configuration to control cookie clearing

做好了這些,我們來run一下看下:


 

 

這樣配置后,在發起獲取用戶列表信息時session都是使用新登陸的用戶生成的session,每次都不一樣。這樣,也就更真實的模擬了大量用戶訪問被測系統的實際情況。

好了,這個技能,你get到了嗎?

說明:本文為檸檬班Allen老師原創,轉載需注明出處

領取100G測試資料

讓軟件測試學習變得更簡單!

添加丙丙老師微信

免費領取Jmeter學習視頻

 


免責聲明!

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



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