jmeter調試腳本之變量參數化

前言

對於參數化,覺得用得最多的應該是csvread函數、csv data config以及用戶自定義變量(前一篇文章已經進行了講解)控制器這幾個

案例:bugfree ,提交bug,參數bug名稱和創建人

方法一、依賴Jmeter自帶的函數助手

選項-->函數助手對話框,即可打開函數助手彈窗

比如使用函數__CSVRead

  先準備txt文件,可以先在notepad++裏準備好數據,保存的時候格式選擇txt格式;

  

  輸入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)}

對應的參數修改完後,執行腳本,在查看結果樹中,查看運行結果

方法二、CSV Data Set Config

選中取樣器,右鍵:添加-配置元件-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,則不同虛擬用戶或循環固定讀取某行數據。

發佈了14 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章