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

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

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

 

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

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波  推薦  不要忘記哦!!!

別忘了點 推薦 留下您來過的痕跡

 

&n