在使用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" 按鈕產生
比如使用函數__CSVRead
先准備csv文件,可以先在excel文件里准備好數據,保存的時候格式選擇csv格式;
輸入csv文件所在的路徑:F:\test.csv,輸入參數所在的列(注意:此處列數是從0開始數的,第一列是用戶名,對應的列號為0,第二列是密碼,對應的列號為1...),生成被調用的函數:${__CSVRead(F:\test.csv,0)}
在參數對應的值處填入:${__CSVRead(F:\test.csv,0)}
方法二、CSV Data Set Config
選中取樣器,右鍵:添加-配置元件-CSV Data Set Config,從csv文件中讀取
Filename:csv文件所在的路徑以及名稱如:F:\test.csv ;(其實不一定要csv文件,親測txt格式的文件也可以)
File encoding:給出頁面的編碼方式,可以不填寫;這里以百度為例,它的源代碼里 ,所以這里File encoding:gb2312
Variable Names(comma-delimited):給出變量名如:name,pwd;這里的變量名是給后面引用用的,如要用到這個文件的值,可以利用變量名來引用:${name},${pwd},如test.csv文件中有這樣的數據:1@180chen.cn,abc1233,那${name}就可以引用到1@180chen.cn,${pwd}就可以引用到abc1233
Delimiter(use '\t' for Tab):這個是用來隔開變量的分隔符,如上面的name,pwd,那分隔符就是“,”
Allow quoted data?:是否允許引用數據,---這個目前還未弄明白,設置成True或者False都能正常引用數據。
Recycle on EOF?:到了文件尾是否循環,True---繼續從文件第一行開始讀取,False---不再循環
Stop thread on EOF?:到了文件尾是否停止線程,True---停止,False---不停止,注:當Recycle on EOF設置為True時,此項設置無效。
Sharing mode:共享模式,All threads---所有線程,Current thread group—當前線程組,Current thread—當前線程。這個地方和LoadRunner中的迭代取之相反,經試驗得出來的結果是:
All threads:測試計划中所有線程,假如說有線程1到線程n (n>1),線程1取了一次值后,線程2取值時,取到的是csv文件中的下一行,即與線程1取的不是同一行。
Current thread group:當前線程組,假設有線程組A、線程組B,A組內有線程A1到線程An,線程組B內有線程B1到線程Bn。取之情況是:線程A1取到了第1行,線程A2取第2行,現在B1取第1行,線程B2取第2行。
Current thread:當前線程。假設測試計划內有線程1到線程n (n>1),則線程1取了第1行,線程2也取第1行。
綜上:CSV Data Set Config實現的功能跟之前用的:${__CSVRead(F:\test.csv,0)}這個函數實現的功能大體上是一樣的。