接口測試大部分都使用接口的響應值作為接口驗證的依據,但在與數據庫有交互的接口中這種結果判斷不足以判斷接口的正確性,本文將以jmeter作為接口測試的工具來實現接口的數據庫斷言
一. 總體思路概述
1. 使用jmeter發起接口請求
2. 使用json提取器獲取接口響應結果中的關鍵內容
3. 使用jmeter發起數據庫操作,得到數據庫的值
4. 使用BeanShell斷言,實現接口響應內容和數據庫內容的對比
二. jmeter發起接口請求
以搜索接口為例,業務需求為:通過關鍵字搜索商品。接口信息如下:
接口信息:

輸入參數:

返回結果:


根據以上接口信息在jmeter中添加http 請求,如下圖

三. 針對接口請求添加json提取器
添加json提取器是為了獲取接口響應中所有name,用來和數據庫中查到的name值進行一一對比
3.1 添加json提取器
選中搜索請求--添加--后置處理器--json提取器

3.2 設置json提取器

各項參數解釋:
1. Names of created variables:表示json提取器從響應中獲取到的內容所存儲的變量,隨便定義只要不沖突即可,建議起一個有意義的名稱,不要寫成abc毫無意義的名稱
2. JSON Path Expressions:json提取的表達式,表示需要按照這個規則從響應中匹配內容,圖中表達式表示匹配響應中的所有name字段對應的值
3. Match No. (0 for Random):匹配結果存儲到變量的策略,默認什么都不寫就是0
1 0表示隨機一個存儲的變量中,比如我們匹配了多個name字段的值,那么會隨機將其中一個 值賦值給Names of created variables指定的變量
2 -1表示使用數字后綴標識每一個匹配的結果,比如我們匹配了多個name字段的值,那么最終每一個結果都會對應一個變量,變量名稱則是name_1、name_2、name_3、name_4 ....
3 X表示把第幾個匹配到的值賦值給Names of created variables指定的變量,比如寫個2,那么就會把匹配到的第2的name字段的值賦值給name
4. Compute concatenation var:表示如果匹配到多個值,可以將多個值存儲在一個變量中,變量名為Names of created variables指定的變量名稱加_ALL,比如當前圖中就是name_ALL,存儲的多個值以,分割
5. Default Values:表示如果json表達式沒有匹配到任何值,那么變量的默認值是啥
四. 配置數據庫發起數據庫請求
以mysql數據庫為例
4.1 配置數據庫連接元件
配置數據庫所需要的jar包,下載mysql-connector-java.5.1.46.jar,可以直接在maven上進行下載,下載地址https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.46

下載好以后放入jmeter目錄下的lib/ext目錄下,然后重啟jmeter
配置jdbc元件,選中線程組--添加--配置元件--JDBC Connection Configuration


核心字段含義
Variable Name for created pool:表示該連接配置的名稱,這個名稱將會在后續的jdbc請求中使用
Dabase URL:表示數據庫實例的連接地址
JDBC Driver class:表示連接驅動類
Username:表示連接數據庫實例的用戶名
Password:表示連接數據庫實例的密碼
4.2 數據庫請求,請注意該請求需要放在查詢接口請求之前
選中線程組--添加--取樣器--JDBC Request


核心字段含義
Variable Name of Pool declared in JDBC Connect Configuration:表示要連接的數據庫配置名稱,與我們上面配置的一致
Query:填寫sql語句,這里我們是查詢商品表,通過name字段模糊查詢,並且只返回了name字段
Result variable name:表示從數據庫中查到的內容存到哪個變量里,這里寫變量名稱
五. 腳本調試
5.1 添加調試取樣器,用來查看各個變量的值是否正確
選中線程組--添加--取樣器--調試取樣器

5.2 添加察看結果樹,用來查看請求結果
選中線程組--添加--監聽器--察看結果樹

5.3 執行測試,查看各個變量的值是否正確

dbname=[{name=天喔 西梅454g}, {name=天喔 鹽津桃肉170g/瓶}, {name=天喔很牛牛肉粒(沙爹)150g/袋}, {name=天喔 Q豬香辣小香腸100g/袋}] 數組中存着鍵值對
name_ALL=天喔 西梅454g,天喔 鹽津桃肉170g/瓶,天喔很牛牛肉粒(沙爹)150g/袋,天喔 Q豬香辣小香腸100g/袋 逗號分隔的字符串
六. 使用Beanshell 斷言完成接口結果和數據庫結果的校驗
選中搜索請求--添加--斷言--BeanShell 斷言


執行整個腳本,執行通過,腳本全貌如下

作 者:Testfan 沙陌老師
出 處:微信公眾號:自動化軟件測試平台
版權說明:歡迎轉載,但必須注明出處,並在文章頁面明顯位置給出文章鏈接