天天看點

Jmeter性能測試工具使用總結

Jmeter函數總結

第一章 前言

第二章 常用函數的介紹

2.1. timeShift函數

2.2. time函數

2.3. groovy函數

第三章 常用用法

3.1. Jmeter讀取Excel

1) 添加線程組

2) 添加配置元件--》選擇CSV Data Set Config

3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值

4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料

5) 添加http請求,将Excel中擷取的資料作為參數傳遞

6) 添加一個檢視結果樹,以檢視執行之後的結果

7) 設定線程組

8) 遇到問題

3.2. Jmeter讀取txt

1) 添加線程組

2) 添加配置元件--》選擇CSV Data Set Config

3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值

4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料

5) 添加http請求,将Excel中擷取的資料作為參數傳遞

6) 添加一個檢視結果樹,以檢視執行之後的結果、

7) 設定線程組

第四章 常見問題

4.1. Jmeter請求參數時,中文出現亂碼

第一章 前言

近期工作過程中使用Jmeter函數較多,初步使用,遇到問題隻能依賴度娘解決,近期抽時間将遇到的問題梳理了一下,并附上了解決方法,希望可以對大家有所幫助。

第二章 常用函數的介紹

2.1. timeShift函數

背景:近期測試的一些業務的接口的傳參需要傳入與時間有關的一些數值

(比如需要毫秒級别的時間戳,比如1660270555043,對應的時間2022-08-12 10:15:55 ),

(再比如20220812101555848 對應的是2022-08-12 10:15:55),

使用 timeShift函數可以構造最新時間和指定時間戳。

示例:

場景 函數 結果

目前時間時間戳

(毫秒級)

${__timeShift(,,,,)} 1660270835790

2小時前時間戳

(毫秒級)

${__timeShift(,,-PT2H,,)} 1660263761872

指定格式,

輸出目前時間

${__timeShift(yyyyMMddHHmmssSSS,,,,)} 20220812101555848

指定格式,

輸出2小時前時間

${__timeShift(yyyyMMddHHmmssSSS,,-PT2H,,)} 20220812101555848

展開:

點選[函數助手/Function Helper]系統彈出函數助手頁面,下拉選擇timeShift

 格式 - 将顯示建立日期的格式。如果該值未被傳遞,則以毫秒為機關建立日期。

比如:

傳入yyyyMMddHHmmssSSS,輸出20220812101555848

傳入yyyy-MM-dd HH:mm:ss 輸出 2022-08-12 10:33:42

 日期 - 這是日期值。用于如果要通過添加或減去特定天數,小時或分鐘來建立特定日期的情況。如果參數值未通過,則使用目前日期。(沒用對,自己打算再找找度娘)

 移位 - 表示要從日期參數的值中添加或減去多少天,幾小時或幾分鐘。如果該值未被傳遞,則不會将任何值減去或添加到日期參數的值中。不使用符号時為增加,使用+ -号實作加減

    “P1DT2H4M5S” 解析為“添加1天2小時4分鐘5秒”

    “P-6H3M”解析為“-6小時+3分鐘”

    “-P6H3M”解析為“-6小時-3分鐘”

    “-P-6H + 3M”解析為“+6小時和-3分鐘”

              “P1d” 解析為增加一天

              “PT2H” 解析為增加兩小時

              “PT30m”解析為增加30分鐘

             “PT40S”解析為增加40秒

             “P1dT2H30m40s”解析為增加一天兩小時三十分鐘四十秒

    區域設定 - 設定建立日期的顯示語言。不是必填項

  變量 - 建立日期的值将被配置設定給的變量的名稱。不是必填項

2.2 time函數

time函數同timeShirt函數用法大緻相同。

示例:

場景 函數 結果

目前時間時間戳

(毫秒級)

${__time(,)} 1660272941726

目前時間時間戳

(秒級)

${__time(/1000,) 1660272952
指定時間格式 ${__time(yyyy-MM-dd,)} 2022-08-12

展開:

點選[函數助手/Function Helper]系統彈出函數助手頁面,下拉選擇time函數

Jmeter性能測試工具使用總結

 格式 - 将顯示建立日期的格式。如果該值未被傳遞,則以毫秒為機關建立日期。

比如:

傳入yyyyMMddHHmmssSSS,輸出20220812101555848

傳入yyyy-MM-dd HH:mm:ss 輸出 2022-08-12 10:33:42

變量 - 建立日期的值将被配置設定給的變量的名稱。不是必填項

time函數與timeShift函數差別:

*time函數即可以生成秒級别、也可以毫秒級别的時間戳,timeShift函數僅可以生成毫秒級别的時間戳;

*timeShift函數比time函數多了幾項傳參,比如可以傳入移位參數,構造幾天前/幾小時/幾分鐘對應時間值

2.3. groovy函數

問題:我需要一個傳參,将指定格式的時間轉為時間戳(毫秒級别),試了好幾個方法都不太合适,最後使用了同僚提供的groovy函數

示例:比如将startDate的日期轉為時間戳

指定日期 轉為時間戳 輸出
startDate=2022-07-19 12:30:10 ${__groovy(new  java.text.SimpleDateFormat('yyyy-MM-dd HH:mm:ss').parse('${startDate}').getTime(),)} startTime=1658205010000

第三章 常用用法

3.1. Jmeter讀取Excel

背景:近期需要使用接口構造100條資料,就計劃使用excel存儲資料,然後将每次讀取的資料作為參數傳遞給接口。

步驟:

1) 添加線程組

Jmeter性能測試工具使用總結

2) 添加配置元件--》選擇CSV Data Set Config

附上Excel表格

3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值

4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料

Jmeter性能測試工具使用總結

5) 添加http請求,将Excel中擷取的資料作為參數傳遞

Jmeter性能測試工具使用總結

6) 添加一個檢視結果樹,以檢視執行之後的結果

Jmeter性能測試工具使用總結
Jmeter性能測試工具使用總結

7) 設定線程組

比如循環次數設定5,系統會重複執行5次,依次讀取第前5條資料作為傳參,調用接口

Jmeter性能測試工具使用總結
Jmeter性能測試工具使用總結

8) 遇到問題

Csv格式添加資料,但是無法儲存設定的格式,比如設定的時間格式樣式就丢失了

Jmeter性能測試工具使用總結

是以,最終未使用從excel中讀取資料,而是計劃從txt中讀取資料

3.2. Jmeter讀取txt

步驟基本上同章節3.1 Jmeter讀取Excel 一緻,也是六大步驟,僅附上與excel 不同的截圖

1) 添加線程組

2) 添加配置元件--》選擇CSV Data Set Config

 附上txt内容

3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值

4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料

5) 添加http請求,将Excel中擷取的資料作為參數傳遞

6) 添加一個檢視結果樹,以檢視執行之後的結果、

7) 設定線程組

第四章 常見問題

4.1. Jmeter請求參數時,中文出現亂碼

問題描述:使用jmeter時,又遇到了在接口參數輸入有帶中文的時候,執行接口後,出現亂碼的情況