接口驗(yàn)證模式
關(guān)鍵詞:接口驗(yàn)證 測試模式 協(xié)議一致性
1、相關(guān)概念
1.1 接口
這里所說的接口主要是指的是消息接口,是二個(gè)部件之間的通信契約,有發(fā)送方、接收方等方面的屬性,同GUI接口、文件接口一樣,它本質(zhì)上屬于一種輸入、 輸出方式,只是它涉及到2個(gè)不同部件/實(shí)體,有請求/響應(yīng)、有連接通道要求,由此帶來超時(shí)、重發(fā)、重連等方面的一系列要求。
1.2 接口、流程、處理的關(guān)系
一個(gè)流程由一系列的處理、接口調(diào)用組成。
一個(gè)流程可能涉及多個(gè)不同部件,涉及多個(gè)不同的接口調(diào)用。
一個(gè)接口可能服務(wù)于多個(gè)流程,多個(gè)流程共用同一個(gè)接口。由此,接口驗(yàn)證里需要對同一個(gè)接口遍歷不同的流程調(diào)用場景。
接口作為數(shù)據(jù)的一種形式,它影響流程的走向。
接口作為數(shù)據(jù)的一種形式,它影響流程的結(jié)果。
有些接口處理可能是純接口的、只做中轉(zhuǎn)、協(xié)議轉(zhuǎn)換等。例:下面例子中的E部件接口;有些接口處理可能有較強(qiáng)的功能邏輯,根據(jù)需要可能還會進(jìn)一步細(xì)化成內(nèi)部接口。由此,接口驗(yàn)證可能需要針對接口處理作進(jìn)一步的功能邏輯驗(yàn)證。
2、一個(gè)例子
以下為某個(gè)處理的簡化流程。P部件發(fā)出請求,E部件協(xié)議轉(zhuǎn)換后轉(zhuǎn)發(fā)給M部件,M部件進(jìn)業(yè)務(wù)邏輯處理后返回響應(yīng)給E部件。
接口的測試設(shè)計(jì)思路:
● 列出與每個(gè)部件的交互點(diǎn)。 包括:與P 部件的交互點(diǎn)1.1~1.2;與E 部件的交互點(diǎn)2.1~2.4;與M部件的交互點(diǎn)3.1~3.2
● 對每個(gè)部件的每個(gè)交互點(diǎn)進(jìn)行正常與異常方面的驗(yàn)證。
字體: 小 中 大 | 上一篇 下一篇 | 打印 | 我要投稿
3、接口驗(yàn)證模式
3.1 基本模式
● C模式:被測對象作為客戶端發(fā)送請求消息。一般來說,流程起點(diǎn)的接口(例子中的P部件接口)多數(shù)為C模式。
基本驗(yàn)證要求:
◇ 發(fā)送請求消息正確性。包括:協(xié)議、消息格式、各參數(shù)驗(yàn)證。
◇ 響應(yīng)消息字段、錯(cuò)誤碼遍歷。確認(rèn)根據(jù)對端不同響應(yīng)作了相應(yīng)的正確處理。比如:根據(jù)錯(cuò)誤碼展示
正確的錯(cuò)誤提示也為一種正確處理方式。
進(jìn)一步驗(yàn)證要求:
◇ 考慮接口請求和響應(yīng)配合上的異常,包括:
——請求發(fā)送異常:發(fā)送失敗、失敗重發(fā)。
——響應(yīng)接受異常:無響應(yīng)、響應(yīng)超時(shí)、超時(shí)重發(fā)、收到重復(fù)請求基本驗(yàn)證要求:
◇ 收到的請求消息參數(shù)合法性校驗(yàn)。包括:
——協(xié)議、消息格式的驗(yàn)證、非系統(tǒng)識別消息、存在非法字段、收到重復(fù)消息
——遍歷各字段進(jìn)行參數(shù)合法性校驗(yàn):是否可選、唯一性、類型、取值范圍、長度(<、=、>)等
◇ 遍歷請求消息的各字段取值及組合,確認(rèn)根據(jù)不同輸入返回了不同的結(jié)果(可以等價(jià))
◇ 發(fā)出響應(yīng)消息正確性:協(xié)議、消息格式、各參數(shù)驗(yàn)證等。
S&C 模式:被測對象既作為服務(wù)端接收請求又作為服務(wù)端發(fā)送請求。一般來說,流程中點(diǎn)(例子是的E 部件)多數(shù)為S&C 模式。
如果將周邊部件1 作為被測對象一部分,它即是C
如果將周邊部件2 作為被測對象一部分,它即是S
基本驗(yàn)證要求:除了C 模式和S 模式的基本驗(yàn)證要求,考慮對不同消息間相關(guān)參數(shù)一性性進(jìn)行校驗(yàn)。
例:R1 接口中X 參數(shù)取值為1-255,經(jīng)過轉(zhuǎn)換后的R2 接口中相應(yīng)的X 參數(shù)取值也應(yīng)為1-255。
進(jìn)一步驗(yàn)證要求:參見C 模式和S 模式中的進(jìn)一步驗(yàn)證要求。
3.2 復(fù)合模式
● 異步模式:被測對象發(fā)出消息后,對端立即響應(yīng),對端在處理結(jié)束后再發(fā)送回執(zhí)消息給部件,部件根據(jù)對端所給出的消息作出相應(yīng)的處理,流程結(jié)束。一般來說,如果對端處理較為復(fù)雜、為避免被測對象長時(shí)間被阻塞,會采用此通信方式。
對于異步模式,可以拆分為2 對消息,但這2 對消息是基于事務(wù)、有狀態(tài)的。因此,對這類消息的驗(yàn)證除了基本模式C 和S 的驗(yàn)證要求外,還需要考慮2 對消息關(guān)系的配合對被測對象的狀態(tài)影響驗(yàn)證。
以圖示為例,被測對象的驗(yàn)證內(nèi)容包括:
◇ 對A 接口的驗(yàn)證。參見C 模式
◇ 對B 接口的驗(yàn)證。參見S 模式
◇ A 和B 接口的配合:
條件:A 接口處理失敗、未收到B 接口消息、B 接口處理失敗、B 接口處理成功
結(jié)果:被測對象的狀態(tài)、數(shù)據(jù)
對于分發(fā)模式一般也是基于事務(wù)、有狀態(tài)的,但由于涉及到了2 個(gè)以上的周邊部件,還需要考慮對不同部件的接口消息處理結(jié)果進(jìn)行結(jié)合。
以圖示為例,被測對象的驗(yàn)證內(nèi)容一般包括:
◇ 對A 接口的驗(yàn)證。(參見C 模式)
◇ 對B 接口的驗(yàn)證。(參見C 模式)
◇ 對部件1 和部件2 處理結(jié)果結(jié)合驗(yàn)證:
條件:1 成功2 成功;1 成功2 失?。? 失敗2 成功;1 失敗2 失敗
結(jié)果:被測對象的狀態(tài)、數(shù)據(jù)
● 異步分發(fā)模式:即采用異步方式進(jìn)行消息分發(fā),為異步和分發(fā)模式的結(jié)合。比較 典型的是數(shù)據(jù)同步異步接口。被測對象 通過分發(fā)部件 同時(shí)將數(shù)據(jù)同步消息通知分發(fā)給不同的部件,各個(gè)不同部件收到通知后再向被測對象請求獲取同步數(shù)據(jù)。如果通知有優(yōu)先級,例:部件1> 部件2,待部件1 處理完再通知部件2,即為異步分發(fā)模式1。如果多個(gè)部件的分發(fā)并行執(zhí)行(一般來說,部件1 和部件2 可能代表的是同類部件的不同物理實(shí)例),即為異步分發(fā)模式2。
以圖示為例,被測對象的驗(yàn)證內(nèi)容包括:
◇ 對A 接口的驗(yàn)證。(參見C 模式)
◇ 對B 接口的驗(yàn)證。(參見S 模式)
◇ 對C 接口的驗(yàn)證。(參見C 模式)
◇ 對D 接口的驗(yàn)證。(參見D 模式)
◇ 對A 和B 接口的配合驗(yàn)證。(參見異步模式)
◇ 對C 和D 接口的配合驗(yàn)證。(參見異步模式)
◇ 對部件1 和部件2 處理結(jié)果組合驗(yàn)證。(參見分發(fā)模式)
4、相關(guān)說明
● 參數(shù)合法性檢驗(yàn)策略
如果業(yè)務(wù)流程涉及多次轉(zhuǎn)發(fā),原則上由邏輯處理部件進(jìn)行接口參數(shù)的強(qiáng)校驗(yàn);其它轉(zhuǎn)發(fā)部件(例:E部件)進(jìn)行弱校驗(yàn)。
消息序列驗(yàn)證
如果不同的接口消息之間是基于事務(wù)、有狀態(tài)的,則還需要考慮消息序列異常的問題,無論是何種模式。其驗(yàn)證點(diǎn)包括:消息亂序、少傳消息包、多傳消息包、傳重復(fù)消息包、事務(wù)超時(shí)后收到消息等。
接口可靠性保證
◇ 對于重發(fā)的驗(yàn)證,一般來說,重發(fā)機(jī)制中需要有重發(fā)策略、重發(fā)次數(shù)方面的考慮,不能出現(xiàn)消息反復(fù)重發(fā)引發(fā)消息風(fēng)暴的問題。
◇ 對于超時(shí)的驗(yàn)證,需要考慮各部件超時(shí)配置不一致的問題。
◇ 對于處理失敗造成雙方數(shù)據(jù)不一致問題,需要有事務(wù)號、回滾或補(bǔ)償機(jī)制等方面的設(shè)計(jì)考慮。
● 接口驗(yàn)證的不同階段
對于接口驗(yàn)證在單部件測試、點(diǎn)-點(diǎn)接口聯(lián)調(diào)、E2E聯(lián)合測試等不同階段都有所涉及。一般來說:
單部件測試:理論上通過測試樁可以模擬對端各種情況,對于真實(shí)實(shí)體只能通過系統(tǒng)狀態(tài)預(yù)置、輸入數(shù)據(jù)從外部觸發(fā)。所以,能在單部件測試考慮的盡可能放到單部件去做,至少保證單部件自身是OK的。
點(diǎn)-點(diǎn)接口聯(lián)調(diào):如果將2個(gè)部件看作一個(gè)整體的話,則相當(dāng)于單部件測試。對于部件-部件間的接口無法通過測試樁來模擬,需要通過外部驅(qū)動輸入。另外還需要關(guān)注部件-部件間的網(wǎng)絡(luò)連接,包括:是否可正常建立連接、連接中斷后是否會重連、連接吊死與釋放、時(shí)斷時(shí)續(xù)等。
E2E聯(lián)合測試:所有內(nèi)部部件均為真實(shí)實(shí)體,對于接口間配合的問題(例:事務(wù)或數(shù)據(jù)一致性問題)可以考慮放到此考慮。除此還需要關(guān)注與外部部件間的接口對接測試。