接口測(cè)試的斷言要怎么寫(xiě)

前段時(shí)間看到一片文章《接口測(cè)試斷言》,里面提到了接口測(cè)試中斷言的作用和寫(xiě)斷言的要點(diǎn)肛炮。這篇文章會(huì)總結(jié)一下我在做接口測(cè)試的時(shí)候是如何寫(xiě)斷言的掰盘。

為什么要做接口斷言

首先先說(shuō)一說(shuō)眾所周知的一個(gè)問(wèn)題瑟啃,為什么要做斷言。
假設(shè)我們查詢我們銀行余額的時(shí)候發(fā)出了一個(gè)請(qǐng)求,請(qǐng)求響應(yīng)的HTTP狀態(tài)碼是200酒觅,但是響應(yīng)體里面返回的是咱們信用卡和貸款的錢(qián)。如果沒(méi)有斷言微峰,這個(gè)接口用例會(huì)通過(guò)嗎舷丹?這個(gè)接口實(shí)際上通過(guò)了嗎?
事實(shí)上這個(gè)接口測(cè)試并沒(méi)有通過(guò)蜓肆,但是在執(zhí)行的時(shí)候這個(gè)case并不會(huì)報(bào)錯(cuò)颜凯,這是缺乏合適的接口斷言導(dǎo)致的。合適的斷言則可以保障接口測(cè)試質(zhì)量仗扬。

所有接口測(cè)試都需要斷言嗎

首先我們需要討論一下症概,在什么時(shí)候做接口測(cè)試的時(shí)候是需要做斷言的。
我們?cè)诠ぷ鞯臅r(shí)候可能會(huì)遇到這種情況:“咱們組只提供后端接口早芭,你測(cè)一下接口就行”彼城,“前端還沒(méi)寫(xiě)好,你先測(cè)后端接口吧”。在這種情況下我們需要對(duì)接口做斷言嗎募壕?基本上是不需要的调炬,畢竟這種情況下每一個(gè)請(qǐng)求我們都會(huì)用肉眼去查看,有沒(méi)有報(bào)錯(cuò)舱馅、響應(yīng)是否符合預(yù)期我們基本上都能看出來(lái)缰泡。
事實(shí)上,接口測(cè)試的斷言在手動(dòng)測(cè)試的時(shí)候基本上是用不到的代嗤,只有在自動(dòng)化的情況下才會(huì)用斷言來(lái)驗(yàn)證接口響應(yīng)是否符合預(yù)期棘钞,例如測(cè)試環(huán)境的CI和線上的巡檢(起碼在我的工作中是這樣的)。

斷言的原則

等值校驗(yàn)

對(duì)于穩(wěn)定不變的字段我們需要做等值校驗(yàn)
舉個(gè)例子干毅,我們?cè)谀成缃黄脚_(tái)查看一個(gè)“胡X進(jìn)”用戶的主頁(yè)宜猜,調(diào)用了/ajax/profile/info這個(gè)接口,根據(jù)我的觀察溶锭,data.user.id這個(gè)字段是這個(gè)用戶的uid宝恶,這個(gè)是必定不會(huì)改變的,所以我們?cè)趯?duì)這個(gè)接口做斷言的時(shí)候趴捅,這個(gè)字段可以做等值校驗(yàn)垫毙。

有規(guī)律的校驗(yàn)

對(duì)于有一定規(guī)律的字段我們會(huì)根據(jù)字段的類型做校驗(yàn),下面是幾個(gè)比較常見(jiàn)的例子

數(shù)字大小校驗(yàn)

依然以/ajax/profile/info這個(gè)接口舉例拱绑,data.user.followers_count這個(gè)字段是用戶粉絲的數(shù)量综芥,必然是數(shù)字類型的返回,所以我們?cè)趯?duì)這個(gè)字段做斷言的時(shí)候可以判斷這個(gè)值是否大于0或者是否大于等于0猎拨。

內(nèi)容包含校驗(yàn)

這次我們那不用請(qǐng)求胡X進(jìn)用戶信息的接口做例子了膀藐,我們使用/ajax/side/search接口來(lái)搜索“胡X進(jìn)”有關(guān)的內(nèi)容,這個(gè)接口返回了一系列和我們輸入有關(guān)的內(nèi)容红省,我們可以使用里面包含的內(nèi)容是否含有胡X進(jìn)來(lái)做斷言额各,也可以選定某些字段,針對(duì)這些字段里是否包含胡X進(jìn)來(lái)做斷言吧恃。

數(shù)組長(zhǎng)度校驗(yàn)

