郭清菊 王磊



摘要:隨著網絡通訊技術的飛速發展,通訊協議的規范性嚴重制約著網絡交互和通訊服務的質量。協議測試的地位也越發顯得重要。本文針對協議測試中的一致性測試和互操作性測試內容進行理論分析,對比兩種測試的差異,并明確兩者關系以及在協議測試中的重要作用,研究結果能夠為實際的測試執行提供選擇依據。
關鍵詞:協議規范;協議測試;一致性測試;互操作性測試;被測實現
中圖分類號:TP391.41 文獻標識碼:A DOI:10.3969/j.issn.1003 6970.2016.05.028
本文著錄格式:郭清菊,王磊.協議測試技術分析與研究[J].軟件,2016,37(5):115-118
0.引言
隨著計算機技術和網絡通訊技術的快速發展,計算機網絡的復雜性和高質量要求的不斷提高,網絡通訊協議從中起到了不可代替的作用。網絡通訊協議是指在計算機網絡與通訊網絡中各種實體相互交換信息時必須遵守的規范集合,其規范行性嚴重制約著網絡交互和通訊服務的質量,這意味著協議軟件是否滿足協議的規范是保證通訊系統正常運行和順利開展業務首要保證。雖然國際上各類機構和學術組織也制定了各種各樣的網絡協議規范和標準,但是隨著近年來分布式計算機網絡結構日趨復雜在協議方面表現出多種形態,如不穩定性、多樣性等等,嚴重影響到網絡軟件的可靠性和可維護性,因此,協議工程產生,它是一個系統化的完整、規范和可靠的工程,其中,協議測試成為了這工程中的重要部分。
與軟件測試在軟件工程中的作用一樣,協議測試是協議工程中的一個重要組成部分,是保證協議工程質量的重要技術和舉措。協議測試的目的就是為了保證一個標準化協議的不同實現之間能夠成功地進行通信。協議測試屬于黑盒測試,它主要評估被測實現(IUT,Implementation Under Test)的外部行為是否符合協議的標準。協議測試包括四個方面:
●一致性測試:檢查被測實現與協議規范是否一致。
●性能測試:檢查系統的性能指標,如:數據傳輸、連接時間、執行速度以及吞吐量等,一般通過實驗來觀測被測實現IUT的一些性能參數。
●互操作性測試:檢查被測實現在各個版本之間的互連操作性和互通能力。
●魯棒測試:檢查系統的健壯性,在各種嚴重環境下,如斷絕通道,切斷通信節點的電源或注入干擾消息等操作時的運行能力的檢測。
本文接下來重點討論協議一致性測試和互操作性測試的方法和策略。
1.協議一致性測試
在協議測試的內容中,一致性測試是目前唯一可以給出明確理論框架和方法的一種測試,協議一致性測試是其他測試的基礎和關鍵部分,它屬于功能性黑盒測試的范疇,只關注外部行為表現而非具體的通訊連接細節,即:依據協議,測試者對被測實現(IUT)發送一系列外部刺激,觀察并判定被測實現的外部響應,其目的就是確認被測實現是否與標準一致,以此來減少運行時的錯誤風險,屬于功能性測試范疇。
ISO/IEC9646提供了協議一致性測試的基本方法和框架,主要用于OSI協議測試,為測試集制定了設計步驟和描述方法,同時為測試系統的實現提高了指導。接下來,研究主要從測試方法的構建和測試序列生成兩個方面進行。
1.1構建測試方法
協議一致性測試主要解決被測協議實體與協議規范一致性的問題。換句話說,協議一致性測試是根據協議的標準文本描述對被測實現IUT進行外部行為觀測,以判定此實現與所對應的協議標準是否一致。
一致性要求分為靜態一致性和動態一致性,靜態一致性要求是指被測實現在運行時與規范一致所具備的最小功能,而動態一致性要求則是指被測實現在外部刺激下與規范一致性所必須表現出的行為,可以分為本地測試、分布式測試以及遠程協同測試等多種方式。測試完成后給出判定測試報告,對其在測試執行過程中產生的測試日志文件進行分析、判定,生成符合規范的一致性測試報告,分為:通過(Pass)、失敗(fall)和不確定(Inconclusive)三種結果。
ISO/IEC9646提供了協議一致性測試的基本方法和框架,規定協議一致性測試標準包括:抽象測試集(ATS)、協議實現一致性說明(PICS)和協議實施附加信息(PIXIT)三部分,圖1說明了其測試的基本框架和過程。
1.2生成測試序列的方法
通過圖1可知,在一致性測試過程中,主要分為測試生成和測試執行兩個主要的階段。測試生成的目的是生成測試執行的測試序列(集);測試執行則是完成測試和生成測試判定報告。由此可以看出,測試序列的生成時一致性測試的關鍵環節。測試序列是在用形式化描述的協議抽象測試集(ATS)合中抽取的一組符合代表輸入事件的符號標識序列,轉換成可執行測試集(ETS),是協議一致性測試中的關鍵步驟和核心數據,一般通過協議模型,我們獲取測試序列,表述被測實現應該具備的邏輯行為。通常通訊協議中的形式化規范模型有:FSM(Finite State Model)有限狀態機模型、Peter網模型、TL(Temporal Logic Model)時序邏輯模型和CCS(Calculus of Communication System Model)通訊進程演算模型等四種模型,其中由于具備描述直觀、清晰的特點,FSM和peter網廣泛用于大型復雜的協議,而TL和CCS則經常被用于驗證并發系統的協議驗證中。ISO提供2種形式化規范標準描述語言:Estelle和Lotos,分別基于擴張的FSM和CCS,ITU2T組織也發布了一種基于擴展的FSM的SDL語言。
在目前的協議一致性測試中,比較成熟的生成測試序列算法大都是基于FSM模型的,FSM模型被廣泛用在分布式系統中,用來描述有限機從一種狀態過渡到另一種狀態的數學模型。FSM可以抽象地描述獨立進程的運行狀態,但是必須具備四個條件:所有被測實現系統的狀態數、輸入,輸出事件數都必須是有限、確定的;所有被測實現系統必須是完整的;對于有限輸入的事件數必須能夠在給定的時間內產生有限的輸出事件;被測實現系統的每個狀態必須是可達的連通圖。基于FSM的測試生成序列的方法有四種:
(1)T方法:是一種最簡單的基于FSM模型的生成測試序列的方法。測試輸入序列隨機對應的正式規范的狀態轉變,直到所有的狀態轉換都包括在內。T法的目的是找到可以保證至少一次走訪所有轉換,這是類似中國郵遞員投遞問題,如何在最短的時間遍歷每個投遞點,但是T方法會產生冗余輸人,盡管T方法可以檢測所有輸出的錯誤,但不保證所有的傳輸錯誤可被檢測,由此錯誤檢測能力較弱。
(2)D方法:是一種構造可區分序列DS(Distinguishing Sequence)到FSM,然后生成若干測試輸入序列。相對于輸出序列,每一個DS都是獨一無二的。D方法的目的是找出故障點,并產生一個小數目的測試用輸入序列。然而,并非所有的FSM可以有一個DS中,同時難以優化,而且每個序列長度很長。因此,限制使用D方法。
(3)w方法:w法生成的特征集的FSM,構建基于所述特征集的輸入序列。該特征集可以識別FSM的每個狀態。w法包括兩個輸入序列設置:w和P,w是最小特征集。P包括所有檢測路徑。根節點是初始狀態,每個轉變只出現一次。但用這種方法產生的測試輸入序列的長度很長,使得檢測效率是在實際應用中的偏低。
(4)u方法:u方法的前提是給定的FSM應該是最小的、強連接的和完整的。u方法針對FSM的每一個狀態生成一個獨特唯一的序列,由此稱之為唯一輸人/輸出序列(UIO)。根據此UIO生成測試輸入序列。在該方法中,如果FSM不存在UIO,那么FSM就不能建立測試輸入序列。目前,針對u方法也有一些改進的新方法,如SUIO、MUIO、OUIO、FUIO以及BUIO等等,各有優勢和特點。
從測試序列的長度的觀點出發來看,在上述方法中,T法生成的最短測試序列長度,w方法生成的最長。在相同條件下,D的方法和w方法要比u方法更長;而從故障覆蓋率來看,T方法的覆蓋率最低,u方法、D方法和w方法幾乎相同,由于大多數情況的FSM有UIO,因此,u方法能檢測出所有的輸出缺陷,結合上述因素,u法是在廣泛使用在目前的實際測試中。
2.協議互操作性測試
協議互操作性測試是評價相同協議的不同實現或同類協議在不同被測實現之間能否正確的互通并完成協議規范所規定的功能。在協議測試中,協議一致性測試是基礎和保障,也是測試的關鍵過程,目的是檢測被測實現與協議規范是否一致,但是,協議一致性測試也不可能完全詳盡和覆蓋,面對這個困難和挑戰,互操作性測試可以對一致性測試做進一步的補充,其主要作用就是保證通訊產品互通的性。
在協議互操作性測試中,測試的形式基本都是測試者分別對認可設備和被測設備進行操作,這些設備包括:單個或若干個網絡設備、終端設備或者是一些應用軟件之類的被測試單位選擇認可的設備。在測試過程中,仍然屬于黑盒測試,測試者或用戶只關心設備是否符合協議規范中定義的功能,并不關心協議互通時的細節。
互操作性測試應分為兩部分:制定協議互操作性測試規范和具體執行協議互操作性測試。
(1)制定協議互操作性測試規范
為了更好的執行測試,必須首先制定測試規范,該過程是互操作性測試的關鍵和核心,也是決定測試成功與否的標準。制定規范與協議一致性測試規范類似,但是側重點應主要關注測試功能。流程如圖2所示。
(2)執行協議互操作性測試
有了測試規范,具體測試過程就變得簡單容易,準備測試、測試執行以及測試報告三個步驟,這個過程與協議一致性測試的過程基本類似,此處不再贅述。在執行的過程中,如何自動化生產測試集,如何保證測試集的完備性都是測試成功的主要因素,都是目前需要進一步探究的問題。
在協議測試的發展過程中,國際相關的標準組織如ISO也制定了一系列的標準,ISO/IEC9646、ETSI ETS300 406規范等等,主要是針對協議一致性的測試方法框架。但是隨著通訊網絡技術的迅速發展,新的協議也越來越復雜、多樣,協議一致性測試的相關研究面臨著困境和巨大的挑戰。互操作性測試在協議測試的過程能夠提供重要的互通信息,因此關于互操作性測試的研究也越來越受到關注和重視。但目前也停留在理論化的階段,其深入性和標準化還需要逐步的深入探究。
3.協議一致性測試與互操作性測試的比較
在協議測試中,協議一致性測試與互操作性測試都是測試協議是否實現的重要而關鍵的有效驗證方法,但是在測試的對象、范圍和所扮演的角色中又所不同,一致性測試可以判定被測實現是否符合協議規范,但不能保證被測協議實現間的互連互通,反過來,互操作性測試可以判定協議見的互操作性,也無法完全保證協議是否符合規范。因此,一致性測試不能覆蓋和詳盡的地方,互操作性測試又可以進行補充,兩者在具體測試實施過程中可以互相借鑒和參考,前者是基礎和前提,是后者進行實施的必要條件,后者是具體實現,更能貼近真實的網絡環境中,具有廣泛的意義。表1對比了兩者的異同點。
4.結束語
協議測試是一種功能性的黑盒測試,是目前計算機網絡與通訊發展中協議驗證過程不可缺的環節之一,在協議工程中的占有不可缺的重要地位。其中,協議一致性測試和協議互操作性測試又是其中最重要的保障,相輔相成,不可分割。而在實際測試的應用過程中,測試序列的產生與選擇又直接關系到測試的成效,以上所述內容僅是對測試的方法進行了理論的探究,具體的實施并非文章描述的這么簡單,必須結合實際的案例具體分析,給出盡可能詳盡、完備的策略和高效算法,但可以對于我們了解協議測試的流程和在具體進行實施測試提供課參考的理論基礎和評價標準。