接口測試大部分都使用接口的響應值作為接口驗證的依據,但在與資料庫有互動的接口中這種結果判斷不足以判斷接口的正确性,本文将以jmeter作為接口測試的工具來實作接口的資料庫斷言
一、總體思路概述
- 使用jmeter發起接口請求
- 使用json提取器擷取接口響應結果中的關鍵内容
- 使用jmeter發起資料庫操作,得到資料庫的值
- 使用BeanShell斷言,實作接口響應内容和資料庫内容的對比
二、jmeter發起接口請求
以搜尋接口為例,業務需求為:通過關鍵字搜尋商品。接口資訊如下:
接口資訊:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CMygjN3QTM0cDNjRmN4IWMzYzXwAzMzIDMwEzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
輸入參數:
傳回結果:
根據以上接口資訊在jmeter中添加http 請求,如下圖
三、針對接口請求添加json提取器
添加json提取器是為了擷取接口響應中所有name,用來和資料庫中查到的name值進行一一對比
1.添加json提取器
選中搜尋請求--添加--後置處理器--json提取器
2.設定json提取器
各項參數解釋:
1. Names of created variables:表示json提取器從響應中擷取到的内容所存儲的變量,随便定義隻要不沖突即可,建議起一個有意義的名稱,不要寫成abc毫無意義的名稱
2. JSON Path Expressions:json提取的表達式,表示需要按照這個規則從響應中比對内容,圖中表達式表示比對響應中的所有name字段對應的值
3. Match No. (0 for Random):比對結果存儲到變量的政策,預設什麼都不寫就是0
- 0表示随機一個存儲的變量中,比如我們比對了多個name字段的值,那麼會随機将其中一個 值指派給Names of created variables指定的變量
- -1表示使用數字字尾辨別每一個比對的結果,比如我們比對了多個name字段的值,那麼最終每一個結果都會對應一個變量,變量名稱則是name_1、name_2、name_3、name_4 ....
- X表示把第幾個比對到的值指派給Names of created variables指定的變量,比如寫個2,那麼就會把比對到的第2的name字段的值指派給name
- Compute concatenation var:表示如果比對到多個值,可以将多個值存儲在一個變量中,變量名為Names of created variables指定的變量名稱加_ALL,比如目前圖中就是name_ALL,存儲的多個值以,分割
- Default Values:表示如果json表達式沒有比對到任何值,那麼變量的預設值是啥
四、配置資料庫發起資料庫請求
以mysql資料庫為例
1、配置資料庫連接配接元件
配置資料庫所需要的jar包,下載下傳mysql-connector-java.5.1.46.jar,可以直接在maven上進行下載下傳,下載下傳位址<a href="https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.46" h"="">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:表示連接配接資料庫執行個體的密碼
2、資料庫請求,請注意該請求需要放在查詢接口請求之前
選中線程組--添加--取樣器--JDBC Request
核心字段含義
- Variable Name of Pool declared in JDBC Connect Configuration:表示要連接配接的資料庫配置名稱,與我們上面配置的一緻
- Query:填寫sql語句,這裡我們是查詢商品表,通過name字段模糊查詢,并且隻傳回了name字段
- Result variable name:表示從資料庫中查到的内容存到哪個變量裡,這裡寫變量名稱
五、腳本調試
1.添加調試取樣器,用來檢視各個變量的值是否正确
選中線程組--添加--取樣器--調試取樣器
2.添加察看結果樹,用來檢視請求結果
選中線程組--添加--監聽器--察看結果樹
3.執行測試,檢視各個變量的值是否正确
六、使用Beanshell 斷言完成接口結果和資料庫結果的校驗
選中搜尋請求--添加--斷言--BeanShell 斷言
執行整個腳本,執行通過,腳本全貌如下