Jmeter接口測(cè)試數(shù)據(jù)庫(kù)斷言的實(shí)現(xiàn)與設(shè)計(jì)

接口測(cè)試大部分都使用接口的響應(yīng)值作為接口驗(yàn)證的依據(jù)坯墨,但在與數(shù)據(jù)庫(kù)有交互的接口中這種結(jié)果判斷不足以判斷接口的正確性,本文將以jmeter作為接口測(cè)試的工具來實(shí)現(xiàn)接口的數(shù)據(jù)庫(kù)斷言

一. 總體思路概述

? ? 1. 使用jmeter發(fā)起接口請(qǐng)求

? ? 2. 使用json提取器獲取接口響應(yīng)結(jié)果中的關(guān)鍵內(nèi)容

? ? 3. 使用jmeter發(fā)起數(shù)據(jù)庫(kù)操作劝评,得到數(shù)據(jù)庫(kù)的值

? ? 4. 使用BeanShell斷言,實(shí)現(xiàn)接口響應(yīng)內(nèi)容和數(shù)據(jù)庫(kù)內(nèi)容的對(duì)比

二. jmeter發(fā)起接口請(qǐng)求

? ? 以搜索接口為例,業(yè)務(wù)需求為:通過關(guān)鍵字搜索商品偶宫。接口信息如下:

?接口信息:

輸入?yún)?shù):

返回結(jié)果:

? ?根據(jù)以上接口信息在jmeter中添加http 請(qǐng)求,如下圖

三. 針對(duì)接口請(qǐng)求添加json提取器

? ? ?添加json提取器是為了獲取接口響應(yīng)中所有name环鲤,用來和數(shù)據(jù)庫(kù)中查到的name值進(jìn)行一一對(duì)比

? ? ?3.1 添加json提取器

選中搜索請(qǐng)求--添加--后置處理器--json提取器 ? ?

?3.2 設(shè)置json提取器

各項(xiàng)參數(shù)解釋:

1.?Names of created variables:表示json提取器從響應(yīng)中獲取到的內(nèi)容所存儲(chǔ)的變量纯趋,隨便定義只要不沖突即可,建議起一個(gè)有意義的名稱冷离,不要寫成abc毫無意義的名稱

2.?JSON Path Expressions:json提取的表達(dá)式吵冒,表示需要按照這個(gè)規(guī)則從響應(yīng)中匹配內(nèi)容,圖中表達(dá)式表示匹配響應(yīng)中的所有name字段對(duì)應(yīng)的值

3.?Match No. (0 for Random):匹配結(jié)果存儲(chǔ)到變量的策略西剥,默認(rèn)什么都不寫就是0

1?0表示隨機(jī)一個(gè)存儲(chǔ)的變量中痹栖,比如我們匹配了多個(gè)name字段的值,那么會(huì)隨機(jī)將其中一個(gè) ? ? 值賦值給Names of created variables指定的變量

2?-1表示使用數(shù)字后綴標(biāo)識(shí)每一個(gè)匹配的結(jié)果瞭空,比如我們匹配了多個(gè)name字段的值揪阿,那么最終每一個(gè)結(jié)果都會(huì)對(duì)應(yīng)一個(gè)變量,變量名稱則是name_1咆畏、name_2南捂、name_3、name_4 ....

3?X表示把第幾個(gè)匹配到的值賦值給Names of created variables指定的變量旧找,比如寫個(gè)2溺健,那么就會(huì)把匹配到的第2的name字段的值賦值給name

4.?Compute concatenation var:表示如果匹配到多個(gè)值,可以將多個(gè)值存儲(chǔ)在一個(gè)變量中钮蛛,變量名為Names of created variables指定的變量名稱加_ALL鞭缭,比如當(dāng)前圖中就是name_ALL,存儲(chǔ)的多個(gè)值以,分割

5. ?Default Values:表示如果json表達(dá)式?jīng)]有匹配到任何值愿卒,那么變量的默認(rèn)值是啥

四. 配置數(shù)據(jù)庫(kù)發(fā)起數(shù)據(jù)庫(kù)請(qǐng)求

? ??以mysql數(shù)據(jù)庫(kù)為例

?? 4.1 ?配置數(shù)據(jù)庫(kù)連接元件

配置數(shù)據(jù)庫(kù)所需要的jar包缚去,下載mysql-connector-java.5.1.46.jar,可以直接在maven上進(jìn)行下載琼开,下載地址https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.46

下載好以后放入jmeter目錄下的lib/ext目錄下易结,然后重啟jmeter

