Jmeter核心知識點之參數化

一、參數化

1.參數化的目的
解釋:當使用jmeter進行測試時,測試數據的準備是一項重要的工作。若要求每次迭代的數據不一樣時,則需要進行參數化,然後從參數化的文件中來讀取測試數據(測試的數據量比較大時,不可能手動修改每個值,必須要動態來獲取數據,所以要進行參數化的處理)

2.參數化的定義
是自動化測試腳本的一種常用技巧,可將腳本中的某些輸入使用參數來代替,在腳本運行時指定參數的取值範圍和規則。

例如登錄時利用GET/POST請求方式傳遞參數的場景.
腳本在運行時,根據需要選取不同的參數值作爲輸入,該方式稱爲數據驅動測試(Data Driven Test),而參數的取值範圍被稱爲數據池(Data Pool)。

3.參數化的四種方式以及使用場景的對比

參數化 使用場景
CSV Data Set Config 適用於參數取值範圍較大的時候使用,該方法具有更大的靈活性
User Parameters 適用於參數取值範圍很小的時候使用
User Defined Variables 一般用於Test Plan中不需要隨請求迭代的參數設置,如:Host、Port Number
函數助手 可作爲其他參數化方式的補充項,如:隨機數生成的函數${__Random(,)}

二、參數化逐個使用的介紹

1. CSV Data Set Config
概念:一種從外部讀取數據功能的組件
1.1 實施方案分析

1. 基於測試計劃->線程組
2. 基於線程組->配置元件->CSV Data Set Config
3. 基於線程組->Sampler->HTTP請求
4. 基於測試計劃->HTTP信息頭管理器
5. 基於測試計劃->監聽器->察看結果樹

2.2 組件要點分析

1. 線程組:循環次數10
2. CSV Data Set Config 讀取變量配置
3. HTTP請求:Body Data填寫(JSON報文) 方法(POST)
4. 參數化引用格式:${參數名} 如:${dep_id}
5. HTTP信息頭管理器:Content-Type:application/json;charset=utf-8

2.3 參數配置圖
在這裏插入圖片描述

1. Filename:文件路徑+文件名+後綴名    如:d:/a.txt;
2. File Encoding:文件編譯字符編碼,一般設置utf-8;
3. Vaiable Names:讀取參數後保存的變量名稱;
4. Delimiter:如文件中使用的是逗號分隔,則填寫逗號;如使用的是TAB,則填寫\t;
5. Allow quoted data: 是否允許引用數據,默認false,選項選爲“true”的時候對全角字符的處理出現亂碼 ;
6. Recycle on EOF?:是否循環讀取參數文件內容;True是循環讀取; False時,讀取文件末尾就不在繼續讀取.
7. Stop thread on EOF?:當Recycle on EOF爲False時(讀取文件到結尾),停止進程,當Recycle on EOF爲True時,此項無意義;
8. Sharing mode:共享模式,即參數文件的作用域.

2.4 添加http信息頭管理器並進行參數配置
作用: 服務器請求的數據格式.

添加http

參數配置:

1. Content-Type:指定請求信息格式-類型名稱
2. application/json:指定請求信息爲-JSON格式
3. charset=utf-8:字符編碼

2.5 添加http請求

在這裏插入圖片描述
2.6 總結

1. CSV Data Set Config 配置參數設置
2. 參數化引用格式
3. HTTP請求
4. HTTP信息頭管理器作用與設置

3. 用戶定義變量
用戶可根據需求自定義相應的變量,一般做全局變量使用。

分析:     
    1. 通過概念我們知道,【用戶定義的變量】一般做全局變量使用,不適合參數需求量大時的選擇
    2. 所以在這裏我們不在使用,用戶定義的變量去做我們學院新增時的解決方案
    3. 主要講解下它做參數化時的使用步驟和方式

3.1 需求場景

1. 查詢學院-指定:http://127.0.0.1:8000/api/departments/T02/ 
2. 接口查詢指定的id(T02)採用參數動態獲取方式

