近日manager要求對項目進行壓力測試,開始對jmeter進行了研究。jmeter是Apache一個開源項目,可對各種項目進行測試,甚至包括junit。
測試要求如下,多用戶同時登陸web應用程序,並進行操作,查看在多用戶操作下,程序的performence。恰好,jemter下有個CSV Data Set Config,它用來設定一組參數,以便在向程序發出請求時,傳入參數。在進行壓力測試以前,應先將操作過程記錄下來。jmeter有個http prox serve,用它可以進行記錄。但有個更好的軟件,即badboy,如下圖,
只要輸入請求地址,便可將所有的操用步驟記錄下來,導出jmeter的script,jmeter導入這個sccript就是一個工程了,可以在里面對其進行修改參數和添加新的斷言,監聽器等。多用戶的參數文件就在這里設。
右鍵單擊選擇配置器,一一輸入參數文件地址(便jmeter能找到的路徑),變量名稱(參數引用時就是引用這個變量,用${變量名}進行引用,),參數分隔符(在參數文件中,參數以一行為一組參數,其間可用;,
等隔開,如是tab,用/t),recycle on EOF(文件結束后是否要循環),stop thread on EOF(文件結束是否中止線程)。一般來講,如有n組參數,線程數就設為n,如下圖,
可在操作中添加一些斷言,看參數是否用上了,比如一個登陸界面,傳入用戶名和密碼,這個請求完成后,可對response頁面內容進行斷言。
在使用Jemeter做壓力測試的時候,往往需要參數化用戶名,密碼以到達到多用戶使用不同的用戶名密碼登錄的目的.這個時候我們就可以使用CSV Data Set Config實現參數化登錄:
首先通過Test Plan或者Thread Group的Add->Config Element->CSV Data Set Config添加
以下是CSV Data Set Config各個參數的簡要說明:
- FileName:即同目錄下csv文件的名稱
- File Encoding: 默認為ANSI
- Varible Names: 定義文本文件中的參數名,參數之間逗號分隔.定義后可在腳本在以Shell變量的同樣的方式引用
- Allow Quoated data: 雙引號相關
- Recycle on EOF: 設置為True后,允許循環取值
- Stop Thread on EOF: 當Recycle on EOF為false並且Stop Thread on EOF為true,則讀完csv文件中的記錄后,停止運行
- Sharing Mode: 設置是否線程共享
設置2個線程去運行,結果如下:
成功讀取CSV中的參數.
最后,我們需知Jmeter還有如下方式可以進行參數化:
- User Defined Varibles: 一般對不需要改變的參數進行
- User Parameters:
- 通過系統函數: Options->Function Helper Dialog,通過自己輸入參數值,點擊"Generate" 按鈕產生