馬曉奇
●(遼寧省電力有限公司,沈陽 110005)
通信協(xié)議一致性測試研究
馬曉奇
●(遼寧省電力有限公司,沈陽 110005)
隨著計算機網絡的發(fā)展,通信協(xié)議的測試越來越重要。雖然已經對此做了大量的研究,但是仍然沒有給出系統(tǒng)有效的解決辦法。通信協(xié)議的一致性測試是通信協(xié)議測試中最重要的部分。介紹了通信協(xié)議一致性測試的主要通用方法和測試過程,概括論述了通信協(xié)議的一致性測試體系,詳細分析其生成測試序列的常用方法,同時指明了它們之間的關系。這能為通信協(xié)議一致性測試的實施提供指導作用。
通信協(xié)議;一致性測試;測試序列
通信協(xié)議是建立在互聯網體系和分布式系統(tǒng)各通信端實體之間進行信息交流時應遵循的通用法則?;ヂ摼W技術、計算機技術和通信技術的快速發(fā)展,促使通信網絡趨向龐大,通信協(xié)議趨向復雜。為了確保各通信實體之間穩(wěn)定可靠地開展通信,有必要對通信協(xié)議的一致性進行系統(tǒng)測試。一致性測試就是測定實現 IUT(Implementation Under Test)在網絡系統(tǒng)中的接收和發(fā)送信息是否與標準規(guī)定一致。通常利用一組測試案例序列,在一定的網絡環(huán)境下,對被測實體進行黑盒測試是否與協(xié)議描述相一致,采用的測試拓撲見圖1所示。
一致性測試過程可大致分為三個階段:首先是測試生成階段,該階段針對特定協(xié)議,形成獨立于其他協(xié)議的抽象測試集;其次是測試實現過程,該過程將抽象測試集進行適應性轉換,使其能在正常系統(tǒng)上運行,也就是測試例;最后就是測試執(zhí)行過程,通過在特定的IUT上運行測試例,并分析其外部行為是否符合標準,并給予合理的判決。
圖1 測試拓撲結構
通信協(xié)議一般用文本描述,這樣通俗易懂,不過容易出現理解的二義性。也就是執(zhí)行人員對文本描述會有不同的理解,可能出現不同的協(xié)議實現,也極有可能出現錯誤的實現。因此,有必要在進行協(xié)議的一致性測試之前,繼續(xù)對協(xié)議進行規(guī)范化的描述。規(guī)范化描述技術種類很多,受到認可的有有限狀態(tài)機、Petri網、進程代數、時序邏輯和構造類別代數等[4]。本文主要介紹有限狀態(tài)機模型。
FSM(Finit State Machin)即有限狀態(tài)機,它是用來規(guī)范通信協(xié)議時使用最普遍的數學模型之一,具有可操作性強、方便與其它方法匹配使用,以及易于自動實現等優(yōu)點。一個FSM形式定義為六元組:
M=(Q, Σ, Δ, δ, λ, q0)
式中,Q={q0, q1, …, qn}代表有限狀態(tài)集合;Σ={σ1, σ2, …, σm}代表有限輸入字符集合;Δ={a1, a2, …, ar}代表有限輸出字符集合;Δ:Q×Σ→Δ代表狀態(tài)轉移函數;λ:Q×Σ→Q代表輸出函數;q0∈Q代表初始狀態(tài)。
無論什么時候,FSM均會有一個確定的狀態(tài),且可以通過零個或多個變遷轉變?yōu)槠渌鼱顟B(tài)。采用FSM形式化的通信協(xié)議,產生變遷的操作有很多,包括每一幀信息的外發(fā)和內接,定時器超出時間或有中斷信號等。使用FSM進行通信協(xié)議的描述式,可以使用有向圖簡化模型清晰描述,把任一狀態(tài)作為一個節(jié)點,把任一變遷作為一個方向弧,即可形成有向圖。而初始狀態(tài)會事先由一個特殊狀態(tài)來充當。該特殊狀態(tài)作為開始運行時的情況,抑或運行過程中某個方面的起始點。一般起始于初始狀態(tài)之后,經過合理變遷,即可跳躍到設定或者全部的系統(tǒng)狀態(tài)。通常使用圖論技術,分析哪些狀態(tài)是可變遷到的,哪些是無法實現的。這個過程也稱作可達性分析,通過這些分析可以測定協(xié)議狀態(tài)的覆蓋率。
上面已經提到,我們可以通過一個有向圖 G=(V, E)來清晰描述一個 FSM,其中 V={v1, v2, …, vn}用來代表FSM的有限狀態(tài)機Q,而用于代表FSM的有效變遷集合,也即是∈ E表示從狀態(tài)νi變遷狀態(tài)νk,其中iik/oik表示變遷的輸入/輸出事件。
圖2是一個具有4個狀態(tài)例程的FSM有向圖。
圖2 FSM有向圖示例
測試方法分為本地測試法、協(xié)調測試法、分布測試法和遠程測試法四種。其中本地測試法適用在產品內部測試,由于大多數的IUT不提供本地測試接口,所以這種測試法只是一種概念上的測試結構。現在的一致性測試多是由第三方負責,而第三方大多采用外部測試。其中常用的外部測試方式包括分布式測試、協(xié)調測試和遠程測試等。而執(zhí)行外部測試必須遵守通行協(xié)議,比如測試管理協(xié)議TMP (Test Management Protocol) 等,來協(xié)調測試和定義測試交互進程。
本地測試法是和傳統(tǒng)的軟件測試相提并論的,使用該方法測試,要求執(zhí)行系統(tǒng)的上下層測試器和IUT在同一臺主機上完成。連接方式是:上層測試器和IUT的上接口連接,而下層測試器和IUT下接口連接。目的即是通過上下測試器在IUT上下接口處進行事件交換,而驗證IUT的行為是否規(guī)范。測試的協(xié)調過程主要是統(tǒng)一協(xié)調上下測試器在IUT的上下接口的測試動作,測試框圖見圖3。
圖3 本地測試方法框圖
使用本地測試法有很多優(yōu)勢,包括測試過程不受底層通信系統(tǒng)的限制,同時,上下測試器的測試協(xié)同過程可以簡易地完成[2]。缺點是被測協(xié)議在和上層協(xié)議以及下層協(xié)議之間都需要一個控制觀察點PCO(Point of Control and Observe),對測試者的專業(yè)程度要求高,必須精通協(xié)議系統(tǒng),并且了解和熟悉上下層協(xié)議之間的交互過程,否則,是無法正確設立PCO的。
分布測試法有一定限制,比如遇到IUT的底部不能提供開放的接口等,這時可以使用分布測試法。分布測試法通常將上下層測試器分別置入兩臺獨立的機器上,這要求比較完善的協(xié)調控制過程。它的一個明顯缺陷是,當下層測試器借助(N-1)服務向IUT傳送一個測試用例,而這個過程有可能受外界影響被耽擱或者數據丟失,該測試用例無法正確到達,不過這不影響下一個測試用例的傳送。當下一個測試用例準確到達并得到響應時,IUT就顯而易見地進入錯誤狀態(tài),最終導致上下層測試器在執(zhí)行測試用例時,出現失調的情況。通常,我們可以用恢復協(xié)調的測試方案,在出錯的位置合理解決失調問題。從以上可以看出,分布測試法受到被測協(xié)議本身具有的協(xié)調機制的限制。分布測試法框圖見圖4。
圖4 分布測試法框圖
協(xié)調測試法與分布式測試法一樣,IUT的底部也無法獲得開放的接口,但與分布式測試法的主要區(qū)別在于,IUT的上部不需要有開放的界面,而是TMP(Test Management Protocol)用來協(xié)同或者同步上下層測試器,最后只需要借助交換測試管理數據單元TMPDU(Test Management Protocol Data Unit),實現自主測試管理和協(xié)調。
使用協(xié)調測試法,上層測試器處于從屬地位,受到下層測試器和IUT的約束,下層測試器則起主要作用。這是四種測試法中最高級的一種方法(圖5)。上、下層測試器間較易協(xié)調,上層測試器用到的測試用例,可由下層測試器傳送于它,并在接到測試用例后,根據TMP的相關要求,再反饋給下層測試器,進行測試的判斷。
圖5 協(xié)調測試法框圖
協(xié)調測試法和分布測試法相比,存在不能協(xié)同的問題。通過引入TMP模塊,合理解決了分布式測試法中這個問題。但同時也帶來了更高的系統(tǒng)復雜性。
在測試過程中,測試者遇到特殊情況,會將IUT放入到一個復雜的系統(tǒng),但該復雜系統(tǒng)不支持UT,由于沒有UT,因此不需要UT和LT之間的協(xié)同。這樣IUT的上下層都沒有開放的界面,又ASP(Abstracr Service Primitives)沒有TMP的情況下,引入了遠程測試法,如圖6所示。下層測試器通過,抽象服務原語)和IUT進行通信,并借助由N層的協(xié)議數據單元(PUD)接收反饋的信息實現,并由此做出測試的判斷。
圖6 遠程測試法框圖
遠程測試法的主要優(yōu)勢是不用關注協(xié)議實現,而僅僅借助協(xié)議說明,來觀察IUT是否實現協(xié)議規(guī)定。缺點是由于底層一些協(xié)議不會給出可以判定的反饋。
協(xié)議測試方法中最主要的工作就是生成測試序列。對于協(xié)議測試來說,最佳的測試序列應在滿足測試序列路徑最大覆蓋率的條件下,并同時要求測試序列最短?,F今,在FSM基礎上形成的規(guī)范化方法有多種,其中常見的包括:1)T方法(Transition Tour Method),通常也叫做周游法;2)D方法(Distinguishing Seguences),通常也叫做區(qū)分序列法;3)W方法(Charactrting Seguences),通常也叫做特征序列法;而比較特殊的U方法,是采用唯一輸入/輸出序列UIO(Unigue Input/ utput Seguences)進行狀態(tài)檢測的方法。
3.1.1 T方法
T方法的基本思路是首先開始于FSM的初始狀態(tài),而完整地遍歷FSM的每個變遷,執(zhí)行完畢后返回到初始狀態(tài)。可以看出,T方法是最簡便實用的一種測試方法,并且測試序列長度短。不過,它的檢測能力有限。
3.1.2 D方法
使用D方法之初,必須針對FSM構造一個區(qū)分序列DS(Distinguishing Sequence),再使用生成的DS構建測試輸入序列。D方法的主要優(yōu)點是能發(fā)現故障點[4],不足之處是能夠產生的測試輸入序列數量不多,并且不能保證每一個FSM都存在區(qū)分序列,如果使用序列優(yōu)化方法,必將增加難度,并且又因序列長度比較長,所以D方法應用受到限制。
3.1.3 W方法
W方法是在D方法基礎上進行改進,并且通過FSM的狀態(tài)識別集構建測試輸入序列。通常而言,只要 FSM足夠精簡即可求出其狀態(tài)識別集。W方法要使用2個輸入序列集W和P。其中,W集代表FSM最小的特征集,確保任意兩個狀態(tài)能夠互相區(qū)分;P集用來代表完整的部分路徑,一般通過一個測試樹構成。其初始狀態(tài)通常是根節(jié)點,對每個變遷僅遍歷一次。W 方法所表現出的優(yōu)勢在于,對任意協(xié)議的FSM而言,總是可求出W集,因此具有很好的通用性。不足之處仍是產生的測試序列太長。在實際的復雜系統(tǒng)中很難使用。
3.1.4 U方法
UIO序列是建立在區(qū)分序列和特征序列之上的一個子集。因此可以看出,U方法產生的測試序列相對于W方法等要短很多,并且同時有很強的檢錯能力,也是基于FSM 測試序列生成方式中普遍采用的方法。不過,并非全部的FSM均可求出其UIO,如果無法獲得UIO,也將不能構建測試輸入序列。不過,目前學者已經提出了多種對UIO的改進方法,取得良好效果。
在開展測試時,首先要明確測試目標,而后根據目標分解測試序列,最終得到每一個測試目標的測試子序列。接下來對每一個測試子序列,獲得其明確的測試點(包括測試起始狀態(tài)、結束狀態(tài)和不同變遷等),而后分割測試子序列,其整個序列段三個部分,包括前測試步序列,從子序列的起始位置到下一個測試點的初始位置。當完成測試驅動和狀態(tài)驗證之后,仍有一部分子序列剩余,通常這部分叫做測試體序列。當測試序列運行到最后狀態(tài)時,使用后測試步序列將測試協(xié)議轉變到原來的初始狀態(tài)[5]。將整個過程的三個測試序列整合,即可實現某一測試點的整體測試用例。如果對每個測試點都構造測試用例,綜合起來即能夠組合成抽象測試集。
獲得抽象測試集后,仍要在測試系統(tǒng)上求出可執(zhí)行測試集,而后,將可執(zhí)行測試集應用于一個特定的IUT,并對其作出一致性判斷。通常將測試執(zhí)行過程劃分成兩個階段:第一個階段是靜態(tài)一致性需求檢查,這步是依照協(xié)議標準的靜態(tài)一致性需求,從而檢測IUT;第二個階段,是通過在測試器運行可執(zhí)行測集,來驗證和分析IUT對動態(tài)一致性要求的滿足程度,每個測試例有三種可能的判斷結果,分別是通過、失敗或不確定。最后,需要綜合兩方面的因素,一是靜態(tài)一致性檢查結果,二是所有的測試例的運行判定結果,而后進行分析,給出合理的有關IUT的一致性判決。而只有全部的測試都是通過的,對IUT最終的判決才會是通過[6]。
本文分析了協(xié)議測試一致性的主要流程,并介紹了各步驟中常用的實現方法,闡述了它們各自的特點和適用場合。隨著計算機網絡的發(fā)展,通信協(xié)議也變得越來越復雜,這樣使得協(xié)議的一致性測試更加困難,隨著而來的還有測試的效率和測試自動化的問題。如何去有效地解決這些問題,就是將要面臨的機遇和挑戰(zhàn)。
[1]呂欣巖, 趙保華, 屈玉貴. 基于形式規(guī)范的協(xié)議一致性測試的可靠性分析[J]. 電子與信息學報, 2007, 29(4): 781-785.
[2]魏仰蘇, 孟兆航, 舒挺. 通信協(xié)議一致性測試序列自動生成算法研究[J]. 計算機工程與設計, 2007, 28(10): 2312-2315.
[3]張玉軍, 李忠誠, 鄭紅霞, 等. 應用于計算機網絡協(xié)議一致性測試的傳輸機制[J]. 計算機研究與發(fā)展, 2003, 30(13): 102-108.
[4]朱雪峰, 許建, 鄒彪, 等. 網絡協(xié)議一致性測試研究綜述[J]. 計算機科學,2009, 36(12): 5-11.
[5]文昌辭, 王昭順. 軟件測試自動化靜態(tài)分析研究[J].計算機工程與設計, 2005, 26(4): 987-991.
[6]落紅衛(wèi). 協(xié)議測試技術分析[J]. 電信網技術,2007, 3(3): 57-64.
Study on Conformance Testing of Communication Protocol
MA Xiao-qi
(Liaoning Electric Power Company Limited, Liaoning Shenyang 110005, China)
With the development of the computer networks, the testing of communication protocol is more and more important. Although a lot of studies have been done on this subject, there are still no systematic effective solutions. The communication protocol conformance testing is the most important part of communication protocol testing. The general steps of communication protocol conformance testing and main common method are introduced, and the communication protocol conformance testing system is summarized, and the basic method of producing test sequences is briefly analyzed. At the same time, the relations between them are designated. This can provide guidance for the implementation of the communication protocol conformance test.
communication protocol; conformance testing; test sequences
TN915.04
A
馬曉奇(1961-),男,高級工程師。研究方向:電能計量及用電信息采集。