3.2 解決方案分

1. 參數化組件:用戶定義的變量 (測試計劃->線程組->配置元件->用戶定義的變量)
2. 線程組 
3. 請求組件:HTTP請求 
4. 查看結果組件:察看結果樹

3.3 效果圖
在這裏插入圖片描述

1. 名稱:變量名稱(參數化引用時使用)
2. 值:變量的值(通過引用變量名稱獲取的值)
3. Description:備註說明

3.4 總結:

1. 一般做設置全局變量
2. 請求時附帶少量參數需求使用

4. 用戶參數
一種參數設置方式,用戶可設置參數名稱以及參數值;

我們使用用戶參數作爲參數化方式對學院新增10條記錄問題進行實現

4.1 解決方案實施分析
1. 位置:測試計劃–>線程組–>前置處理器–>用戶參數
2. 其他組件和CSV Data Set Config實現新增10個學院相同,去除 CSV Data Set Config組件

4.2 組件要點分析

1. 線程組:注意是【線程數】爲10
2. 用戶參數:學院每個屬性爲一個參數名稱;參數格式:可以是數字、字母、下劃線開頭,建議最好是實義單詞
3. HTTP請求:Body Data填寫(JSON報文) 方法(POST)
4. 參數化引用格式:${參數名} 如:${dep_id}
5. HTTP信息頭管理器:Content-Type:application/json;charset=utf-8

4.3 用戶參數配置
在這裏插入圖片描述

1. 添加變量:學院資源屬性 (dep_id、dep_name、master_name、slogan)
2. 添加用戶:每個線程爲沒一個用戶

4.4 用戶參數-總結:

1. 用戶參數位置
2. 線程組設置
3. 引用參數化方式  
4. 用戶參數適合滿足少量參數化需求場景使用

5. 函數
函數是完成某個指定功能代碼的封裝。

1. 函數查找方式:函數助手對話框
       1) 菜單-選項->函數助手對話框
       2) Ctrl+Shift+F1
       3) 工具欄倒數第二個記事本圖標
2. 函數在Jmeter中有非常多類型(計數函數、日期函數、隨機函數...)

5.1 需求:

1. 查詢學院-所有:http://127.0.0.1:8000/api/departments/
2. 查詢10次,在每次請求地址後面增加訪問記錄數
    http://127.0.0.1:8000/api/departments/?num=1
    http://127.0.0.1:8000/api/departments/?num=2

5.2 需求關鍵點分析

1. 起個計數參數名 如:num
2. 把計數參數名的值給參數化
3. 參數化的值使用計數函數(count)

5.3 實施方案

1. 基於測試計劃添加線程組(循環次數10)
2. 基於線程組添加HTTP請求
3. 基於測試計劃添加察看結果樹

5.4 函數配置
在這裏插入圖片描述

1. 選擇一個功能:選擇_counter計數函數
2. 第一個參數:TRUE,每個用戶有自己的計數器;FALSE,使用全局計數器 我們選FALSE
3. 點擊生成
4. 選擇複製生成的函數

5.5 函數的結果圖
在這裏插入圖片描述

?num=${__counter(FALSE,)}

1. ?:問號後面一切東東,HTTP請求不做解析
2. num:爲我們起的一個計數參數名稱
3. ${__counter(FALSE,)}:爲我們粘貼進來的函數作爲值使用

5.6 函數總結:

1. 使用方便快捷
2. 經常配合固定參數使用
7. 參數化方式總結

6.1 區別

1. CSV Data Set Config: 功能強大、適應各種迭代及多參複雜場景。
2. 用戶參數:適應傳遞少量參數時使用
3. 用戶定義的變量:和用戶參數使用場景相似,不同在於一般做全局變量使用
4. 函數:功能強大,函數類型繁多,靈活度大,適應各種應用場景。

6.2 推薦

 1. CSV Data Set Config 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章