配置jdbc元件,選中線程組--添加--配置元件--JDBC ?Connection ?Configuration

核心字段含義

Variable Name for created pool:表示該連接配置的名稱柜候,這個(gè)名稱將會(huì)在后續(xù)的jdbc請(qǐng)求中使用

Dabase URL:表示數(shù)據(jù)庫(kù)實(shí)例的連接地址

JDBC Driver class:表示連接驅(qū)動(dòng)類

Username:表示連接數(shù)據(jù)庫(kù)實(shí)例的用戶名

Password:表示連接數(shù)據(jù)庫(kù)實(shí)例的密碼

4.2 數(shù)據(jù)庫(kù)請(qǐng)求搞动,請(qǐng)注意該請(qǐng)求需要放在查詢接口請(qǐng)求之前

? ? 選中線程組--添加--取樣器--JDBC Request


核心字段含義

Variable Name of Pool declared in JDBC Connect Configuration:表示要連接的數(shù)據(jù)庫(kù)配置名稱,與我們上面配置的一致

Query:填寫sql語(yǔ)句渣刷,這里我們是查詢商品表鹦肿,通過name字段模糊查詢,并且只返回了name字段

Result ?variable ?name:表示從數(shù)據(jù)庫(kù)中查到的內(nèi)容存到哪個(gè)變量里辅柴,這里寫變量名稱

五. 腳本調(diào)試

?? 5.1 ?添加調(diào)試取樣器箩溃,用來查看各個(gè)變量的值是否正確

? ? 選中線程組--添加--取樣器--調(diào)試取樣器

? ?5.2 ?添加察看結(jié)果樹瞭吃,用來查看請(qǐng)求結(jié)果

? ? 選中線程組--添加--監(jiān)聽器--察看結(jié)果樹

?5.3 ?執(zhí)行測(cè)試,查看各個(gè)變量的值是否正確

dbname=[{name=天喔 西梅454g}, {name=天喔 鹽津桃肉170g/瓶}, {name=天喔很牛牛肉粒(沙爹)150g/袋}, {name=天喔 Q豬香辣小香腸100g/袋}] ? ? ? ?數(shù)組中存著鍵值對(duì)

name_ALL=天喔 西梅454g,天喔 鹽津桃肉170g/瓶,天喔很牛牛肉粒(沙爹)150g/袋,天喔 Q豬香辣小香腸100g/袋 ? ? ? 逗號(hào)分隔的字符串

六. 使用Beanshell 斷言完成接口結(jié)果和數(shù)據(jù)庫(kù)結(jié)果的校驗(yàn)

? ?選中搜索請(qǐng)求--添加--斷言--BeanShell 斷言

執(zhí)行整個(gè)腳本涣旨,執(zhí)行通過歪架,腳本全貌如下

作  者:Testfan 沙陌老師

出  處:微信公眾號(hào):自動(dòng)化軟件測(cè)試平臺(tái)

版權(quán)說明:歡迎轉(zhuǎn)載,但必須注明出處霹陡,并在文章頁(yè)面明顯位置給出文章鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末和蚪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子烹棉,更是在濱河造成了極大的恐慌攒霹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浆洗,死亡現(xiàn)場(chǎng)離奇詭異催束,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辅髓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門泣崩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洛口,你說我怎么就攤上這事】Γ” “怎么了第焰?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)妨马。 經(jīng)常有香客問我挺举,道長(zhǎng),這世上最難降的妖魔是什么烘跺? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任湘纵,我火速辦了婚禮,結(jié)果婚禮上滤淳,老公的妹妹穿的比我還像新娘梧喷。我一直安慰自己,他們只是感情好脖咐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布铺敌。 她就那樣靜靜地躺著,像睡著了一般屁擅。 火紅的嫁衣襯著肌膚如雪偿凭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天派歌,我揣著相機(jī)與錄音弯囊,去河邊找鬼痰哨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛匾嘱,可吹牛的內(nèi)容都是我干的作谭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奄毡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼折欠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吼过,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤锐秦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盗忱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酱床,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年趟佃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扇谣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闲昭,死狀恐怖罐寨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情序矩,我是刑警寧澤鸯绿,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站簸淀,受9級(jí)特大地震影響瓶蝴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜租幕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一舷手、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劲绪,春花似錦男窟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至祷安,卻和暖如春姥芥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汇鞭。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工凉唐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庸追,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓台囱,卻偏偏與公主長(zhǎng)得像淡溯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子簿训,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容