嘆為觀止!這篇文章把服務(wù)端接口測(cè)試徹底講明白了

服務(wù)端的接口測(cè)試我們一般從功能開(kāi)始進(jìn)行測(cè)試,比如請(qǐng)求參數(shù)和響應(yīng)參數(shù)的校驗(yàn),業(yè)務(wù)邏輯或業(yè)務(wù)規(guī)則的校驗(yàn),數(shù)據(jù)庫(kù)操作的校驗(yàn)。功能正常后會(huì)根據(jù)需要進(jìn)行安全相關(guān)的檢查、性能測(cè)試以及系列擴(kuò)展測(cè)試,比如與歷史版本的兼容性測(cè)試、接口的超時(shí)驗(yàn)證以及設(shè)計(jì)合理性驗(yàn)證等,用例設(shè)計(jì)也是從這幾個(gè)方面進(jìn)行分析設(shè)計(jì),下面的思維導(dǎo)圖是一個(gè)概要的測(cè)試關(guān)注方向:
詳細(xì)介紹如下:
輸入主要是指接口的入?yún)ⅲ覀兤匠5臏y(cè)試中,會(huì)先考慮正常的入?yún)ⅲ约爱惓5娜雲(yún)ⅲ惓G闆r包括:參數(shù)異常和數(shù)據(jù)異常,用例設(shè)計(jì)這塊使用較多的是等價(jià)類劃分和邊界值分析
A、正常的入?yún)?/span>
正常的入?yún)⒑芎美斫猓褪歉鶕?jù)接口設(shè)計(jì)文檔的入?yún)?biāo)準(zhǔn),輸入正常的參數(shù),響應(yīng)按接口設(shè)計(jì)文檔的約定條件正常返回
B、參數(shù)異常
參數(shù)異常包括:參數(shù)為空,多參或少參,錯(cuò)誤的參數(shù)
C、數(shù)據(jù)異常
數(shù)據(jù)異常:數(shù)據(jù)類型錯(cuò)誤、非空參數(shù)為空,長(zhǎng)度不符合設(shè)計(jì),不在字典范圍內(nèi)的數(shù)據(jù),不合法的成員,特殊字符或敏感字符,存在關(guān)聯(lián)關(guān)系的參數(shù)數(shù)據(jù)異常等
接口測(cè)試前一般研發(fā)會(huì)提供接口設(shè)計(jì)文檔或業(yè)務(wù)相關(guān)的設(shè)計(jì)圖、流程圖,針對(duì)業(yè)務(wù)流程的處理邏輯,我們可以從入?yún)⒌南拗茥l件、事件的操作對(duì)象、業(yè)務(wù)的狀態(tài)轉(zhuǎn)換
A、 限制條件分析
數(shù)值的限制:字典,等級(jí),行業(yè)相關(guān)限制,金額限制,分?jǐn)?shù)限制等
狀態(tài)的限制:有效|無(wú)效,在線|離線,拉黑|洗白等
關(guān)系的限制:存在或不存在,綁定或解綁等
權(quán)限的限制:管理員,普通用戶等
B、 對(duì)象分析
對(duì)象分析主要是對(duì)合法和不合法的對(duì)象進(jìn)行操作,比如銀行卡用戶對(duì)卡進(jìn)行充值,則可能存在:用戶A使用非用戶A的卡充值;用戶A使用自己的卡進(jìn)行充值,卡已過(guò)有效期;用戶A使用自己的卡進(jìn)行充值,卡為黑名單或掛失等。
C、 狀態(tài)轉(zhuǎn)換的分析
比如支付類業(yè)務(wù),先支付成功,撤單后會(huì)退款,再次支付如果支付未成功,則是支付失敗,狀態(tài)之間的切換是否正常,未按正常業(yè)務(wù)順利進(jìn)行操作時(shí),狀態(tài)怎么顯示,是否可控,是否出現(xiàn)異常狀態(tài),空狀態(tài)業(yè)務(wù)怎么處理等
D、 時(shí)序分析
一些復(fù)雜的活動(dòng)中,一個(gè)活動(dòng)是由一系列的動(dòng)作按照指定順序進(jìn)行,這些動(dòng)作形成一個(gè)動(dòng)作流,是有按照這個(gè)順序依次執(zhí)行,才能等到預(yù)期的結(jié)果,那么在執(zhí)行過(guò)程中發(fā)生的其他分支動(dòng)作程序會(huì)作何處理
比如斑馬停車風(fēng)控業(yè)務(wù),如果在入站后車輛直接掉頭不駛?cè)敫咚贅I(yè)務(wù)如何處理?
在考慮異常時(shí),通常我們都會(huì)想到正常情況,無(wú)效的情況,但是不一定能覆蓋所有錯(cuò)誤碼,而接口定義返回的錯(cuò)誤碼可以幫助我們補(bǔ)充這一部分的用例,比如網(wǎng)絡(luò)異常,無(wú)效的規(guī)則,無(wú)效的參數(shù),無(wú)效的業(yè)務(wù)ID,無(wú)效的任務(wù),服務(wù)器異常等,把errorcode的值都補(bǔ)充上去可以設(shè)計(jì)更多的用例
這種根據(jù)輸出進(jìn)行設(shè)計(jì)用例,可以發(fā)現(xiàn)前后端是否正常輸出結(jié)果,提示是否友好,提示是否出現(xiàn)敏感信息等
A、對(duì)數(shù)據(jù)庫(kù)操作是否頻繁,是否會(huì)在寫(xiě)庫(kù)過(guò)程中占用大量的CPU,寫(xiě)庫(kù)完成后進(jìn)程是否釋放
B、業(yè)務(wù)數(shù)據(jù)入庫(kù)是否正常,是否有重復(fù)數(shù)據(jù)入庫(kù),是否出現(xiàn)亂碼;日志數(shù)據(jù)入庫(kù)是否正常
C、數(shù)據(jù)更新是否正常,尤其是時(shí)間類字段,時(shí)間是否為24小時(shí)制的格式
D、數(shù)據(jù)刪除、備份是否正常
敏感信息是否加密(如銀行賬號(hào),密碼,轉(zhuǎn)賬金額)
A、接口在什么情況下會(huì)出現(xiàn)并發(fā),并發(fā)場(chǎng)景是什么,什么情況下的并發(fā)會(huì)導(dǎo)致問(wèn)題
B、最大并發(fā),響應(yīng)時(shí)間,吞吐量,資源消耗情況
接口正常情況下是有返回的,那么如果接口不返回呢?所以接口超時(shí)后的處理也是測(cè)試需要考慮的部分,如果超時(shí)處理不當(dāng),可能會(huì)引起進(jìn)程阻塞,或者超時(shí)后又接收到接口返回導(dǎo)致邏輯錯(cuò)亂
已廢棄的協(xié)議或接口,代碼并未注釋,在某種特定的情況下可能會(huì)觸發(fā)歷史版本已廢棄的協(xié)議或接口,導(dǎo)致用戶使用或功能調(diào)用后出現(xiàn)意想不到的問(wèn)題,損失
同一套系統(tǒng),不同服務(wù)之間的接口相互調(diào)用時(shí),新接口是否受歷史接口的影響,尤其是新舊接口都對(duì)某一個(gè)功能進(jìn)行處理,是否存在業(yè)務(wù)不兼容的問(wèn)題
這一點(diǎn)需要測(cè)試人員是長(zhǎng)期的測(cè)試一個(gè)系統(tǒng)的,那么可能會(huì)想到這種場(chǎng)景,會(huì)清楚的知道什么時(shí)候哪個(gè)版本進(jìn)行了重構(gòu),廢棄了那些接口,新增了那些接口,哪些場(chǎng)景會(huì)觸發(fā)歷史接口的某個(gè)規(guī)則
接口字段是否冗余,接口是否返回了調(diào)用方期望得到的信息,接口定義是否滿足所有調(diào)用者的需求,接口調(diào)用是否方便,接口是否可擴(kuò)展,接口參數(shù)使用是否方便,接口的業(yè)務(wù)規(guī)則是否都正確,接口都整個(gè)服務(wù)的使用會(huì)產(chǎn)生那些影響
重磅消息: 由狂師老師授課主講的「全棧測(cè)試開(kāi)發(fā)技能訓(xùn)練營(yíng)」已經(jīng)開(kāi)課了,課程內(nèi)容非常值得推薦!課程大綱:重磅消息 | 2021年最新全棧測(cè)試開(kāi)發(fā)技能實(shí)戰(zhàn)指南(第2期)
END

長(zhǎng)按二維碼/微信掃碼 添加作者
閱讀原文

