博客 / 詳情

返回

每週讀書與學習->JMeter性能測試腳本編寫實戰(三)如何利用JMeter為MySQL數據庫構造測試數據

每週讀書與學習是由清華大學出版社出版的《JMeter核心技術、性能測試與性能分析》一書的作者推出,分享作者多年的IT從業經歷,希望對很多計算機科學技術IT類專業畢業生以及IT從業者有所幫助。

在前面的學習中,介紹了很多Jmeter的理論知識,包括Jmeter中很多不同元件的詳細介紹以及每個元件的作用,本次主要從實踐的角度來介紹怎麼用這些元件來完成常見性能測試腳本的編寫,將會介紹一些常見的性能測試腳本編寫案例。

在上一次分享中,分享了前一個請求返回的結果作為後一個請求的入參的案例,本次將分享如何利用JMeter為MySQL數據庫構造測試數據

1、如何利用JMeter為MySQL數據庫構造測試數據

在性能壓測中,經常需要構造大量的數據以在測試環境中模擬出類似生產環境中同等的數據量,以便讓性能壓測更加貼近真實的生產環境,JMeter不但是一個很好的性能測試工具,而且還可以用其來構造性能測試數據,如下示例將演示如何使用JMeter給指定的表中插入10萬條數據。

首先在MySQL數據庫中創建兩張表,其建表語句分別如下所示:

create table jmeter_test_one

(

id bigint(20) NOT NULL AUTO_INCREMENT,

user_id     varchar(11),

user_name varchar(25),

PRIMARY KEY (id)

);

create table jmeter_test_two

(

id bigint(20) NOT NULL AUTO_INCREMENT,

user_id     varchar(11),

address varchar(25),

PRIMARY KEY (id)

);

在MySQL數據據中創建成功後,如下圖所示。

MySQL數據庫服務器的配置信息如下表所示。

服務器類型

配置説明

數據庫服務器

內存:2GB

CPU:2核

部署軟件:MySQL

操作系統:CentOS 7

由於JMeter 直接連接MySQL數據庫,需要jdbc driver,所以需要先從MySQL的官網https://www.mysql.com/products/connector/ 下載jdbc driver,如下圖所示。

啓動JMeter,在JMeter的測試計劃界面中,添加下載好的MySQL jdbc driver,如下圖所示,通過點擊瀏覽按鈕,選擇下載好的MySQL jdbc driver的路徑,就可以將driver 添加進來了。

在測試計劃中,添加一個Thread Group(線程組),然後在線程組下添加一個JMeter 的計數器元件,這裏我們使用計數器來作為插入時的變量引用,引用名稱設置為id,如下圖所示,在計數器中做如下設置:

  • Starting value:表示起始值,這裏設置構造數據的起始值為1。
  • 遞增:表示構造數據時,每次遞增多少,這裏設置為1。
  • Maximum:表示數據的最大值設置為多大,通常可以設置為一個無窮大的數據即可,這裏設置為100000000。
  • 數字格式:表示數字的格式,比如0001或者00001類似這樣,也可以為空,這裏不做任何的設置。
  • 引用名稱:設置定義的計數器變量的名稱,可以在jmeter的其他元件中作為參數引入使用。

在線程組下添加JDBC Connection Configuration 元件,並且在JDBC Connection Configuration的配置界面,配置MySQL  JDBC的連接信息,如下圖所示,相關的配置信息如下:

  • Variable name for created pool:設置創建的連接池的變量名稱,這裏設置為testpool。
  • Max number of connection:設置最大連接數,這裏設置為10。
  • Max wait:設置最大等待時長(單位為毫秒),這裏設置為10000。
  • Time between Eviction Runs:設置線程可空閒時長(單位為毫秒),這裏設置為60000。
  • Auto commit:設置數據庫事務是否自動提交,這裏設置為True,表示開啓數據庫事務自動提交模式。
  • Transaction isolation:設置數據庫事務隔離級別,這裏選擇DEFAULT。
  • Database url:以JDBC協議的格式輸入目標數據庫的URL地址。
  • Jdbc driver class:設置jdbc的驅動名稱,在這裏選擇com.mysql.jdbc.Driver。
  • Username:設置連接目標數據庫的用户名。
  • Password:設置連接目標數據庫的密碼。
  • Connection Properties:用於設置建立Mysql  JDBC連接時需要自定義指定的連接屬性。

在Thread Group 下添加JDBC Request取樣器元件,如下圖所示。

在JDBC Request 取樣器中,配置我們的數據庫插入操作,如下圖所示,在中間的輸入框中輸入insert into jmeter_test_one(user_id,user_name) values('user_${id}','user_name_${id}');插入語句,其中${id}就是引用的計數器中定義的id變量。在variable name of pool declared in JdBC Connection Configuration中輸入我們在JDBC Connection Configuration中定義的連接池名稱testpool,並且將Query Type選擇為Update Statement。如果是一次執行多條SQL語句,需要將Query Type選擇為Callable Statement,update和delete 語句的Query Type和insert 語句的Query Type是一樣的。

我們再在線程組下添加一個查看結果樹組件,用於查看jmeter 請求是否成功,如下圖所示,查看結果樹通常用於Jmeter性能測試腳本的調試。

以上jmeter元件都添加好了後,就可以讓jmeter 運行起來了,如下圖所示所示,當運行時,可以從Jmeter結果樹中看到JDBC Request 取樣器的運行日誌。

執行完成後,可以看到jmeter_test_one這張表已經插入超過10萬條左右的數據,如下圖所示。

使用同樣類似的方式,再向jmeter_test_two表中也插入10萬條數據,為接下來後面的MySQL數據庫查詢的性能壓測做數據準備。

針對使用Jmeter構造數據總結如下:

l  合理使用Jmeter中的計數器元件,可以做到構造數據時的唯一性,避免重複數據。

l  合理使用好Jmeter中函數,可以構造出很多自己想要的數據格式,比如日期時間格式、IP地址、UUID等,如下圖所示。

2、本次學習總結

讀者們需要在做性能測試時,如果需要構造測試數據,知道如何藉助JMeter來為數據庫構造測試數據。

出處:本次學習的內容參考自清華大學出版社出版的《JMeter核心技術、性能測試與性能分析》一書

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.