《MFQ&PPDCS》實踐--Modeling---S-state在ARP協議測試中的應用

一.實踐思路:

ARP是TCP/IP協議棧中最經典和基礎的協議之一,它是一個有狀態的協議。搞清楚ARP協議在實現的上下文,以協議的狀態爲分析視角是對ARP協議測試設計的一個不錯的思路。當然同一個被測對象可以採用多種不同的設計對其進行測試分析和設計,這裏沒有絕對和最優的最優的答案。

二.實踐過程:

2.1走讀代碼瞭解ARP協議在產品實現中所處的上下文環境:

Arp協議在產品實現中所處的上下文環境(整體架構,子系統、模塊之間的協作關係等)
……略(此處不便展開具體介紹)

2.2 梳理ARP協議狀態機:

ARP協議在產品實現中定義了五種協議狀態:ARP_CLEAR、ARPF_WAITING、ARPF_INUSE、ARPF_ALWAYS_USE及ARPF_NOQUEUE。其中ARPF_NOQUEUE狀態在目前的實現中基本上沒有使用,爲了便於理解,我自行定義了NULL這個狀態。那麼協議狀態機如下圖所示:
這裏寫圖片描述
經過代碼的學習和走讀,得到如下的協議轉換關係:

  • NULL(ARP實例未創建狀態)狀態的遷移:

1) NULL->NULL狀態保持:
a) 收到並非請求本段IP地址的Arp Request。
b) 收到請求本段IP地址的Arp Request,但Sender處於非相同子網。
c) 收到target並非本端IP的Arp Reply
d) 收到target爲本端IP的Arp Reply,但Sender處於非相同子網。

2) NULL->ARPF_ALWAYS_USE:
增加IP地址配置,爲IP地址創建持久的ARP條目。

  • ARPF_CLEAR(暫態):

1) ARPF_CLEAR->NULL
當學習新ARP條目時,狀態爲ARPF_CLEAR的ARP條目當調用arp_find_free接口進行ARP實例分配時會被新的ARP實例所替換,此時老的ARP實例相當於狀態就不存在了,即爲NULL。

2) ARPF_CLEAR->ARPF_INUSE
對於被動接收ARP Request或ARP Reply 進行學習NULL->ARPF_CLEAR的ARP條目,狀態直接轉換到ARPF_INUSE。後續通過ARP Ageing Time老化時間對其進行維護。ARPF_CLEAR只作爲暫態。

3) ARPF_CLEAR -> ARPF_WAITING
在報文主動發送時會發送Arp Request 嘗試進行解析,報文開始發送時狀態轉換爲爲ARPF_WAITING。

  • ARPF_WAITING 狀態的遷移

1) ARPF_WAITING -> ARPF_WAITING
在報文主動發送時會發送Arp Request 嘗試進行解析,在等待迴應和4次重傳期間狀態會保持在ARPF_WAITING。

2) ARPF_WAITING-> ARPF_CLEAR
在報文主動發送時會發送Arp Request 嘗試進行解析,在等待迴應和4次重傳依然請求失敗,狀態會回退到ARPF_CLEAR。

3) ARPF_WAITING->ARPF_INUSE
在報文主動發送時會發送Arp Request 嘗試進行解析,在等待迴應和4次重傳期間收到對應的Arp Reply狀態置爲ARPF_INUSE。

  • ARPF_INUSE

1) ARPF_INUSE-> ARPF_INUSE
在ARP Ageing Time週期內正常收到匹配Arp條目的報文。ARPF條目保持ARPF_INUSE

2) ARPF_INUSE -> ARPF_WAITING
超過ARP Ageing Time還未收到匹配ARP條目的報文。 即ARP老化狀態回退爲ARPF_WAITING。

  • ARPF_ALWAYS_USE 狀態的遷移

1) ARPF_ALWAYS_USE-> ARPF_ALWAYS_USE狀態保持
IP配置未被刪除時對應的靜態ARP條目時鐘保持,不受ageing time的影響。

2) ARPF_ALWAYS_USE->ARPF_CLEAR
刪除IP地址,同時會將對應的ARP條目狀態置爲ARPF_CLEAR。

2.3協議相關的其他:

學習其他ARP相關的實現要素,如:
ARP的定時器超時處理流程;IPv4通用收發包流程;ARP收發流程;ARP相關數據結構。此處不便不展開細緻介紹。

2.4 ARP FT測試建模:

2.4.1測試模型的選擇:

MFQ測試設計在TD階段定義了5PPDCS種常用的測試模型: P-Process(流程)、P-Parameter(參數)、D-Data(數據)、C-combination (組合)、S-State(狀態)。其中S-State是一種基於被測狀態來建模的方法,對有“狀態”的被測對象十分有效。根據被測對象的狀態遷移條件進行覆蓋。在測試狀態遷移邏輯的同時也會測試到被測對象的功能。
ARP是有狀態的協議,S-State模型進行測試建模有着天然的優勢,故本次實踐採用S-State的模型進行建模。

2.4.2 S-State測試建模:

首先,我們給上一章給出的ARP狀態遷移圖中的每個狀態和遷移事件進行編號,得到新的狀態圖,這個新的狀態圖也是測試模型的一部分,如下所示:
這裏寫圖片描述

通過上面的狀態遷移圖,我們又可以梳理出如下的狀態遷移表:
這裏寫圖片描述
上述的狀態圖和狀態表即是S-State的測試設計模型,它和設計模型應該是高度一致的。從ARP功能測試的角度來說,對於狀態遷移表中的每一個Events的覆蓋就是基於狀態機測試應該覆蓋的基礎用例。但是我們需要明確,任意一種模型只能從一個維度去覆蓋,不要寄希望於採用了某一種模型就能達到無遺漏覆蓋的目的。在基於Events覆蓋的基礎上可以再添加一些其他類型的測試,比如狀態連續遷移的測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章