1.參數化
錄制腳本中有登錄操作,需要輸入用戶名和密碼,假如系統不允許相同的用戶名和密碼同時登錄,或者想更好的模擬多個用戶來登錄系統。
這個時候就需要對用戶名和密碼進行參數化,使每個虛擬用戶都使用不同的用戶名和密碼進行訪問。
JMeter的參數化存在兩種方式
準備工作
a)錄制一個腳本(可以用badboy工具錄制),在jmeter中打開,找到有用戶名和密碼的頁面。如下:
b)我們需要“參數化”的數據,用記事本寫了三個用戶名和密碼,保存為.txt格式文件,注意:用戶名和密碼是一一對應的,中間用戶逗號(,)隔開。
參數化的兩種方式
(1)借助函數助手的方式
a)點擊菜單欄“選項”---->函數助手對話框,看下圖: ?CSV文件列號是從0開始的,第一列0、第二列1、第三列2、依次類推
b)復制生成的參數化函數,打開登陸請求頁面,在右則的參數化中找到我們要參數化的字段,這里對用戶名和密碼做參數化,第一列是用戶名,列號為0;第二列是密碼,列號為1;修改函數中對應的參數化字段列號就可以啦
好了,現在我們的參數化設置完成,在腳本的時候,會調用我們d:\JMeter\Login.txt文件,第一列是用戶,第二列是密碼。
(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時,此項無意義
b)使用剛才定義好的變量
?
至此,兩種參數化的方法就介紹完了。
需要說明一下:函數助手方法要比CSV控件方法參數化功能要弱,推薦使用CSV控件方法。
2.斷言
JMeter也有像LR中的檢查點,本篇就來介紹下JMeter的檢查點如何去實現。
JMeter里面的檢查點通過添加斷言來完成。
上面講到,我們對用戶名和密碼進行了參數化,那么怎樣來判斷jmeter有沒有正確調用t.dat里面的文件呢。當然,我們可以從結果圖表中查看。但我還是想在“登錄”這個地方進行一下檢查。
(1)添加響應斷言,右鍵點擊我們的“登錄”頁面---->添加---->斷言---->響應斷言
(2)設置響應斷言
斷言中可以添加多個斷言一起判斷,斷言中也可以使用參數化方法,進行動態判斷。
(3)添加斷言結果,右鍵點擊我們的“登錄”頁面---->添加---->監聽器---->斷言結果
再添加一個“查看結果樹”?右鍵點擊我們的“登錄”頁面---->添加---->監聽器---->查看結果樹
在線程組中設置3個用戶,點擊運行運行。
(4)查看斷言結果
a)、成功如下圖:
b)、若斷言失敗,如下圖:
注意:一般成功只會顯示一行數據,否則會多顯示一行。至此,檢查點設置完成。
3.集合點
JMeter也有像LR中的集合點,本篇就來介紹下JMeter的集合點如何去實現。
JMeter里面的集合點通過添加定時器來完成。
注意:集合點的位置一定要在Sample之前.
簡單來理解一下,雖然我們的“性能測試”理解為“多用戶并發測試”,但真正的并發是不存在的,為了更真實的實現并發這感念,我們可以在需要壓力的地方設置集合點,拿那個用戶和密碼的地方,每到輸入用戶名和密碼登錄的地方,所有的虛擬用戶都相互之間等一等,然后,一起訪問。
(1)接著之前創建的腳本,右鍵點擊 線程組---->定時器---->Synchronizing Timer
這樣子就添加了一個“集合點”,下面來設置一下集合點,設置延遲時間(以毫秒為單位)
(2)我們添加完之后的列表是這個樣子的
發現了沒,我們集合點的位置不對,應該在登錄的前面才對。怎么弄呢?
簡單方法:拖住集合點,直接移動Synchronizing Timer至登錄的前面即可。
至此,集合點已添加完成。
?
綜上,即為JMeter的參數化、斷言、集合點的添加方法。
?