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