性能測試--Jmeter隨機生成/隨機選取/csv讀取關鍵字


Jmeter隨機生成/隨機選取/csv讀取關鍵字

一、隨機生成關鍵字

隨機生成關鍵字,需要組件:隨機變量配置元件(Random Variable)  該組件的作用是生成字符+隨機數字格式的字符串,並保存在變量中,以便后續使用  下面幾種格式的字符串都是可以通過該組件來生成的

  • 01-selenium
  • selenium-01
  • se001lenium
  • 2017

1、步驟詳情:

"""
步驟一:選擇Web Test Plan模版
1、點擊templates按鈕
2、選擇Building a Web Test Plan
3、最后點擊create,完成創建。

步驟二:修改參數
1、修改測試計划名稱為:Random Variable(隨機生成關鍵字演示)
2、修改線程組線程數為:1,ramp-up period:1, 循環次數:1。
3、修改HTTP Request Defaults的web服務器名稱修改為cn.bing.com
4、將HTTP請求中的http請求方法修改為L:get,路徑修改成:/search,然后將斷言注釋
5、刪除Page Returing 404節點

步驟三:隨機變量配置元件
1、在測試計划上點右鍵,選擇添加 -> Random Variable,將新添加的隨機變量配置元件拖拽到最上面
2、在該配置原件中Variable Name設置為number,  Output Format設置0000,Minimum Value: 2010,Maximum Value: 2020

步驟四:運行
1、新增事務控制器,將http請求都挪至事務控制器下
2、將http請求取樣器的名稱改為:search date${number}, 同請求一起發送參數中,q設置為${number},並勾選編碼checkbox
3、點擊運行按鈕(快捷鍵ctrl+r)
"""

2、效果圖:

 

二、隨機選取關鍵字

場景:隨機讓每個請求從:python類、python開發、python函數、pythonsocket、這些關鍵字中隨機選擇1個作為搜索的關鍵字呢?這種隨機選擇內容然后進行測試的場景在性能測試中是比較常見的,因為越隨機越能模擬用戶的真實行為,另外一些隨機內容也有助於繞過服務器可能存在的緩存機制,從而形成更均勻更真實的壓力

1、步驟詳情:

"""
步驟一:選擇Web Test Plan模版
1、點擊templates按鈕
2、選擇Building a Web Test Plan
3、最后點擊create,完成創建。

步驟二:修改參數
1、修改測試計划名稱為:Random Variable(隨機生成關鍵字演示)
2、修改線程組線程數為:1,ramp-up period:1, 循環次數:1。
3、修改HTTP Request Defaults的web服務器名稱修改為cn.bing.com
4、將HTTP請求中的http請求方法修改為L:get,路徑修改成:/search,然后將斷言注釋
5、刪除Page Returing 404節點

步驟三:添加用戶定義變量配置元件
1、在測試計划上點右鍵,選擇添加 -> 用戶定義變量,將新添加的配置元件拖拽到最上面
2、在該配置原件中通過key-value的方式定義變量:如key1:爬蟲,key2:函數,key3:類


步驟四:運行
1、新增事務控制器,將http請求都挪至事務控制器下
2、將http請求取樣器的名稱改為:search python${__V(key${__Random(1, 6)})}, 同請求一起發送參數中,q設置為python${__V(key${__Random(1, 6)})},並勾選編碼checkbox,或者將http請求取樣器的名稱改為:search  python${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}, 同請求一起發送參數中,q設置為python${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)},並勾選編碼checkbox
3、點擊運行按鈕(快捷鍵ctrl+r)
"""

2、效果圖:

3、PS:

"""
函數${__V(key${__Random(1, 6)})}解釋:

1、${__Random(1, 6)}:隨機生成1-6之間的整數
2、key${__Random(1, 6)}:隨機生成key1, key2, key3 ....key6中的任意1個字符串
3、${__V(key${__Random(1, 3)})}對形如key1的字符串求值。也就是不把key1當成字符串來看,而是把key1當作是1個變量,並獲取這個變量的值。key1的值是我們在用戶自定義變量中定義過的,也就是將剛剛從用戶定義的變量值取出來
4、python${__V(key${__Random(1, 3)})}就是隨機組合生成:python類、python函數、python基礎中的任意一個字符串




函數${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}解釋:

1、${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}:這個函數用法比上面的簡單,直接從key1,key2....key6中,任意取一個key的值出來
2、python${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}就是隨機組合生成:python類、python函數、python基礎中的任意一個字符串
"""

  

 

