近期用JMeter做接口測試,遇到了一個需要用到數據數據庫的場景:一個關于數據報告的頁面,需要將數據庫里面的數據求和或者取均值之后,展示出來。
如果要斷言的話,需要連接數據庫,通過寫sql語句,將sql查詢結果與頁面的結果進行對比。
以MySQL數據庫為例,具體實現的步驟如下:
一、加載JDBC驅動二、連接數據庫三、數據庫的查詢(單值/多值引用)
一、加載JDBC驅動
一)本地準備驅動jar包
注意:驅動包的版本一定要與數據庫的版本匹配,驅動版本太低可能導致連接報錯。
1、網盤下載
準備好MySQL的驅動,找不到的可在網盤下載:鏈接:https://pan.quark.cn/s/b59620ad7f30,提取碼:6WWw,將文件放到JMeter安裝文件夾下
2、在官網下載
進入官網https://dev.mysql.com/downloads/connector/j/,選擇:Platform Independent。點擊Download,解壓后找到jar文件,將文件放到JMeter安裝文件夾下
二)導入驅動包
在JMeter的測試計劃中,找到Add directory or jar to classspath,點擊旁邊的瀏覽,選中包,導入即可
二、連接數據庫
一)添加元件JDBC Connection Configuration
選中線程組,鼠標右鍵,添加–配置元件–JDBC Connection Configuration
二)配置JDBC Connection Configuration
1、名稱:默認為空,可自定義名稱,也可為空
2、注釋:默認為空,可自定義,也可為空
3、Variable Name for created pool:一個連接名稱,例如命名為s_mysql1,需要唯一標識,后面的JDBC請求中需要用到,所以需要與JDBC取樣器中的名稱一致,簡單理解就是jdbc request的時候需要確定去請求哪個數據庫。
4、Max Number of Connections:連接池中允許的最大數據庫連接數,默認10,做性能測試時,建議填 0
5、Max Wait(ms) :在連接池中取回連接最大等待時間,單位毫秒,默認10000,默認即可
6、Time Between Eviction Runs(ms):線程可空閑時間,單位毫秒,默認60000,默認即可
7、Auto Commit:自動提交sql語句,有三個選項:True、False、編輯(JMeter提供的函數設置),默認為true ,默認即可
8、Transaction Isolation:事務隔離級別,默認為DEFAULT,默認即可
9、Test While Idle: 當連接空閑時是否斷開,默認為True,默認即可
10、Soft Min Evictable Idle Time(ms):連接池中連接的最小空閑時間,以毫秒為單位。當連接池中的連接處于空閑狀態且超過了 “Soft Min Evictable Idle Time” 的設定值時,連接池可能會選擇回收這些空閑連接,默認為5000,默認即可
11、Validation Query:驗證sql語法,默認為select1,默認即可
12、Database URL:數據庫連接 URL,可以帶上字符集characterEncoding=utf-8,也可允許多條sql執行allowMultiQueries=true,還可指定時區serverTimezone=UTC,比如jdbc:mysql://10.0.41.104:33066/u_backend?serverTimezone=UTC&characterEncoding=utf-8&allowMultiQueries=true
13、JDBC Driver class:JDBC的類,默認為空,必填項,mysql就選擇com.mysql.jdbc.Driver
14、Username:數據庫的用戶名
15、Password:數據庫的密碼
三、 數據庫的查詢(單值/多值引用)
一)添加JDBC Request
1、選中簡單控制器,鼠標右鍵,添加–Sample–JDBC Request
添加成功后,填寫對應參數:
名稱:自定義
Variable Name of Pool declared in JDBC Connection Configuration:要與JDBC Connection Configuration中的Variable Name for created pool值保持一致
Query Type:根據填寫的sql選擇,查詢就選擇Select Statement,更新就選擇Update Statement
Variable names:對應sql查詢結果的字段值, 字段值有多少個,則對應值就有多少個,例如sql查出來有一個字段值reg_count,那么下面就對應1個變量count
Handle ResultSet:默認為Store as String,選擇默認值即可, 當選擇此選項時,查詢結果將以字符串的形式存儲在變量中
二)添加HTTP請求
添加HTTP請求,填寫名稱,HTTP請求方法,路徑等等
三)添加響應斷言
1、引用一個變量
引用變量的形式就是 變量 名 行 數 ,例如 {變量名_行數},例如 變量名?
行
??? ?
?數,例如{count_1},表示引用查詢結果中count字段第1行的數據,KaTeX parse error: Expected group after '_' at position 5: {變量名_?#}表示返回的行數,例如{count_#}表示返回了幾行。
2、引用多個變量
如果SQL查詢出來的值有多個,例如查詢出來了5行記錄,每行三個字段,pid_reg_count對應變量count,pid_fee對應變量fee,income對應變量income。
可以添加一個Debug Sample,查看每個值是怎么取的,KaTeX parse error: Expected group after '_' at position 7: {count_?#}表示返回的行數,{count_1}表示返回的count字段的第一行的值,${count_2}表示返回的count字段的第二行的值。
fee1?表示返回的fee字段的第一行的值,{income_1}表示返回的income字段的第一行的值。。。依次類推。
今天的分享就到這里,希望對大家所有啟發。
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?