介面測驗大部分都使用介面的回應值作為介面驗證的依據,但在與資料庫有互動的介面中這種結果判斷不足以判斷介面的正確性,本文將以jmeter作為介面測驗的工具來實作介面的資料庫斷言
一、總體思路概述
- 使用jmeter發起介面請求
- 使用json提取器獲取介面回應結果中的關鍵內容
- 使用jmeter發起資料庫操作,得到資料庫的值
- 使用BeanShell斷言,實作介面回應內容和資料庫內容的對比
二、jmeter發起介面請求
以搜索介面為例,業務需求為:通過關鍵字搜索商品,介面資訊如下:
介面資訊:

輸入引數:

回傳結果:


根據以上介面資訊在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 斷言


執行整個腳本,執行通過,腳本全貌如下
?? 往期技術文章推薦
介面測驗(1):沉淀!熬夜整理100個介面測驗的知識點!!專業掃盲!
介面測驗(2):??這應該是Postman最詳細的中文使用教程了??(新手使用,簡單明了)
介面測驗(3):隨手寫個介面測驗工具,讓學妹瞧瞧我的能耐
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/489881.html
標籤:其他