這次我們真的不用和胡X進(jìn)有關(guān)的接口了虾啦,/ajax/statuses/hot_band這個(gè)接口是返回?zé)崴寻駟蔚模渲?em>data.band_list這個(gè)字段返回的是熱搜榜單列表痕寓,返回的形式是數(shù)組傲醉,那么我們可以對(duì)這個(gè)字段的數(shù)組長(zhǎng)度做斷言,判斷這個(gè)數(shù)組長(zhǎng)度是否為50(通常情況下熱搜榜單有50條)呻率。

枚舉值校驗(yàn)

例如/ajax/statuses/hot_band接口相應(yīng)中的icon_desc字段硬毕,里面的內(nèi)容都是有枚舉值的,可以定義一個(gè)數(shù)組礼仗,對(duì)這個(gè)字段是否在數(shù)組里面進(jìn)行斷言吐咳。

字段為空校驗(yàn)

/ajax/statuses/hot_band這個(gè)接口返回的數(shù)組我們可以判斷長(zhǎng)度逻悠,但是里面的內(nèi)容沒(méi)有規(guī)律,我們?cè)撛趺磁袛鄶?shù)組里面的字段是否正確呢韭脊。暫時(shí)也沒(méi)有別的辦法蹂风,只能對(duì)里面的內(nèi)容做非空的斷言,確認(rèn)里面的內(nèi)容是否為空字符串乾蓬,或者是否為空。
空字符串指的是返回了這個(gè)字段慎恒,字段內(nèi)容為空任内;空指的是接口并沒(méi)有返回這個(gè)字段。

接口中的所有字段都需要做斷言嗎

這個(gè)問(wèn)題比較看團(tuán)隊(duì)的要求融柬,但是大部分情況下來(lái)講死嗦,前端需要展示的字段一般都是需要做斷言的。
還是以某社交平臺(tái)的/ajax/statuses/hot_band為例粒氧。icon_desc或者small_icon_desc越除、numword或者word_scheme外盯,這些字段是展示出來(lái)的摘盆,所以這幾個(gè)字段我們是一定要做斷言的,除此之外饱苟,數(shù)組的長(zhǎng)度也需要做斷言孩擂。其他的字段相對(duì)來(lái)說(shuō)做斷言的意義則沒(méi)那么高。

不同情況下的特殊斷言

需要注意的是箱熬,在線上跑接口和測(cè)試環(huán)境不一樣类垦。在做接口自動(dòng)化的時(shí)候,在線上只能運(yùn)行查的接口城须,而測(cè)試環(huán)境則可以運(yùn)行增刪改查的接口蚤认。
與查接口不同的是,增刪改三種類型的接口會(huì)有異步接口的可能性糕伐,在這種情況下砰琢,只對(duì)單接口做斷言并不能驗(yàn)證接口的準(zhǔn)確性。需要設(shè)計(jì)更完善的接口測(cè)試方案來(lái)驗(yàn)證接口的準(zhǔn)確性赤炒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氯析,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子莺褒,更是在濱河造成了極大的恐慌掩缓,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遵岩,死亡現(xiàn)場(chǎng)離奇詭異你辣,居然都是意外死亡巡通,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)舍哄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宴凉,“玉大人,你說(shuō)我怎么就攤上這事表悬∶殖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蟆沫,是天一觀的道長(zhǎng)籽暇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)饭庞,這世上最難降的妖魔是什么戒悠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮舟山,結(jié)果婚禮上绸狐,老公的妹妹穿的比我還像新娘。我一直安慰自己累盗,他們只是感情好寒矿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著幅骄,像睡著了一般劫窒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拆座,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天主巍,我揣著相機(jī)與錄音,去河邊找鬼挪凑。 笑死孕索,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的躏碳。 我是一名探鬼主播搞旭,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菇绵!你這毒婦竟也來(lái)了肄渗?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咬最,失蹤者是張志新(化名)和其女友劉穎翎嫡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體永乌,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惑申,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年具伍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片圈驼。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡人芽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绩脆,到底是詐尸還是另有隱情萤厅,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布靴迫,位于F島的核電站祈坠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矢劲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一慌随、第九天 我趴在偏房一處隱蔽的房頂上張望芬沉。 院中可真熱鬧,春花似錦阁猜、人聲如沸丸逸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)黄刚。三九已至,卻和暖如春民效,著一層夾襖步出監(jiān)牢的瞬間憔维,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工畏邢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留业扒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓舒萎,卻偏偏與公主長(zhǎng)得像程储,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子臂寝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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