Jmeter 函數

1. Jmeter函數是什麼?

可以被認爲是某種特殊的變量,它們可以被採樣器或者其他測試元件所引用。

2. 爲什麼要學習函數?

1. 使用函數我們可以1次【批量】的對學院資源進行新增
2. 使用函數我們可以利用函數讀取外部數據進行參數化
3. 使用函數我們可以設置指定動態數據的數據爲全局變量  

2.1 Jmeter常用函數

1. __CSVRead
2. __counter 
3. __Random
4. __time
5. __setProperty
6. __property

以上爲我們使用Jmeter測試項目時常用的函數,接下來我們將逐個學習;

2.2 在學習這些函數之前我們先介紹下:

1) Jmeter函數格式
2) 函數助手對話框

2.3 Jmeter函數的格式

1. ${__functionName(var1,var2,var3)} 

     1) ${} 函數引用固定格式和參數化相同
     2) __functionName匹配被調用的函數名稱;
     3) 用圓括號包含函數的形參,例如${__time(YMD)},不同函數要求的參數也不同;
     4) 有些JMeter函數不要求參數,則可以不使用圓括號,例如${__threadNum};

2.4 函數助手對話框

作用:對Jmeter中自帶函數的參數設置和生成使用

啓動方式:
    1) 菜單(選項)-->函數助手對話框
    2) Ctrl+Shift+F1
    3) 工具欄倒數第二個 圖標"記事本"  

3. __CSVRead 函數

作用:csvRead函數是從外部讀取參數,csvRead函數可以從一個文件中讀取多個參數

3.1 案例1

通過CSVRead函數讀取csv.txt內容,作爲請求時接口所需參數的值使用

http://127.0.0.1:8000/api/departments/?$dep_id_list=${__CSVRead(E:\jmeterScript\參數\csv.txt,0)}
,${__CSVRead(E:\jmeterScript\參數\csv.txt,1)}

csv.txt內容
    T01,T02
    T03,T04
    T05,T06  

3.2 操作分析

1. 測試計劃->線程組
2. 線程組->HTTP請求
3. 函數助手對話框->__CSVRead
4. 測試計劃->監聽器->察看結果樹

3.3 技術難點

1. __CSVRead 參數設置
2. 線程組 (線程數)

3.4 __CSVRead 參數配置圖

__CSVRead

1. 選擇一個功能:選擇__CSVRead
2. CSV file to get values from | *alias:要讀取的文件路徑-(絕對路徑)
3. CSV文件列號| next| *alias:從第幾列開始讀取,注意第一列是0
4. 點擊生成函數引用格式
5. 全選複製

3.5 __CSVRead-總結:

1. 絕對路徑
2. 列的開始索引
3. 多行參數使用線程數  

4. __counter函數

作用:這個函數是一個計數器,用於統計函數的使用次數  

4.1 案例2

使用counter計次函數,請求(查詢學院-所有)10次,爲每次請求做計次標識  

http://127.0.0.1:8000/api/departments/?num=${__counter(FALSE,)}

4.2 操作分析

1. 測試計劃->線程組
2. 線程組->HTTP請求
3. 函數助手對話框->__counter
4. 測試計劃->監聽器->察看結果樹

4.3 技術難點

1. __counter函數參數設置
2. 設置計數參數名

4.4 __counter函數配置圖

__counter

1. TRUE,每個用戶有自己的計數器;FALSE,使用全局計數器:
    1) TRUE:  每個用戶有自己的計數器,可以用於統計每個線程各執行了多少次
    2) FALSE: 使用全局計數器,可以統計出這次測試共運行了多少次用

4.5 __counter函數-總結

1. __counter函數作用
2. __counter函數與指定值配合使用 num=${__counter(FALSE,)}

5. __Random函數

作用:隨機生成一個指定範圍內的數值   

5.1 案例3

使用__Random函數對請求(查詢學院-指定)進行隨機查詢

