Jmeter對數據庫批量增刪改查


本文主要的內容是使用Jmeter對數據庫進行數據的操作,包括單條語句的增刪改查,多條語句的增刪改查,本文主要介紹操作流程,關於流程的運作原理,對原理感興趣的同學可自行查閱資料。

首先需要准備一個數據庫驅動Jar包【mysql-connector-java-bin.jar】可以直接百度下載,版本不建議特別低,jar包需要Jmeter引用才能使用,jar包引用如下:

將jar放入Jmeter安裝/解壓文件路徑:eg:D:\apache-jmeter-5.0\apache-jmeter-5.0\lib下,需要重啟Jmeter才能生效

驅動包的作用:沒有數據庫驅動,就不能連接數據庫,Jmeter在沒有驅動的情況下鏈接數據庫會報:no suitable jdbc driver 錯誤。

以下是常見的數據庫驅動:

 

 

圖一

漢化Jmeter:打開JMeter解壓/安裝路徑下的文件JMeter.properties,在#language=en下面添加:language=zh_CN保存文件,並重啟JMeter。

一:主要配置元件介紹(以下為增刪改查操作的共有元件)

如圖主要元件如下:

 

 

1、  添加測試計划:各個值直接默認就好,為空的地方也不用填

2、添加線程組:各個值默認,為空的地方也不用填

3、添加JDBC配置文件(JDBC Connection Configuration):

重要字段介紹

名稱:設置的是該元件的名稱,設置名稱后【測試計划】樹配置元件也會對應更改

Variable Name Bound to Pool:數據庫連接池的名稱。可以有多個jdbc connection configuration ,每個可以起不同的名稱,在Jmeter其他元件中只要需要用到數據庫的連接信息,直接引用該變量的變量名即可。可以理解為如果Jmeter其他的元件要獲取數據庫的連接信息,可以通過這個名稱進行獲取。

注意:變量的命名規范:命名要清晰,建議使用英文,便於引用。

Connection Pool Configuration 、 Connection Validation by Pool 這兩部分內容不需要更改,使用默認值即可

Database Connection Configuration(以MySQL數據庫為例):

Database URL: jdbc:mysql://host[:port]/dbname ——>【數據庫地址:jdbc:mysql://數據庫主機名或IP地址:端口號/需要使用的庫名】

JDBC Driver class:com.mysql.jdbc.Driver【其他數據庫跟進圖一展示進行選擇】

Username:數據庫名稱,即用戶名

Password:數據庫鏈接密碼

 

 

4、添加配JDBC Request 數據庫請求

重要字段解釋:

名稱:同JDBC配置文件

Variable Name Bound to Pool :引用JDBC Connection Configuration元件里面的參數值【test】寫法兩邊保持一致即可,不需要使用${}進行引用。錯誤的不存在的參數不能被引用。

Query type:必填,指SQL請求類型

Select statement:查詢語句類型(select),只支持一條查詢語句,多條查詢語句只執行第一條

Update statement:更新語句類(insert,update,delete),只支持一條更新語句,多條更新語句只執行第一條

Prepared Select statement:支持多條查詢(select)語句,查詢響應數據只展示第一條SQL的查詢結果

Prepared Update statement:支持多條更新(insert,update,delete)語句,響應數據展示多條更新提示

Callable Statement:支持多條查詢、更新(insert,update,delete,select)語句,響應數據展示展示多條數據更新結果。如果是多條select語句同時查詢,建議使用Callable Statement,響應數據可以展示多條查詢結果值

Parameter values:填寫參數的具體的值,或者參數的名稱。可以利用此字段對SQL語句進行參數化

Parameter types:指Parameter Values參數的數據類型,例如:integer,String,double類型

Parameter values 和Parameter types:必須成對出現,且SQL語句中有多個參數,就必須有多少個parameter values 和Parameter types。

Variable names:自己設置的變量名稱,用於存放select操作返回的查詢結果。有多個字段返回時,需用逗號隔開

Result variable name:用於存放select操作返回的查詢結果集

Query timeout:查詢超時時間

Handle result set:定義如何處理由callable statements 語句返回的結果

 

5、添加察看結果樹

在響應數據——Response Body :查看對數據庫進行增刪改查后的返回消息

6、測試表名city,表結構如下:

