前言java
對於參數化,以爲用得最多的應該是csvread函數、csv data config以及用戶自定義變量(前一篇文章已經進行了講解)控制器這幾個mysql
案例:bugfree ,提交bug,參數bug名稱和建立人正則表達式
選項-->函數助手對話框,便可打開函數助手彈窗sql
好比使用函數__CSVRead數據庫
先準備txt文件,能夠先在notepad++裏準備好數據,保存的時候格式選擇txt格式;dom
輸入txt文件所在的路徑:C:\Users\Anne\Desktop\Jmeter\data.txt,輸入參數所在的列(注意:此處列數是從0開始數的,第一列是bug_name,對應的列號爲0,第二列是bug提交人,對應的列號爲1...),生成被調用的函數:${__CSVRead(C:\Users\Anne\Desktop\Jmeter\data.txt,0)}函數
在參數對應的值處填入:${__CSVRead(C:\Users\Anne\Desktop\Jmeter\data.txt,0)}測試
要區第二個參數時,對應的位置,填入:${__CSVRead(C:\Users\Anne\Desktop\Jmeter\data.txt,1)}ui
對應的參數修改完後,執行腳本,在查看結果樹中,查看運行結果編碼
選中取樣器,右鍵:添加-配置元件-CSV Data Set Config,從txt文件中讀取
Filename:csv文件所在的路徑以及名稱如:C:\Users\Anne\Desktop\Jmeter\data.txt;(其實不必定要txt文件,親測csv格式的文件也能夠)
File encoding:給出頁面的編碼方式,能夠不填寫;這裏以bugfree爲例,它的源代碼裏是utf-8 ,因此這裏是utf-8
Variable Names(comma-delimited):給出變量名如:title,build;這裏的變量名是給後面引用用的,如要用到這個文件的值,能夠利用變量名來引用:${title},${build}
Delimiter(use '\t' for Tab):這個是用來隔開變量的分隔符,如上面的title,name,那分隔符就是「,」
Allow quoted data?:是否容許引用數據
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取值時,取到的是txt文件中的下一行,即與線程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(C:\Users\Anne\Desktop\Jmeter\data.txt,0)}這個函數實現的功能大致上是同樣的。
1) 將其中的mysql-connector-java-5.1.34-bin.jar放到Jmeter的lib目錄下
2) 添加「配置元件」->「JDBC Connection Configuration」,設置下列參數:
Variable Name:鏈接池名稱
Database URL:jdbc:mysql://host:port/db(jdbc:mysql://ip地址:端口號/數據庫名稱)
JDBC Driver class:com.mysql.jdbc.Driver
username:鏈接數據庫的用戶名(如root)
password:鏈接數據庫的密碼
3) 添加「Sampler」->「JDBC Request」,在SQL Query中輸入查詢語句,以下:
select concat(domain,'+',po_pwd) as userpass from domain;
Variable Name:鏈接池名稱
注意:該值要和JDBC Connection Configuration中配置的Variable Name值對應,不然會提示:No pool found named: 'pool12', ensure Variable Name matches Variable Name of JDBC Connection Configuration;
4) 在JDBC請求中添加「後置處理器」->「正則表達式提取器」,以提取用戶名、密碼爲例,設置正則表達式提取器的參數:
引用名稱:userPass
正則表達式:(.*)\+(.*)
模板:$1$$2$
使用時,userPass_g1即爲用戶名,userPass_g2即爲對應用戶名的密碼;
注意:
(1)+在正則表達式中是關鍵字,因此須要\轉義。
(2)匹配數字,填0或不填,表示隨機讀取,若是填正整數,如1,則不一樣虛擬用戶或循環固定讀取某行數據。