1. 程式人生 > >Jmeter 學習隨筆(四)

Jmeter 學習隨筆(四)

在前三篇文章已經講過 Jmeter 的基本安裝和使用,用過 Jmeter 進行介面測試和壓力測試的小夥伴應該都知道,使用者登入後會生成 token ,登入後的每一個介面的操作都是需要進行登入態校驗的,使用者進入不同的介面之後,sign 的生成會變得千奇百怪,現在想記錄下我解決上一個介面儲存的變數在下一介面的使用。

使用正則表示式

在進行上一介面和新下一介面變數中間的傳遞和使用時,大部分小夥伴會使用正則表示式來進行傳遞。
首先,使用者登入後會生成當前使用者,當前時間戳下的 token ;
使用者登入後生成相應的token
其次,在同一執行緒組同一登入請求下使用【正則表示式】將生成的 token 存為全域性變數;
在同一登入請求下,新增後置處理器->正則表示式提取器,填寫
引用名稱:token
正則表示式:”token”:”(.+?)”
模板:

1
匹配數字(0代表隨機):0
預設值:null
這裡寫圖片描述
最後,將獲取到的token存成全域性變數就可以進行使用了。

之前是進行過嘗試的,沒有進行全域性變數的設定時,偶爾 token 是可以在整個測試計劃下使用的,但是經常會報錯,導致獲取不到 token 變數

在當前執行緒組下點選右鍵—>新增—>Sampler—>BeanShell Sampler,進行全域性變數的儲存

${
__setProperty(token,$(token),)}

將獲取到的token存為全域性變數
在下一請求的HTTP 頭資訊管理處進行驗證token變數的獲取是否正確
token的使用

使用 JSON Path 方式

JSON Path 使用方法

只有在登入的時候,介面產生的變數可能只有 token ,但是就當前所測的APP來說,需要上一介面的變數非常的多,所以,只是用正則表示式肯定不能滿足我們需要獲取的變數值,於是使用 JSON Path 的方式進行獲取並存為全域性變數使用。

第一步:與上面的正則表示式類似,都是在當前登入請求下面進行新增後置處理器—>JSON Extractor,檢視需要獲取的變數名及位置
PLANID獲取


第二步:根據該介面得到的字串,進行獲取變數並存為全域性變數在整個測試計劃中使用。
獲取變數
全域性變數的儲存形式與上面正則表示式的相同,再次不再贅述。

第三步:在 引數管理處新增上一介面獲取到的全域性變數,生成 sign 的時候進行使用
引數處使用全域性變數

其實上一介面和下一介面間變數的獲取使用哪一種方式都可以,主要是變數需要在上一介面處進行儲存為全域性變數,在下一介面處進行提取使用,需要了解Bean Shell 全域性變數的儲存方式,以及使用方法
${__setProperty(token,$(token),)} ----Bean Shell中全域性變數儲存方式
${__P(token,)}                  ----下一介面變數的使用方法