三、csv讀取關鍵字

由於隨機數的生成的時候會耗cpu和內存,當腳本並發很大的時候,這種損耗是值得關注的,所以這個時候變量的獲取從csv文件中讀取更適合,實現這個讀取csv的配置元件叫做:CSV Data Set Config,下面是CSV Data Set Config的常用配置項:

  • Filename(文件名): 支持相對和絕對路徑。相對路徑是以腳本保存的路徑為當前的相對路徑的
  • Variable Name(變量名): 有多少列數據我們就設置多少個變量,以逗號分隔。如果這一項為空,jemter會去解析csv文件的header,也就是說,如果你的csv文件是有表頭的,那么你可以不設置變量名,jmeter會自動將表頭的名稱解析成變量名
  • Allow quoted data?: 如果你的csv文件的內容里包含了分隔符,默認的分隔符是逗號,那么把這項勾選一下,用雙引號將值括起來就可以了
  • Sharing mode: 這個比較難理解,我們可以簡單的認為這個選項就是配置jmeter怎么打開csv文件的
  1. All threads: 所有的虛擬用戶都使用同一個csv文件
  2. Current thread group: 每個線程組使用一個csv文件
  3. Current thread: 每個線程(虛擬用戶)使用一個csv文件
  4. Identifier: 自定義

 

1、新建一個keyword.csv文件,里面存放如下關鍵字:

python  os,python sys
python random,python socket

2、步驟詳情:

"""
步驟一:選擇Web Test Plan模版
1、點擊templates按鈕
2、選擇Building a Web Test Plan
3、最后點擊create,完成創建。
 
步驟二:修改參數
1、修改測試計划名稱為:Random Variable(隨機生成關鍵字演示)
2、修改線程組線程數為:1,ramp-up period:1, 循環次數:2。
3、修改HTTP Request Defaults的web服務器名稱修改為cn.bing.com
4、將HTTP請求中的http請求方法修改為L:get,路徑修改成:/search,然后將斷言注釋
5、刪除Page Returing 404節點
 
步驟三:添加CSV Data Set Config配置元件
1、在測試計划上點右鍵,選擇添加 ->  CSV Data Set Config,將新添加的 CSV Data Set Config配置元件拖拽到最上面
2、在該配置原件中在Fliename輸入框中輸入創建的keyword.csv文件路徑,Variable Names輸入框中添加兩個值(變量名): keyword1,keyword2
 
 
步驟四:運行
1、新增事務控制器,將http請求都挪至事務控制器下
2、將http請求取樣器1的名稱改為:search ${keyword1}, 同請求一起發送參數中,q設置為${keyword1},並勾選編碼checkbox,將http請求取樣器2的名稱改為:search ${keyword2}, 同請求一起發送參數中,q設置為${keyword2},並勾選編碼checkbox
3、點擊運行按鈕(快捷鍵ctrl+r)
"""

3、效果圖:

4、執行順序

將線程組的循環次數改為1,執行腳本,會發現取值是第一行的csv數據

python  os	   python sys

將線程組的循環次數改為2,執行腳本,會發現取值是第一行和第二行的csv數據

python  os	python sys
python random	python socket 

將線程組的循環次數改為3,執行腳本

python  os	python sys
python random	python socket 
python  os	python sys

這里就能很容易的看出,每次循環時jmeter會讀一行csv文件的內容了。另外由於在CSV Data Set Config中默認選擇了Recycle on EOF,當jemter讀到文件結束的時候,jmeter會自動回到第1行再去讀,這就是為什么循環3次的時候,第三次搜索的內容跟第一次是一樣的了

 


免責聲明!

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



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