Jmeter(五十二) - 從入門到精通高級篇 - jmeter之跨線程組傳遞參數(詳解教程)


1.簡介

之前分享的所有文章都是只有一個線程組,而且參數的傳遞也只在一個線程組中,那么如果需要在兩個線程組中傳遞參數,我們怎么做呢?宏哥今天就給小伙伴或者童鞋們講解一下,如何實現在線程組之間傳遞參數。

2.什么是jmeter之跨線程組傳遞參數

顧名思義就是:使用jmeter工具在兩個或者兩個以上的線程組之間傳遞參數。

3.為什么在線程組之間傳遞參數?

首先往往我們接到一個性能測試任務需要對某一個接口進行壓測時不需要每一次請求都取登錄(如果每次都登錄這樣就會影響測試結果),那么遇到這種情況我們就要通過登錄接口獲取token(session、cookie)了,然后用另一個線程組進行壓測。
其次大家可以想象一個場景,假設我們在測試一個購物車程序,而加東西進購物車之前,我們需要先登錄(這樣的邏輯設計就是不正確的,每選擇一個商品添加到購物車,就需要重新登錄一下,那這樣的設計誰還會用你家的APP。)。在正常的場景下,我們的登錄狀態可以保持一段時間,不用每次添加購物車之前都登陸一下,在這種情況下,我們測試的時候就需要把登錄和添加購物車寫到兩個線程組里,然后問題就來了,兩個線程組直接無法直接共享參數。

以上兩種情況是工作中經常面臨的實際問題,所以需要在線程組之間傳遞參數。

4.如何在線程組之間傳遞參數?

JMeter變量作用域局限於所屬線程。這樣設計是經過深思熟慮的,目的是讓測試線程能夠獨立運轉。有時候用戶可能需要在不同線程間(可能屬於同一個線程組,也可能不屬於同一個線程組)傳遞變量。在Jmeter中,除了基本變量之外,還有一種,是它本身的屬性,property,我們可以借助屬性來完成線程組間的變量傳遞。屬性為所有 JMeter 線程所共享,因此當某個線程設置一個屬性后,其他線程就可以讀取更新后的值。

5.實戰

 閑話少說,宏哥還是快速實踐一下,具體步驟如下:

1、創建測試計划,並重新命名為“ jmeter之跨線程組傳遞參數”,然后添加線程組,並重新命名為“登錄”。如下圖所示:

2、選中線程組,右鍵添加取樣器“HTTP請求”,並重新命名為“獲取token”,然后配置取樣器。如下圖所示:

3、選中線程組,右鍵添加監聽器“察看結果樹”,保存腳本,運行jmeter,察看結果樹(測試一下是否可以成功的獲取到token,宏哥這里已經獲取到了,然后留着等在其他線程組備用)。如下圖所示:

從第三步可以看到宏哥已經成功獲取到token了,緊接着就是要將token提取出來,然后再將token設置到屬性中,這樣其他線程組就可以調用了。

4、將token提取出來,宏哥這里使用的是正則提取器,你可以使用其他的提取器,只要提取出來就可以。首先在結果樹中選擇“正則測試器”,然后輸入正則表達式,提取token。如下圖所示:

5、從上邊可以看出來,宏哥填寫的正則表達式可以成功提取到token,那么宏哥選中獲取token,右鍵添加正則表達式提取器然后將這里測試的正則表達式復制到正則提取器中進行相關的配置。如下圖所示:

6、根據上邊思路,提取出來就要加入到屬性中,加入屬性中,宏哥這里使用后置處理器-BeanShell后置處理器,選中獲取token,右鍵添加BeanShell后置處理器,然后進行配置,添加腳本。如下圖所示:

參考腳本:

String token = bsh.args[0];
${__setProperty(newtoken,${token},)};
log.info("token:" + token);

7、將上邊BeanShell后置處理器的腳本中,加入“log.info("token:" + token);” 這段代碼然后在日志中查看是否獲取到token的值,宏哥運行測試計划腳本后,查看日志(點擊右上角黃色都有感嘆號的圖標),如下圖所示:

8、從上邊的日志中我們清楚的發現沒有提取到token的值,宏哥查看正則表達式提取器發現匹配數字是-1,這里有問題,將其修改成1,運行測試計划,再次查看日志,如下圖所示:

9、從上圖發現,宏哥已經提取到token的值到屬性中了,那么就可以傳遞到其他線程組中調用這個token。然后繼續創建一個線程組,右鍵添加配置元件“HTTP Cookie管理器”,進行配置,如下圖所示:

10、右鍵添加取樣器“HTTP請求”,並重新命名為“查看角色”進行配置,如下圖所示:

11、添加監聽器“察看結果樹”,如下圖所示:

12、保存測試計划腳本,運行jmeter后,查看結果樹(可以看到獲取到角色列表),如下圖所示:

好了,到此 jmeter之跨線程組傳遞參數,就已經完全實現了。

6.小結

宏哥這里就講解了一下,跨線程傳遞token,像cookie、session以及其他參數都是類似的,照貓畫虎即可。


免責聲明!

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



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