qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          接口驗(yàn)證模式

           摘要:接口驗(yàn)證是軟件測試中一個(gè)重要的方面。本文按被測對象與周邊實(shí)體的消息處理關(guān)系將接口驗(yàn)證方式抽象成幾種模式:C模式、S模式、C&S模式、分發(fā)模式、異步模式等。然后按模式從接口契約定義、請求和響應(yīng)配合等方面,給出接口驗(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ù)請求
          ● S 模式:被測對象作為服務(wù)端接收請求,一般來說,流程終點(diǎn)的接口(例子中的M 部件)多數(shù)為S模式。

            基本驗(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ā)模式:需要將消息采用同步方式向其它多個(gè)部件進(jìn)行分發(fā),待消息收齊后才能決定自身的最終狀態(tài)。例:被 測對象通過分發(fā)部件將數(shù)據(jù)同步分發(fā)給不同的部件。需要說明的是:圖示中的分發(fā)部件,這時(shí)從物理上來說,可能看到的只是一個(gè)部件,由它統(tǒng)一接受和分發(fā)消息, 但從邏輯上來說,它是代表了不同部件的接口處理的。

            對于分發(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。

          對于異步分發(fā)模式,也即異步+分發(fā)模式的組合。此時(shí)被測對象涉及到2 種類型的消息配合:同一個(gè)部件的通知和回執(zhí)的組合;不同部件間的消息處理結(jié)果的配合。由此,被測對象的狀態(tài)遷移會更為復(fù)雜些。

            以圖示為例,被測對象的驗(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)注與外部部件間的接口對接測試。

          posted on 2012-07-18 09:53 順其自然EVO 閱讀(1831) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2012年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 西城区| 阜南县| 漳浦县| 汽车| 阿克苏市| 富锦市| 突泉县| 宁夏| 龙陵县| 高尔夫| 彭阳县| 合山市| 莎车县| 穆棱市| 广东省| 施甸县| 临洮县| 江阴市| 长沙县| 九龙坡区| 临城县| 仙居县| 沽源县| 留坝县| 东兰县| 玉林市| 罗定市| 连城县| 涞源县| 株洲市| 绥德县| 赣州市| 丁青县| 定南县| 宣汉县| 乌鲁木齐市| 板桥市| 文水县| 荆门市| 高唐县| 长阳|