CREATE TABLE `city` (

  `id` bigint(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(100) NOT NULL,

  `code` varchar(255) NOT NULL,

  `province_code` varchar(255) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=405 DEFAULT CHARSET=utf8;

 

二:共有元件數據配置如下

        

 

1、  添加測試計划:頁面數據顯示默認數值即可無需更改

 

 

2、  添加線程組:頁面數據顯示默認數值即可無需更改

 

 

3、添加配置元件——JDBC Connection Configuration數據庫連接配置元件

Variable Name Bound to Pool:test

Connection Pool Configuration 、 Connection Validation by Pool:默認值

Database Connection Configuration(以MySQL數據庫為例):

Database URL: jdbc:mysql://ip:3306/庫名?characterEncoding=UTF-8&allowMultiQueries=true

JDBC Driver class:com.mysql.jdbc.Driver

Username:hjphXXX

Password:XXXXX

注意:

A.【allowMultiQueries設置為true,就可執行多條sql語句,參數與參數之間連接需要使用“&”符號。使用場景:如果執行多條SQL語句就必須要加這個字段,否則會報錯;執行一條SQL語句可以不用加這個字段】

B.【characterEncoding=UTF-8:鏈接的數據庫的編碼格式,沒有設置該字段,將不會轉譯中文字符】

 

 

4、  添加取樣器——JDBC Request

Variable Name Bound to Pool :test

Query type:根據不同的SQL類型進行設置

其他字段根據實際情況進行填寫

5、  添加察看結果樹

請求為綠色表示執行成功,響應數據顯示1 updates 即為一條更新數據執行成功

 

 

                   請求為紅色表示執行失敗,根據提示修改自己配置的數據,SQL直到成功

 

 

三:執行增刪改查操作

1、  單個insert語句操作

共有元件及字段不變

變更:JDBC Request—Query Type配置:Update Statement

SQL:insert into city (name,code,province_code) values ("北京市","500000","520000");

 

 

執行結果:

 

2、多個inset語句操作

共有元件及字段不變

變更:JDBC Request—Query Type配置:Prepared Update Statement

         SQL:

insert into city (name,code,province_code) values ("城市1","510000","512023");

insert into city (name,code,province_code) values ("城市2","510000","512023");

insert into city (name,code,province_code) values ("城市3","510000","512023");

 

 

 

查看執行結果:三條數據更新成功

 

3、單個Delete語句操作

共有元件及字段不變

變更:JDBC Request—Query Type配置:Update Statement

SQL1:delete from city where id=394;

 

執行結果:

 

 

4、  多個delete語句操作

共有元件及字段不變

變更:JDBC Request—Query Type配置:Prepared Update Statement

方法一:利用where語句

SQL1:delete from city where id in (388,399,320);  可以實現批量刪除

SQL2:delete from city where id > 381; 可以實現批量刪除

方法二:利用like 語句

SQL:delete from city where name like "%五家%";

方法三:利用 between and 語句

SQL:delete from city where id between 385 and 390;

方法四:執行多條SQL語句

delete from city where id =358;

delete from city where id =342;

delete from city where id =210;

delete from city where id =350;

         執行即可

5、  Update 操作

Update 的操作和Delete的操作是一樣,所有的配置以及配置的值都與Delete相同,只是SQL不同

SQL1:update city set name ="測試city" where ID = 381;

 

 

執行即可

 

6、  單個select 操作

共有元件及字段不變

變更:JDBC Request—Query Type配置:Select Statement

SQL1:select * from city where id >358;

SQL2:select * from city where id = 342;

 

7、多條SQL語句同時查詢

共有元件及字段不變

變更:JDBC Request—Query Type配置:Callable Statement

方法一:SQL:

select * from city where id = 358;

select * from city where id = 342;

 

執行結果:在此場景下Callable Statemen會顯示多條查詢結果如下圖,而Prepared Select Statement值顯示一條查詢結果

 

方法二:Select查詢簡單參數化

JDBC Request配置:

Query Type:Callable Statement

         Parameter value:410,411

         Parameter types:integer,integer

select * from city where id = ?;

select * from city where id = ?;

第一個問號代表:第一個參數值

第二個問號代表:第二個參數值

 

執行結果:

 

 

方法三:CSV進行多條select語句查詢

使用場景:同一類型的數據,需要查詢多條

SQL1:select * from city where id = ? ;

配置文件數據展示如下:

 

每一個配置文件設置如下:

線程組:

 

JDBC Connection Configuration:

 

循環控制器:

 

CSV 數據文件設置:

 

引用的CSV文件:

 

JDBC Request:

 

執行結果:

 

以上部分就是關於Jmeter對數據庫增刪改查操作的具體方法,Jmeter對數據庫的操作靈活多變,方法較多,並沒有統一的方法,達到最終的目的即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM