用Jmeter測試時包含兩種狀況的參數,一種是在url中,一種是請求中須要發送的參數。php
URL中的參數,如:http://blog.da-fang.com/index.php/2010/06/01/jmeter參數/,其中「2010/06/01/jmeter參數」爲url參數。
請求中的參數,此處只能舉例get請求,如:http://blog.da-fang.com/?category=Web,其中「category」是參數名,「Web」是它的值。
對於post請求,用jmeter錄製後,能夠在請求的「同請求一塊兒發送參數」和「同請求一塊兒發送文件」中找到。java
參數化Jmeter腳本時,使用參數的地方書寫格式爲$
對於URL「http://blog.da-fang.com/index.php/2010/06/01/jmeter參數/」,在Jmeter的 http請求中blog.da-fang.com填寫在「服務器名稱或IP」中;/index.php/$/填寫在「路徑」中。
對於請求中的參數http://blog.da-fang.com/?category=Web,在Jmeter的http請求中blog.da-fang.com填寫在「服務器名稱或IP」中;/填寫在「路徑」中;參數名稱category填寫在「同請求一塊兒發送參數」的「名稱」中,參數值$填寫在對應的「值」中。mysql
設置參數值的方法有以下幾種:正則表達式
1. 用Jmeter中的函數獲取參數值,__Random,__threadNum,__CSVRead,__StringFromFile,具體調用方法以下:
${__Random(,,)},$,${__CSVRead(,)},${__StringFromFile(,,,)}。
參看Jmeter函數的使用,經過菜單「選項」->「函數助手對話框」,便可在「函數助手」彈出框上找到Jmeter的函數。
其中${__Random(,,)}方法的第一個參數爲隨機數的下限,第二個參數爲隨機數的上限,第三個參數爲儲存隨機數的變量 名;${__CSVRead(,)}方法中第一個參數是文件名,第二個參數是文件中的列(列數從0開 始);${__StringFromFile(,,,)}方法中第一個參數是文件名,${__StringFromFile(,,,)}方法中沒有指定讀 取文件中的哪一列的參數,因此${__StringFromFile(,,,)}只能讀取包含一列的文件。sql
2.用戶定義的變量
2.1 添加「配置元件」->「用戶定義的變量」
2.2 「名稱」中輸入變量名稱,此處以登陸爲例,定義兩個變量username和password。「值」中能夠直接輸入值,也能夠經過Jmeter的函數 __CSVRead,__StringFromFile從csv或dat文件中讀取,還能夠經過前綴加隨機數的方法設置參數。
當參數值是某個前綴加一個數字時,能夠用前綴名加${__Random(,,)}或$的方法設置參數值。如進行登陸測試以前,先準備了用戶名爲perf_0到perf_1000的用戶,那麼用戶名就能夠設爲perf_{__Random(0,1000,)}。
當參數值沒有規律的且量不太大時,能夠經過${__CSVRead(,)},${__StringFromFile(,,,)}從文件中讀取,如將用戶名和密碼保存在user.csv文件中,user.csv的內容以下:
oriana,123456
admin,admin
dandan,123456
由於user.csv文件中有兩列數據,因此只能用${__CSVRead(,)}函數,username參數後的值設爲${__CSVRead(user.csv,0)},password參數後的值設爲${__CSVRead(user.csv,1)}。數據庫
3. 從csv文件中讀取
當參數的值沒有規律且量不太大時,能夠用這種方法。
具體作法以下:
3.1 建立一個csv文件,內容爲參數的值集,每個參數佔一列,第一行就開始寫參數值,不要寫參數名
3.2 在測試計劃或線程組中添加一個「配置元件」->「CSV Data Set Config」
3.3 Filename中填寫步驟2.1中csv文件的完整路徑(當csv文件在bin目錄下時,只需給出文件名便可)
3.4 Virable Names中填寫變量名,若是csv文件中有多個變量,則用逗號隔開
4.從數據庫中獲取
當參數的值沒有規律且量比較大時,能夠選用這種方法。
具體作法以下:
4.1 下載MySQL JDBC 「http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.12.zip/from/http://ftp.jaist.ac.jp/pub/mysql/」
4.2 解壓下載的zip包後,將其中的mysql-connector-java-5.1.12-bin.jar放到Jmeter的lib目錄下
4.3 添加「配置元件」->「JDBC Connection Configuration」,設置下列參數:
Database URL:jdbc:mysql://host:port/db(如jdbc:mysql://localhost:3306/testlink
JDBC Driver class:com.mysql.jdbc.Driver
username:鏈接數據庫的用戶名(如root)
password:鏈接數據庫的密碼
4.4 添加「Sampler」->「JDBC Request」,在SQL Query中輸入查詢語句,以下:
SELECT CONCAT (「[",
GROUP_CONCAT(
CONCAT("{username:'",login,"'"),
CONCAT("{password:'",password),"'}"),"]「) AS json FROM users
4.5 在4.4中的JDBC請求中添加「後置處理器」->「正則表達式提取器」,以提取3.4中的用戶名和密碼爲例設置正則表達式提取器的參數:
引用名稱:user
正則表達式:username:’(.+?)’\{password:’(.+?)’
模板:$1$$2$
使用時,user_g1即爲用戶名,user_g2即爲對應用戶名的密碼;更多正則表達式提取方法參見Jmeter正則表達式提取器json
5.用正則表達式從前面請求的響應數據中提取,具體操做見Jmeter正則表達式提取器服務器