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

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
