jmeter參數化方式

一.用戶定義的變量

適用於測試計劃中不須要隨迭代發生改變的參數(只取一次值的參數)設置在此處。例如,被測應用的host和port值。html

1.添加用戶定義的變量

添加-配置元件-用戶定義的變量
image.pngmysql

2.配置項

添加變量名稱和變量值正則表達式

3.使用方法

在須要使用參數位置使用${ip}替代sql

二.用戶參數

1.添加用戶參數

添加-前置處理器-用戶參數
image.png數據庫

2.配置項

1)定義參數名稱和參數值
2)每次迭代更新一次:選中該選項,則參數的值在每一個迭代中保持不變,在新的迭代開始時取下一個可用值; 若是取消取中該選項,則參數的值在每一個其做用域內的Sampler發出請求時取下一個可用值。apache

3.使用方法

在須要使用參數位置使用${prductid}替代oracle

三.CSV數據文件設置

1.添加CSV數據文件設置

添加-配置元件-CSV數據文件設置
image.pngdom

2.配置項

1) 文件名:參數文件路徑。
2) 文件編碼:視項目接收文件編碼,通常是UTF-8,可與開發確認。
3) 變量名稱(使用逗號間隔):文件中的每列參數名稱,多個使用逗號分隔。
4) 忽略首行(只在設置了變量名稱後才生效):若是文件中第一行爲參數名稱,選擇True,若是文件第一行即是參數值,選擇False。
5) 分隔符(用’\t’代替製表符):文件中每一個參數值之間使用什麼間隔,這裏就填什麼。
6) 是否容許帶引號?:若是選擇True,csv文件中有引號,則變量引用後也帶引號;若是選擇False,csv文件中有引號,可是變量實際引用後會自動去掉引號。
7) 遇到文件結束符再次循環?:若是選擇True,文件結束後繼續從頭開始循環取用數據。通常選擇True。
8) 遇到文件結束符中止線程?:若是選擇False,第一次取文件結束後不中止線程。通常選擇False。
線程共享模式:「全部線程」表示做用於全局;「當前線程組」表示只做用於該線程組;「當前線程」表示只做用於該線程。函數

3.使用方法

在請求體中引用變量,格式:${變量名}sqlserver

四.函數助手

1.添加函數助手對話框

選項-函數助手對話框
image.png

2.配置項

1)選擇一個功能:__CSVRead
2)函數參數名稱

  • CSV file to get values from | *alias:參數文件路徑
  • Column number of CSV file | next | *alias:須要獲取的數據在文件的第幾列,從0開始。

3)點擊【生成】按鈕,生成函數字符串

3.使用方法

將函數字符串複製後,粘貼到請求體中,例如
${__CSVRead(D:apache-jmeter-5.2.1binexamplesuser&pwd.txt,0)}

4.其他實例

1)函數助手對話框選擇一個功能:__Random
做用:生成一個區間的隨機數,如圖
image.png

2)函數助手對話框選擇一個功能:__RandomDate
做用:隨機生成一個範圍內的時間日期
1.jpg

3)函數助手對話框選擇一個功能:__RandomString
做用:隨機生成一個字符串
image.png

五.從數據庫中獲取數據

1.下載jar包

1)查看mysql版本
下載mysql jar包,在數據庫客戶端執行如下sql查詢
SELECT version();
2)查看jar包支持的mysql版本:http://dev.mysql.com/doc/connector-j/en/connector-j-versions.html
image.png
3)官網下載地址:
https://dev.mysql.com/downloa...
選擇「Platform independent」
image.png
4)將jar包放在jmeter安裝目錄的lib目錄下

2.添加JDBC Connection Configuration

添加-配置元件-JDBC Connection Configuration
image.png
image.png

3.配置項JDBC Connection Configuration

1)名稱:自定義
2)Variable Name Bound to Pool

* Variable Name for created pool:填入一個變量名,須要和JDBC request、JDBC PreProcessor、JDBC PostProcessor中的變量名一致。

3)Connection Pool Configuration:數據庫鏈接池的配置,通常默認便可

* Max Number of Connections:數據庫最大鏈接數
* Max Wait(ms):數據庫鏈接最長等待時長
* Time between Eviction Runs(ms):當前鏈接池中某個鏈接在該設置空閒時間後沒有被使用,將被物理關閉
* Auto Commit:自動提交。有三個選項,true、false、編輯(本身經過jmeter提供的函數設置)
* Transaction Isolation:事務間隔級別設置,主要有如下幾個選項:
    * TRANSACTION_NODE   事務節點 
    * TRANSACTION_READ_UNCOMMITTED  事務未提交讀  
    * TRANSACTION_READ_COMMITTED   事務已提交讀  
    * TRANSACTION_SERIALIZABLE   事務序列化  
    * DEFAULT  默認
    * TRANSACTION_REPEATABLE_READ 事務重複讀
    * 編輯
