服務(wù)端的接口測試我們一般從功能開始進(jìn)行測試闽铐,比如請求參數(shù)和響應(yīng)參數(shù)的校驗,業(yè)務(wù)邏輯或業(yè)務(wù)規(guī)則的校驗县爬,數(shù)據(jù)庫操作的校驗阳啥。功能正常后會根據(jù)需要進(jìn)行安全相關(guān)的檢查添谊、性能測試以及系列擴(kuò)展測試财喳,比如與歷史版本的兼容性測試、接口的超時驗證以及設(shè)計合理性驗證等斩狱,用例設(shè)計也是從這幾個方面進(jìn)行分析設(shè)計耳高,下面的思維導(dǎo)圖是一個概要的測試關(guān)注方向:
詳細(xì)介紹如下:
針對輸入
輸入主要是指接口的入?yún)ⅲ覀兤匠5臏y試中所踊,會先考慮正常的入?yún)⒚谇梗约爱惓5娜雲(yún)ⅲ惓G闆r包括:參數(shù)異常和數(shù)據(jù)異常秕岛,用例設(shè)計這塊使用較多的是等價類劃分和邊界值分析
A碌燕、正常的入?yún)?/p>
正常的入?yún)⒑芎美斫猓褪歉鶕?jù)接口設(shè)計文檔的入?yún)?biāo)準(zhǔn)继薛,輸入正常的參數(shù)修壕,響應(yīng)按接口設(shè)計文檔的約定條件正常返回
B、參數(shù)異常
參數(shù)異常包括:參數(shù)為空遏考,多參或少參慈鸠,錯誤的參數(shù)
C、數(shù)據(jù)異常
數(shù)據(jù)異常:數(shù)據(jù)類型錯誤灌具、非空參數(shù)為空青团,長度不符合設(shè)計譬巫,不在字典范圍內(nèi)的數(shù)據(jù),不合法的成員督笆,特殊字符或敏感字符芦昔,存在關(guān)聯(lián)關(guān)系的參數(shù)數(shù)據(jù)異常等
針對處理邏輯
接口測試前一般研發(fā)會提供接口設(shè)計文檔或業(yè)務(wù)相關(guān)的設(shè)計圖、流程圖娃肿,針對業(yè)務(wù)流程的處理邏輯烟零,我們可以從入?yún)⒌南拗茥l件、事件的操作對象咸作、業(yè)務(wù)的狀態(tài)轉(zhuǎn)換
A锨阿、 限制條件分析
數(shù)值的限制:字典,等級记罚,行業(yè)相關(guān)限制墅诡,金額限制,分?jǐn)?shù)限制等
狀態(tài)的限制:有效|無效桐智,在線|離線末早,拉黑|洗白等
關(guān)系的限制:存在或不存在,綁定或解綁等
權(quán)限的限制:管理員说庭,普通用戶等
B然磷、 對象分析
對象分析主要是對合法和不合法的對象進(jìn)行操作,比如銀行卡用戶對卡進(jìn)行充值刊驴,則可能存在:用戶A使用非用戶A的卡充值姿搜;用戶A使用自己的卡進(jìn)行充值,卡已過有效期捆憎;用戶A使用自己的卡進(jìn)行充值舅柜,卡為黑名單或掛失等。
C躲惰、 狀態(tài)轉(zhuǎn)換的分析
比如支付類業(yè)務(wù)致份,先支付成功,撤單后會退款础拨,再次支付如果支付未成功氮块,則是支付失敗,狀態(tài)之間的切換是否正常诡宗,未按正常業(yè)務(wù)順利進(jìn)行操作時滔蝉,狀態(tài)怎么顯示,是否可控僚焦,是否出現(xiàn)異常狀態(tài)锰提,空狀態(tài)業(yè)務(wù)怎么處理等
D、 時序分析
一些復(fù)雜的活動中,一個活動是由一系列的動作按照指定順序進(jìn)行立肘,這些動作形成一個動作流边坤,是有按照這個順序依次執(zhí)行,才能等到預(yù)期的結(jié)果谅年,那么在執(zhí)行過程中發(fā)生的其他分支動作程序會作何處理
比如斑馬停車風(fēng)控業(yè)務(wù)茧痒,如果在入站后車輛直接掉頭不駛?cè)敫咚贅I(yè)務(wù)如何處理?
針對輸出
在考慮異常時融蹂,通常我們都會想到正常情況旺订,無效的情況,但是不一定能覆蓋所有錯誤碼超燃,而接口定義返回的錯誤碼可以幫助我們補(bǔ)充這一部分的用例区拳,比如網(wǎng)絡(luò)異常,無效的規(guī)則意乓,無效的參數(shù)樱调,無效的業(yè)務(wù)ID,無效的任務(wù)届良,服務(wù)器異常等笆凌,把errorcode的值都補(bǔ)充上去可以設(shè)計更多的用例
這種根據(jù)輸出進(jìn)行設(shè)計用例,可以發(fā)現(xiàn)前后端是否正常輸出結(jié)果士葫,提示是否友好乞而,提示是否出現(xiàn)敏感信息等
數(shù)據(jù)庫操作
A、對數(shù)據(jù)庫操作是否頻繁慢显,是否會在寫庫過程中占用大量的CPU爪模,寫庫完成后進(jìn)程是否釋放
B、業(yè)務(wù)數(shù)據(jù)入庫是否正常鳍怨,是否有重復(fù)數(shù)據(jù)入庫呻右,是否出現(xiàn)亂碼跪妥;日志數(shù)據(jù)入庫是否正常
C鞋喇、數(shù)據(jù)更新是否正常,尤其是時間類字段眉撵,時間是否為24小時制的格式
D侦香、數(shù)據(jù)刪除、備份是否正常
安全性
敏感信息是否加密(如銀行賬號纽疟,密碼罐韩,轉(zhuǎn)賬金額)
性能相關(guān)
A、接口在什么情況下會出現(xiàn)并發(fā)污朽,并發(fā)場景是什么散吵,什么情況下的并發(fā)會導(dǎo)致問題
B、最大并發(fā),響應(yīng)時間矾睦,吞吐量晦款,資源消耗情況
接口超時
接口正常情況下是有返回的,那么如果接口不返回呢枚冗?所以接口超時后的處理也是測試需要考慮的部分缓溅,如果超時處理不當(dāng),可能會引起進(jìn)程阻塞赁温,或者超時后又接收到接口返回導(dǎo)致邏輯錯亂
與歷史版本的兼容性分析
已廢棄的協(xié)議或接口坛怪,代碼并未注釋,在某種特定的情況下可能會觸發(fā)歷史版本已廢棄的協(xié)議或接口股囊,導(dǎo)致用戶使用或功能調(diào)用后出現(xiàn)意想不到的問題袜匿,損失
同一套系統(tǒng),不同服務(wù)之間的接口相互調(diào)用時稚疹,新接口是否受歷史接口的影響沉帮,尤其是新舊接口都對某一個功能進(jìn)行處理,是否存在業(yè)務(wù)不兼容的問題
這一點(diǎn)需要測試人員是長期的測試一個系統(tǒng)的贫堰,那么可能會想到這種場景穆壕,會清楚的知道什么時候哪個版本進(jìn)行了重構(gòu),廢棄了那些接口其屏,新增了那些接口喇勋,哪些場景會觸發(fā)歷史接口的某個規(guī)則
接口設(shè)計合理
接口字段是否冗余,接口是否返回了調(diào)用方期望得到的信息偎行,接口定義是否滿足所有調(diào)用者的需求川背,接口調(diào)用是否方便,接口是否可擴(kuò)展蛤袒,接口參數(shù)使用是否方便熄云,接口的業(yè)務(wù)規(guī)則是否都正確,接口都整個服務(wù)的使用會產(chǎn)生那些影響妙真。
備注:此文章轉(zhuǎn)載于?服務(wù)端接口測試小結(jié) (qq.com)?缴允。