用Jmeter測試時(shí)包含兩種情況的參數(shù),,一種是在url中,,一種是請求中需要發(fā)送的參數(shù)。 URL中的參數(shù),,如:http://blog./index.php/2010/06/01/jmeter參數(shù)/,其中“2010/06/01/jmeter參數(shù)”為url參數(shù),。 請求中的參數(shù),此處只能舉例get請求,,如:http://blog./?category=Web,,其中“category”是參數(shù)名,“Web”是它的值,。 對于post請求,,用jmeter錄制后,可以在請求的“同請求一起發(fā)送參數(shù)”和“同請求一起發(fā)送文件”中找到,。 參數(shù)化Jmeter腳本時(shí),,使用參數(shù)的地方書寫格式為${參數(shù)名} 對于URL“http://blog./index.php/2010/06/01/jmeter參數(shù)/”,在Jmeter的http請求中blog.填寫在“服務(wù)器名稱或IP”中;/index.php/${url_parameter}/填寫在“路徑”中,。 對于請求中的參數(shù)http://blog./?category=Web,,在Jmeter的http請求中blog.填寫在“服務(wù)器名稱或IP”中;/填寫在“路徑”中;參數(shù)名稱category填寫在“同請求一起發(fā)送參數(shù)”的“名稱”中,,參數(shù)值${category_name}填寫在對應(yīng)的“值”中,。 設(shè)置參數(shù)值的方法有如下幾種: 1. 用Jmeter中的函數(shù)獲取參數(shù)值,__Random,,__threadNum,,__CSVRead,__StringFromFile,,具體調(diào)用方法如下: ${__Random(,,)},,${__threadNum},${__CSVRead(,)},,${__StringFromFile(,,,)},。 參看Jmeter函數(shù)的使用,,通過菜單“選項(xiàng)”->“函數(shù)助手對話框”,即可在“函數(shù)助手”彈出框上找到Jmeter的函數(shù)。 其中${__Random(,,)}方法的第一個(gè)參數(shù)為隨機(jī)數(shù)的下限,,第二個(gè)參數(shù)為隨機(jī)數(shù)的上限,,第三個(gè)參數(shù)為儲(chǔ)存隨機(jī)數(shù)的變量名,;${__CSVRead(,)}方法中第一個(gè)參數(shù)是文件名,,第二個(gè)參數(shù)是文件中的列(列數(shù)從0開始);${__StringFromFile(,,,)}方法中第一個(gè)參數(shù)是文件名,,${__StringFromFile(,,,)}方法中沒有指定讀取文件中的哪一列的參數(shù),,所以${__StringFromFile(,,,)}只能讀取包含一列的文件。 2.用戶定義的變量 2.1 添加“配置元件”->“用戶定義的變量” 2.2 “名稱”中輸入變量名稱,此處以登錄為例,,定義兩個(gè)變量username和password,。“值”中可以直接輸入值,,也可以通過Jmeter的函數(shù)__CSVRead,,__StringFromFile從csv或dat文件中讀取,還可以通過前綴加隨機(jī)數(shù)的方法設(shè)置參數(shù),。 當(dāng)參數(shù)值是某個(gè)前綴加一個(gè)數(shù)字時(shí),,可以用前綴名加${__Random(,,)}或${__threadNum}的方法設(shè)置參數(shù)值。如進(jìn)行登錄測試之前,,先準(zhǔn)備了用戶名為perf_0到perf_1000的用戶,,那么用戶名就可以設(shè)為perf_{__Random(0,1000,)}。 當(dāng)參數(shù)值沒有規(guī)律的且量不太大時(shí),,可以通過${__CSVRead(,)},,${__StringFromFile(,,,)}從文件中讀取,如將用戶名和密碼保存在user.csv文件中,,user.csv的內(nèi)容如下: oriana,123456 admin,admin dandan,123456 因?yàn)閡ser.csv文件中有兩列數(shù)據(jù),,所以只能用${__CSVRead(,)}函數(shù),username參數(shù)后的值設(shè)為${__CSVRead(user.csv,0)},,password參數(shù)后的值設(shè)為${__CSVRead(user.csv,1)},。 3. 從csv文件中讀取 當(dāng)參數(shù)的值沒有規(guī)律且量不太大時(shí),可以用這種方法,。 具體做法如下: 3.1 創(chuàng)建一個(gè)csv文件,,內(nèi)容為參數(shù)的值集,每一個(gè)參數(shù)占一列,,第一行就開始寫參數(shù)值,,不要寫參數(shù)名 3.2 在測試計(jì)劃或線程組中添加一個(gè)“配置元件”->“CSV Data Set Config” 3.3 Filename中填寫步驟2.1中csv文件的完整路徑(當(dāng)csv文件在bin目錄下時(shí),只需給出文件名即可) 3.4 Virable Names中填寫變量名,,如果csv文件中有多個(gè)變量,,則用逗號隔開 4.從數(shù)據(jù)庫中獲取 當(dāng)參數(shù)的值沒有規(guī)律且量比較大時(shí),,可以選用這種方法,。 具體做法如下: 4.1 下載MySQL JDBC “http://dev./get/Downloa ... st.ac.jp/pub/mysql/” 4.2 解壓下載的zip包后,將其中的mysql-connector-java-5.1.12-bin.jar放到Jmeter的lib目錄下 4.3 添加“配置元件”->“JDBC Connection Configuration”,,設(shè)置下列參數(shù): Database URL:jdbc:mysql://host:port/db(如jdbc:mysql://localhost:3306/testlink JDBC Driver class:com.mysql.jdbc.Driver username:連接數(shù)據(jù)庫的用戶名(如root) password:連接數(shù)據(jù)庫的密碼 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請求中添加“后置處理器”->“正則表達(dá)式提取器”,,以提取3.4中的用戶名和密碼為例設(shè)置正則表達(dá)式提取器的參數(shù): 引用名稱:user 正則表達(dá)式:username:’(.+?)’\{password:’(.+?)’ 模板:$1$$2$ 使用時(shí),,user_g1即為用戶名,user_g2即為對應(yīng)用戶名的密碼;更多正則表達(dá)式提取方法參見Jmeter正則表達(dá)式提取器 5.用正則表達(dá)式從前面請求的響應(yīng)數(shù)據(jù)中提取,,具體操作見Jmeter正則表達(dá)式提取器 |
|