* Preinit Pool:

4)Init SQL Statemnets separated by new line
5)Connection Validation by pool

* Test While Idle:當空閒時測試鏈接是否斷開
* Soft Min Evictable Idle Time(ms):至少在池中保持鏈接的時長
* Validation Query:通常選擇select 1

6)database Connection Configuration

* Database URL:jdbc:mysql://mysql\_host\_ip:mysql\_port/mysql\_db\_name
* JDBC Driver class:com.mysql.jdbc.Driver
* Username:數據庫用戶名
* Password:數據庫密碼
* Connection Properties:

註釋:
MySQL
com.mysql.jdbc.Driver
jdbc:mysql://host:port/{dbname}

PostgreSQL
org.postgresql.Driver
jdbc:postgresql:{dbname}

Oracle
oracle.jdbc.OracleDriver
jdbc:oracle:thin:user/pass@//host:port/service

Ingres (2006)
com.ingres.jdbc.IngresDriver
jdbc:ingres://host:port/db[;attr=value]

MSSQL
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://IP:1433;databaseName=DBname
或者
net.sourceforge.jtds.jdbc.Driver
jdbc:jtds:sqlserver://localhost:1433/"+"library"

4.添加JDBC Request

添加-取樣器-JDBC Request
image.png

5.配置JDBC Request

1)Variable Name Bound to Pool

  • Variable Name of Pool declared in JDBC Connection Configuration:數據庫鏈接池的名稱,設置與JDBC Connection Configuration的Variable Name for created pool一致

2)SQL Query

  • Query Type:Select Statement
  • Query:填寫的sql語句
  • Parameter values:參數值
  • Parameter types:參數類型
  • Variable names:保存sql語句返回結果的變量名
  • Result variable name:建立一個對象變量,保存全部返回的結果
  • Query timeout(s):查詢超時時間
  • Limit ResultSet:
  • Handle ResultSet:定義如何處理由callable statements語句返回的結果

6.添加正則表達式

添加-後置處理器-正則表達式提取器
image.png
從接口返回體中獲取返回值,用於下一個接口的請求參數

7.配置正則表達式

1)引用名稱:在HTTP等請求中,引用此數據,須要用到的名稱。
2)正則表達式:用於將須要的數據提取出來,()裏面的內容是須要提取的,.表示匹配任何字符串,+表示匹配一次或屢次,?表示在找到第一個匹配項後中止。
3)模板:表示使用提取到的第幾個值,$-1$:表示取全部值,$0$:表示隨機取值,$1$:表示取第1個,$2$:表示取第二個,以此類推:$n$:表示取第n個。
4)匹配數字(0表明隨機):0 表明隨機取值,1 表明所有取值。
5)缺省值:若是正則表達式沒有搜找到值,則使用此缺省值,null表示爲空。

8.正則表達式使用方法

&{name_gN}表示第N括號中的內容

9.添加http請求

添加-取樣器-HTTP請求
image.png

9.添加查看結果樹

添加-監聽器-查看結果樹

執行後結果以下:

六.計數器

1.添加計數器

添加-配置元件-計數器
image.png

2.配置項

1)名稱:自定義
2)Starting value:起始值
3)遞增:每次迭代增長的值
4)Maximum value:最大值,達到最大值後,從新設置爲初始值,默認的最大值爲Long.MAX_VALUE,2^63-1(若是持續壓測,建議最好不要設置最大值)
5)數字格式:可選格式,好比000,格式化爲001,002;默認格式爲Long.toString(),可是默認格式下,仍是能夠看成數字使用。
6)引用名稱:用於控制在其它元素中引用該值,形式:$(reference_name}
7)與每用戶獨立的跟蹤計數器:全局的計數器,若是不勾選,即全局的,全部用戶統一按照計數器循環;若是勾選,即獨立的,則每一個用戶按照計數器循環。
8)每次迭代復原計數器:可選,僅勾選與每用戶獨立的跟蹤計數器時可用;若是勾選,則每次線程組迭代,都會重置計數器的值。

3.實例

1)場景設置
image.png
image.png
2)結果
image.png

image.png

image.png

image.png

相關文章
相關標籤/搜索