http://127.0.0.1:8000/api/departments/T0${__Random(1,6,)}/

5.2 操作分析

1. 測試計劃->線程組
2. 線程組->HTTP請求
3. 函數助手對話框->__Random
4. 測試計劃->監聽器->察看結果樹  

5.3 技術難點分析

1. __Random函數參數設置

5.4 __Random函數配置圖

__Random函數

1. 一個範圍內的最小值:隨機數生成時開始數,也是最小數
2. 一個範圍內允許的最大值:隨機生成結束數,也是最大數

5.5 __Random-總結

1. __Random作用
2. __Random設置

6. __time函數

作用:獲取當前電腦日期時間 比如:MMddhhmmss 月/日/時分秒

6.1 案例4

使用__time函數解決迭代(學院-新增)dep_id重複問題

JSON報文:
        {
            "data": [
                        {
                            "dep_id":"time${__time(MMddhhmmss,)}",
                            "dep_name":"Test學院",
                            "master_name":"Test-Master",
                            "slogan":"Here is Slogan"
                        }
                      ]
        }

6.2 操作分析

1. 測試計劃->HTTP信息頭管理器
2. 測試計劃->線程組
3. 線程組->HTTP請求
4. 函數助手對話框->__time函數
5. 測試計劃->監聽器->察看結果樹   

6.3 技術難點分析

1. HTTP信息頭管理器設置
2. HTTP新增請求方法
3. __time函數參數

6.4 __time函數參數配置圖

time函數

1. Format string for SimpleDateFormat (optional):
    1) 爲空:返回毫秒
    2) 設置格式:MMddhhmmss 月/日/時/分/秒   

6.5 __time函數-總結

1. __time作用
2. __time參數設置

7. __setProperty函數

作用:用於把指定數據設定成Jmeter屬性,可以理解爲是把指定數據設置成全局變量  

7.1 案例5

1. 通過__setProperty函數把新增的學院ID,設置成全局變量

7.2 操作分析

1. 測試計劃-HTTP信息頭管理器
2. 測試計劃->JDBC Connection Configuration
3. 測試計劃->線程組(學院-新增)
4. 線程組->HTTP請求(HTTP請求-學院新增)
5. 線程組->JDBC Request
6. 函數助手對話框->__setProperty函數
7. 線程組->BeanShell Sampler
8. 線程組->Debug Sampler
9. 測試計劃->察看結果樹
10. 工作臺->Property Display

7.3 技術難點分析

1. __setProperty函數參數設置
2. BeanShell Sampler作用 
3. JDBC Request SQL語句
4. 如何知道設置的屬性(全局變量)成功了

7.4 __setProperty函數參數配置圖

__setProperty

1. 屬性名稱:要設置的屬性名稱也就是全局變量名
2. Value of property:屬性的值(全局變量的值)  

7.5 BeanShell Sampler 組件配置圖

作用:可執行JavaScript的一種容器

BeanShell Sampler圖

7.6 Property Display

作用:顯示Jmeter工具中的屬性  

7.7 __setProperty函數-總結

1. __setProperty作用
2. 如何查看Jmeter已有的屬性

7.8 需求

如何獲取__setProperty設置的屬性,作爲指定查詢的dep_id?

8. __property函數

作用:獲取Jmeter中屬性值

8.1 解決方案分析

1. 選中案例5中測試計劃-獨立運行每個線程組選項
2. 基於案例5中測試計劃->線程組(線程組-讀取depid屬性)
3. 線程組(線程組-讀取depid屬性)->HTTP請求(HTTP請求-讀取depid屬性)
4. 函數助手對話框-__property函數  

8.2 實施難點分析

1. __property函數參數設置

8.3 __property函數配置圖

__property函數

1. Name of variable in which to store the result (optional):獲取屬性的名稱

8.4 __property函數-總結

1. __property作用

9. 常用函數-總結

1. __CSVRead
2. __counter 
3. __Random
4. __time
5. __setProperty
6. __property
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章