jmeter是目前你們都喜歡用的一款性能測試工具,由於它小巧、簡單易上手,因此不少人都願意用它來作接口測試或者性能測試,所以,在目前企業中,使用各個jmeter的版本都有,其中以jmeter3.x、4.x的應該居多。正則表達式
可是,無論你們使用jmeter的什麼版本,均可能被jmeter的一個謊話給欺騙了,直到最近jmeter5.2.1版本發佈,這個謊話才逐漸浮出水面。緩存
究竟是什麼謊話呢?微信
應該你們在作性能測試的時候,都喜歡設置N個線程數,而後循環M次,以此來模擬真實同時N多個用戶使用被測系統。對吧!cookie
現實中被測系統,在N多個用戶同時使用時,這N個用戶應該都是相互獨立,互不關聯的,對吧!session
咱們用jmeter設置N個線程數,循環M次,目的就是想模擬這樣N個互不關聯的用戶使用被測系統。可是,jmeter卻在這個時候,給咱們撒了一個彌天大謊。多線程
你們先看這張圖,我在jmeter5.1.1版本建立一個普通的線程組,設置線程數二、循環次數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’的複選配置項。
加了這個,怎麼用呢?
首先,咱們的腳本和前面的腳本作法徹底同樣。
只是,要注意:
一、在線程組配置時,要去掉默認的Same user on each iteration 的勾選;
二、在cookie管理器配置中,要勾選Use Thread Group configuration to control cookie clearing
作好了這些,咱們來run一下看下:
這樣配置後,在發起獲取用戶列表信息時session都是使用新登錄的用戶生成的session,每次都不同。這樣,也就更真實的模擬了大量用戶訪問被測系統的實際狀況。
好了,這個技能,你get到了嗎?
說明:本文爲檸檬班Allen老師原創,轉載需註明出處
領取100G測試資料
讓軟件測試學習變得更簡單!
添加丙丙老師微信
免費領取Jmeter學習視頻