🔥Jmeter(七) - 從入門到精通 - 建立資料庫測試計劃實戰<MySQL 資料庫>(詳解教程)

北京-宏哥發表於2025-02-25

1.簡介

  在實際工作中,我們經常會聽到資料庫的效能和穩定性等等,這些有時候也需要測試工程師去評估和測試,上一篇文章宏哥主要介紹了 jmeter 連線和建立資料庫測試計劃的過程,宏哥在文中透過示例和程式碼非常詳細地介紹給大家,希望對各位小夥伴和童鞋們的學習或者工作具有一定的指導和參考學習價值,遇到類似的問題腦子一片空白的童鞋們可以參考一下。這一篇宏哥就以 MySQL 資料為例結合上一篇的理論知識在這裡帶領小夥伴和童鞋們實戰一下。這裡宏哥為了增加小夥伴們的學習興趣和便於記憶理解,因此列舉了一個諜戰劇中執行刺殺任務的場景,首先組成刺殺任務的小隊,然後透過接頭暗號建立聯絡,其次就開始執行刺殺任務,期間有核查組員的人物背景、其他組員支援、以及自己組員的犧牲、任務的變更等等,最後確認暗殺任務是否執行成功。

2.環境準備

1、MySQL 資料庫
2、下載 mysql jdbc 驅動
3、JMeter

2.1 安裝 MySQL

首先確保你已經安裝好資料庫 MySQL。如果沒有可以參考宏哥的這篇文章:傳送門。檢視有沒有安裝 MySQL 命令:net start,開啟控制檯 (在開始,執行輸入 cmd) 然後出入 “net start” 就是開啟了服務看看列出來的有沒有 MySQL 之類的如果沒有,就是沒有安裝。如下圖所示:

2.2JMeter

JMeter 安裝啟動好待用。

2.3 下載 MySQL 驅動

1、下載 MySQL 驅動。下載地址:https://dev.mysql.com/downloads/connector/j/
常用的包如下:
Windows 下 mysql-connector-java-5.1.7-bin.jar
Mac 下 MySQL Connector/J 沒有對應的 Mac 版,可以選擇 Platform Independent:mysql-connector-java-8.0.15.zip
注意:驅動包的版本一定要與你資料庫的版本匹配,驅動版本低於 mysql 版本有可能會導致連線失敗報錯

2、解壓下載的 MySQL 驅動,如下圖所示:

3、將解壓的 MySQL 的 jdbc 驅動(mysql-connector-java-8.0.20.jar),將其放到 D:\software\apache-jmeter-5.1.1\lib 目錄下。如下圖所示:

注意:敲黑板,敲腦殼啦!!!放完驅動以後,要記得重啟 jmeter

3.建立資料庫測試計劃

  在本節中,您將學習如何建立基本的測試計劃以測試資料庫伺服器和運算元據庫(增、刪、改、查)。本示例使用 MySQL 資料庫驅動程式。要使用該驅動程式,必須將其包含的.jar 檔案(例如mysql-connector-java-XXX-bin.jar)複製到 JMeter ./lib 目錄。

3.1 新建測試計劃

首先我們新建一個測試計劃,並將其命名為:Test MySQLDB Plan,如下圖所示:

3.2 在測試計劃下新增驅動地址

在建立好測試計劃以後,點選 “Browse...”,選擇我們前邊下載解壓好的驅動路徑,我們需要將驅動的地址(路徑)新增到測試計劃下邊,如下圖所示:

3.3 新增使用者

新建完測試計劃以後,我們前邊也講過了,這時候就要新增使用者了。你要對每個 JMeter 測試計劃進行的第一步是新增一個執行緒組(使用者)。執行緒組告訴 JMeter 您要模擬的使用者數量,使用者應多久傳送一次請求以及應傳送多少次請求。這裡就相當於諜戰片中我們開始選擇隊員組隊的過程,預設是一人一個小組,如果你覺得不夠可以在控制皮膚修改人數等等。如下圖所示:

3.4 新增 JDBC 連線配置

透過上邊的操作,我們已經定義了使用者挑選了隊員組成了精幹小組,然後我們必須定義這些使用者(隊員)所要去的目的地,和目的地建立聯絡。不要這些使用者累死累活的幹了半天的活,知不道是為誰幹得活。在本部分中,你需要和目的地建立聯絡。我們需要設定一些欄位,這些欄位相當於諜戰片中的接頭暗號,例如:《智取威虎山》楊子榮與坐山雕的接頭暗號:臉紅什麼?精神煥發。怎麼又黃拉?防冷塗的蠟;長江長江我是黃河,等等。暗號對上了,才可以建立聯絡。否則認為有危險,不是建立聯絡,具體在測試中的表現就是報錯了!!!,下邊控制皮膚的引數欄位在上一篇已經說過了,這裡就不贅述了,宏哥直接填寫了,有不明白的可以看看上一篇文章。如下圖所示:

3.5 新增 JDBC 請求

透過上邊的操作,我們已經定義了使用者並且已經知道目的地和接頭人建立了聯絡之後,然後我們就需要給這些使用者分配具體的任務了(誰負責監視,誰負責刺殺,誰負責放哨)。在本部分中,你將指定要執行的 JDBC 請求(刺殺任務)。這裡就開始執行刺殺任務,期間有核查組員的人物背景、其他組員支援、以及自己組員的犧牲、任務的變更等等

3.5.1 查詢(核查組員資訊)

3.5.2 插入(其他組員支援)

3.5.3 修改(組員檔案變更)

3.5.4 刪除(自己組員犧牲)

3.6 新增監聽器以檢視/儲存測試結果(監聽器 - 檢視任務是否成功)

您需要新增到測試計劃中的最後一個元素是 Listener。該元素負責將 JDBC 請求的所有結果儲存在檔案中並顯示結果。如下圖所示:

3.7 儲存與執行測試計劃

儲存與執行測試計劃,檢視任務結果,如下圖所示:

宏哥為了讓小夥伴們看得清楚,講後邊的三個請求都修改成 disable 了,修改後由黑色變成了灰色。然後慢慢的逐個再將其修改成 enable。如下圖所示:

3.7.1 核查人員資訊情況

1、首先查詢 MySQL 資料,如下圖所示:

2、看一下 JMeter 執行後與上邊的查詢結果一致,說明核查人員資訊成功。如下圖所示:

3.7.2 核查人員支援情況

1、首先查詢 MySQL 資料,只有四個人員,如下圖所示:

2、JMeter 執行後,北京宏哥前來支援,我們分別檢視 MySQL 和 JMeter 的結果,如下圖所示:

JMeter:

MySQL:

3.7.3 核查人員變更情況

1、首先查詢 MySQL 資料,只有五個人員,如下圖所示:

2、JMeter 執行後,將 “趙六” 變更成 “趙麗”,我們分別檢視 MySQL 和 JMeter 的結果,如下圖所示:

JMeter:

MySQL:

3.7.4 核查人員犧牲情況

1、首先查詢 MySQL 資料,只有五個人員,如下圖所示:

2、JMeter 執行後,李四在任務中犧牲,我們分別檢視 MySQL 和 JMeter 的結果,如下圖所示:

JMeter:

MySQL:

4.小結

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 後問題解決
3、Variable Name must not be null in Insert

原因:未在 JDBC Request 的控制皮膚裡填寫繫結的連線池

解決辦法:填寫和 JDBC Connection Configuration 一樣的連線池即可

4、以下是各資料庫 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

  好了今天的建立資料庫測試計劃實戰就分享到這裡。

相關文章