jmeter測試數據庫服務--JDBC Request

一、jmeter測試數據庫基本步驟:以MySQL爲例

1、需將mysql-connector-java-X.X.X-bin.jar放入到jmeter安裝目錄下的./lib目錄,重啓jmeter

2、配置JDBC Connection Configuration

其中:

Database URL爲數據庫的JDBC連接字符串

JDBC Driver class 爲驅動類名稱,需將對應jar包放入到jmeter's/lib目錄下

Username :數據庫用戶名

Password:數據庫賬號對應的密碼

以下是各數據庫Database URL、JDBC Driver class 填寫方式

數據庫名 Database URL  Driver class
MySQL jdbc:mysql://host[:port]/dbname com.mysql.jdbc.Driver
PostgreSQL jdbc:postgresql:{dbname} org.postgresql.Driver
Oracle jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid}))) oracle.jdbc.OracleDriver
Ingress (2006) jdbc:ingres://host:port/db[;attr=value] ingres.jdbc.IngresDriver
Microsoft SQL Server (MS JDBC driver) jdbc:sqlserver://host:port;DatabaseName=dbname com.microsoft.sqlserver.jdbc.SQLServerDriver
Apache Derby jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]] org.apache.derby.jdbc.ClientDriver

 3、配置JDBC Request

二、JDBC Request 中各參數含義及其使用例子

1、JDBC Request面板中各參數含義

Query Type:根據不同的使用場景設置SQL的語句類型,如:Select Statement用於查詢,Update Statement則可用於更新和刪除記錄、Prepared Select Statement則爲帶參數的select 語句的查詢

Parameter values:參數的值,對應SQl中?的值,如有多個值,使用逗號分隔。若值爲NULL則使用 “]NULL[” 。結合Query Type爲Prepared Select Statement、Prepared Update Statement 來使用

Parameter types:Parameter values中參數值對應的類型,e.g. INTEGER, DATE, VARCHAR, DOUBLE,如有多個值,使用逗號分隔。

Variable names:變量名稱,用於保存Select statements, Prepared Select Statements or CallableStatement 等查詢語句返回的值,如返回多個值使用逗號分隔。

Result variable name:官網解釋:If specified, this will create an Object variable containing a list of row maps. Each map contains the column name as the key and the column data as the value。Usage:

columnValue = vars.getObject("resultObject").get(0).get("Column Name");

2、例子

以下例子共同使用到的內容

a、本地存在數據庫course,其下有一張數據表user,如下:

b、所有例子中JDBC Connection Configuration配置如下:

例子1)保存查詢語句中返回的結果

在JDBC Request 的執行語句中輸入:select userName,age  from user  ,Variable names輸入 p1,p2,p1,p2分別對應SQL中的userName,age。

執行結果如下:

可以看到Debug Sampler中的響應

p1_#=5,p2_#=5爲行數
p1_1=test1  表示查詢結果第1行第1列
p1_2=test2 表示查詢結果第1行第2列
..............

p2_1=20 表示查詢結果第2行第1列
p2_2=20 表示查詢結果第2行第2列
..............

例子2)給執行的SQL傳入變量:

場景:查詢20歲的用戶信息

方法:在JDBC Request 的執行類型選擇:Prepared Select Statement,

Query爲:select userName,age  from user where age=?  【注:其中?代表佔位符】

Parameter values 輸入20

Parameter type輸入varchar

如下:

執行結果:在查看結果樹中可以看到搜索到20歲的用戶信息

例子3)往數據庫表user插入多條數據(這裏插入5條數據爲例)

創建測試計劃,具體使用到的組件如下:

a、在線程組中,輸入線程數爲5

b、CSV Data Set Config配置及user.csv內容如下:

c、JDBC Connection Configuration配置如下:

d、JDBC Request配置如下

 

其中Query Type選擇“Prepared Update Statement”,

Parameter values中的${__Random(20,30,)},${__RandomString(6,123456,)},${__RandomString(1,01,)},${__RandomString(1,01,)},${__RandomString(1,01,)}分別使用了函數組手中的函數來產生隨機數,用來對應數據庫表user的age、password、sex、permission、isDelete的值
而${id},${username}爲CSV Data Set Config中的變量,對應數據庫表user的id,userName的值。

執行結果如下:共有5條JDBC Request請求,每個請求往數據表user寫入一條記錄,共寫入5條數據

三、使用過程中遇到的報錯

1、Cannot load JDBC driver class 'com.mysql.jdbc.Driver'

原因:未在jmeter安裝目錄下的./lib目錄下放入mysql-connector-java-X.X.X-bin.jar

解決方法:將mysql-connector-java-X.X.X-bin.jar放入到./lib目錄,並重啓jmeter

 

2、CLIENT_PLUGIN_AUTH is required 

原因:導入的 mysql-connector-java-X.X.X-bin.jar版本問題(原來導入mysql-connector-java-8.0.17.jar),上網查資料,知驅動和mysql數據庫的版本也有關係(參考mysql-connector-java之6.0.6版本,SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required異常問題 - wenqi0501的個人空間 - OSCHINA  https://my.oschina.net/u/3640994/blog/3000068)

mysql官網驅動版本和數據庫版本說明,地址:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html

解決方法:替換成mysql-connector-java-5.1.47.jar後問題解決

 

 

參考文檔:

Apache JMeter - User's Manual: Building a Simple Database Test Plan  http://jmeter.apache.org/usermanual/build-db-test-plan.html

Apache JMeter - User's Manual: Component Reference  http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request

數據庫驅動下載參考:Java連接MySQL mysql-connector-java-bin.jar驅動包的下載與安裝 - qq_41950447的博客 - CSDN博客  https://blog.csdn.net/qq_41950447/article/details/90085170

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章