jmeter(三)參數化
參數化:錄制腳本中有登錄操作,需要輸入用戶名和密碼,假如系統不允許相同的用戶名和密碼同時登錄,或者想更好的模擬多個用戶來登錄系統。
這個時候就需要對用戶名和密碼進行參數化,使每個虛擬用戶都使用不同的用戶名和密碼進行訪問。
一、準備腳本,測試數據
1、寫一個腳本(可以用badboy工具錄制),在jmeter中打開,找到有用戶名和密碼的頁面。如下:
2、我們需要“參數化”的數據,用記事本寫了五個用戶名和密碼,保存為.dat格式的文件,編碼問題在使用CSV Data Set Config參數化時要求的比較嚴格,記事本另存為修改編碼UTF-8. 註意用戶名和密碼是一一對應的,中間用戶逗號(,)隔開。
我將這個文件放在了我的( C:\JmeterWorkSpace\t.dat )路徑下。
二、參數化
這裏介紹兩種參數化的方式:函數助手,CSV Data Set Config。
1、借助函數助手的方式
a、點擊菜單欄“選項”---->函數助手對話框,看下圖: CSV文件列號是從0開始的,第一列0、第二列1、第三列2、依次類推。。
b、復制生成的參數化函數,打開登陸請求頁面,在右則的參數化中找到我們要參數化的字段,這裏對用戶名和密碼做參數化,第一列是用戶名,列號為0;第二列是密碼,列號為1;修改函數中對應的參數化字段列號就可以啦。
好了,現在我們的參數化設置完成,在腳本的時候,會調用我們C:\JmeterWorkSpace盤下面的t.dat文件,第一列是用戶,第二列是密碼。
2、借助jmeter中的配置元件(CSV Data Set Config)
a、選中線程組,點擊右鍵,添加-配置元件-CSV Data Set Config
說明:
Filename --- 參數項文件
File Encoding --- 文件的編碼,設置為UTF-8
Vaiable Names --- 文件中各列所表示的參數項;各參數項之間利用逗號分隔;參數項的名稱應該與HTTP Request中的參數項一致。
Delimiter --- 如文件中使用的是逗號分隔,則填寫逗號;如使用的是TAB,則填寫\t;(如果此文本文件為CSV格式的,默認用英文逗號分隔)
Recycle on EOF? --- True=當讀取文件到結尾時,再重頭讀取文件
False=當讀取文件到結尾時,停止讀取文件
Stop thread on EOF? --- 當Recycle on EOF為False時,當讀取文件到結尾時,停止進程,當Recycle on EOF為True時,此項無意義
備註說明:這裏我用通俗的語言大概講一下Recycle on EOF與Stop thread on EOF結果的關聯
Recycle on EOF :到了文件尾處,是否循環讀取參數,選項:true和false
Stop thread on EOF:到了文件尾處,是否停止線程,選項:true和false
當Recycle on EOF 選擇true時,Stop thread on EOF選擇true和false無任何意義,通俗的講,在前面控制了不停的循環讀取,後面再來讓stop或run沒有任何意義
當Recycle on EOF 選擇flase時,Stop thread on EOF選擇true,線程4個,參數3個,那麽只會請求3次
當Recycle on EOF 選擇flase時,Stop thread on EOF選擇flase,線程4個,參數3個,那麽會請求4次,但第4次沒有參數可取,不讓循環,所以第4次請求錯誤
事例下載:demo
b、使用剛才定義好的變量
至此,兩種參數化的方法就介紹完了。
需要說明一下:函數助手方法要比CSV控件方法參數化功能要弱,推薦使用CSV控件方法。
再看看與loadrunner參數化不一樣的:
1、 jmeter參數文件的第一行沒有列名稱
2、 這裏要註意的是參數文件的編碼,可以使用記事本另存為就可以修改該編碼(編碼問題在使用CSV Data Set Config參數化時要求的比較嚴格)
3、 Jmeter的參數化設置沒有LoadRunner做的出色,它是依賴於線程設置的(只有CSV Data Set Config參數化方法才有)
jmeter(三)參數化