劉振玉 任 軍
(北京全路通信信號研究設(shè)計(jì)院集團(tuán)有限公司,北京 100073)
RSSP-II安全通信協(xié)議軟件的自動測試設(shè)計(jì)及實(shí)現(xiàn)
劉振玉 任 軍
(北京全路通信信號研究設(shè)計(jì)院集團(tuán)有限公司,北京 100073)
RSSP-II安全通信協(xié)議軟件是鐵路通信領(lǐng)域安全產(chǎn)品,其軟件功能測試采用SDP專項(xiàng)測試工具實(shí)現(xiàn)自動化測試,從而提高了測試效率和測試規(guī)范性。提出RSSP-II軟件自動化測試框架,通過測試引擎和腳本的聯(lián)合設(shè)計(jì)來實(shí)現(xiàn)測試過程中的錯誤注入,對軟件產(chǎn)品進(jìn)行了多輪次自動化測試,并將專項(xiàng)測試工具推廣應(yīng)用于半實(shí)物軟硬件集成測試。
RSSP-II測試;錯誤注入;引擎和腳本聯(lián)合設(shè)計(jì);半實(shí)物軟硬件集成測試
RSSP-II安全通信協(xié)議(UNISIG subset-098),作為適用于封閉傳輸系統(tǒng)和開放傳輸系統(tǒng)的基于以太網(wǎng)通信的安全通信傳輸協(xié)議,可廣泛應(yīng)用于高速鐵路、城際鐵路、城市軌道交通信號控制系統(tǒng)中[1,2]。RSSP-II安全通信協(xié)議是SIL4級[3]安全軟件產(chǎn)品,定義為一套跨平臺、可移植、能實(shí)現(xiàn)RSSP-II安全通信協(xié)議功能的軟件功能庫,其功能測試是確認(rèn)軟件滿足功能需求,具有足夠安全防護(hù)能力的重要手段[4]。
自動化的測試具有高效率、一致、可信的優(yōu)點(diǎn),尤其是基于腳本的自動測試更為靈活高效。為提高測試效率,增加測試規(guī)范性,RSSP-II安全通信的功能測試過程采用了信號系統(tǒng)設(shè)計(jì)開發(fā)平臺(SDP)的專項(xiàng)測試工具[5]。
根據(jù)RSSP-II安全通信協(xié)議軟件功能測試需要,參照SDP測試系統(tǒng)結(jié)構(gòu)[5],設(shè)計(jì)RSSP-II安全通信協(xié)議軟件功能自動化測試框架,如圖1所示。在測試過程中,待測安全通信協(xié)議軟件通過適配層對外接原語接口分引擎(分引擎1)和對等協(xié)議棧分引擎(分引擎2)。原語接口分引擎用來模擬待測安全通信協(xié)議軟件的用戶應(yīng)用層,對等協(xié)議棧分引擎用來模擬與待測安全通信協(xié)議軟件通信的對等實(shí)體。主引擎解析腳本命令之后,分別下達(dá)到分引擎1、2;同時,分引擎1、2將待測安全通信協(xié)議軟件反饋的實(shí)際執(zhí)行結(jié)果信息報告給主引擎。測試腳本按照測試用案例進(jìn)行編寫,采用基于Tcl的Expect腳本語言。對等協(xié)議棧分引擎與主引擎間以protobuf格式的消息進(jìn)行通信,與待測安全通信協(xié)議棧以TCP或UDP格式的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行通信。
分引擎2可接收待測安全通信協(xié)議軟件通過網(wǎng)絡(luò)傳送的數(shù)據(jù),經(jīng)過逐層解包和一些正常邏輯判斷的同時把數(shù)據(jù)送達(dá)到主引擎,主引擎通過和腳本的預(yù)期結(jié)果進(jìn)行對比從而做出判斷;分引擎2還可以從主引擎接收正常邏輯指令,并與待測安全通信協(xié)議軟件進(jìn)行通信交互;更為重要的是,主引擎可以通過分引擎2對真實(shí)協(xié)議棧進(jìn)行測試過程中的錯誤注入,待測安全通信協(xié)議棧對于注入錯誤的響應(yīng)會同時通過分引擎1和分引擎2傳遞給主引擎。因此,對等協(xié)議棧分引擎的設(shè)計(jì)是自動測試的關(guān)鍵,只要建立了對等協(xié)議棧分引擎的基本框架和通信流程,便可通過腳本控制發(fā)送不同指令或數(shù)據(jù)來實(shí)現(xiàn)各種類型的錯誤注入。
圖1 RSSP-II軟件自動化測試框架
參照上述的測試框架,RSSP-II自動測試的準(zhǔn)備工作集中在測試分引擎1、分引擎2的設(shè)計(jì)實(shí)現(xiàn)以及測試腳本的編寫。其中,分引擎1的設(shè)計(jì)需要遵循RSSP-II應(yīng)用原語接口規(guī)范。為了實(shí)現(xiàn)各種類型的錯誤注入,分引擎2的設(shè)計(jì)和測試腳本編寫之間的聯(lián)系更為緊密,下面加以著重闡述。
RSSP-II協(xié)議按功能從上至下可分為安全應(yīng)用中間子層(SAI)、消息鑒定安全層(MASL)、適配及冗余管理層(ALE)。對等協(xié)議棧接收到的數(shù)據(jù)需要經(jīng)過逐層解包,并且進(jìn)行必要的邏輯判斷(CRC校驗(yàn)和MAC校驗(yàn)等),同時把每層的數(shù)據(jù)按照消息字段格式送達(dá)到主引擎用來和腳本的預(yù)期結(jié)果進(jìn)行判定。由于在ALE層要實(shí)現(xiàn)CLASS D冗余通信,對等協(xié)議棧分引擎在雙通道接收時,需要在ALE層入口處比對兩通道的數(shù)據(jù)包內(nèi)容是否完全一致。組包過程與解包過程相對應(yīng),在對等協(xié)議棧分引擎的每一層都要加上相應(yīng)的包頭或包尾,才能滿足協(xié)議數(shù)據(jù)格式從而與待測安全通信協(xié)議棧進(jìn)行通信。RSSP-II協(xié)議數(shù)據(jù)包結(jié)構(gòu)如圖2所示,包頭和包尾的詳細(xì)邏輯字段格式可參照subset-098協(xié)議[1]。
錯誤注入是指通過注入不同的錯誤來測試安全協(xié)議棧對該錯誤的反應(yīng),這也是對等協(xié)議棧分引擎設(shè)計(jì)實(shí)現(xiàn)的重要目的。對等協(xié)議棧分引擎的任何一層收到數(shù)據(jù)后直接匯報給主引擎并繼續(xù)往上層傳送直至應(yīng)用層,當(dāng)對等協(xié)議棧分引擎未收到主引擎下發(fā)的動作消息時,其一直處于等待狀態(tài)。一般情況下,凡是對等分引擎的發(fā)送點(diǎn)都可以且應(yīng)當(dāng)成為相應(yīng)的錯誤注入點(diǎn),由此可推出關(guān)聯(lián)的測試功能點(diǎn)和對應(yīng)的錯誤注入點(diǎn),如表1所示。總結(jié)SAI層、MASL層和ALE層的功能點(diǎn)從而得到不同錯誤注入點(diǎn)的測試內(nèi)容以及測試引擎及腳本設(shè)計(jì)實(shí)現(xiàn)要點(diǎn),從而使測試案例的系統(tǒng)歸納和測試引擎腳本的聯(lián)合設(shè)計(jì)得以實(shí)現(xiàn)。錯誤注入后,待測協(xié)議棧的反應(yīng)會通過引擎1和引擎2分別傳送到主引擎,最終通過腳本的預(yù)定邏輯進(jìn)行判決。
圖2 RSSP-II協(xié)議棧數(shù)據(jù)包結(jié)構(gòu)
經(jīng)過多輪次的補(bǔ)充完善,RSSP-II協(xié)議的功能測試共包含300個不同的測試案例,功能測試共包含測試腳本286個(300個案例中有12個測試案例為非腳本執(zhí)行案例且有兩個案例復(fù)用了之前的測試腳本)。案例之間沒有先后關(guān)系,對于可用腳本執(zhí)行的測試案例,每次測試執(zhí)行一個測試案例對應(yīng)的腳本,逐次執(zhí)行所有腳本。對于每個測試案例的腳本,會將主引擎從分引擎獲得的實(shí)際執(zhí)行結(jié)果與預(yù)期結(jié)果進(jìn)行比較做出邏輯判斷,而主引擎通過記錄各個腳本是否通過來統(tǒng)計(jì)測試案例的執(zhí)行情況。
對于RSSP-II協(xié)議的前7輪功能測試,回歸測試結(jié)果如表2所示。在回歸測試過程中,案例數(shù)量和腳本數(shù)量呈不斷增多的趨勢,但是除了在案例數(shù)量比較穩(wěn)定的2~5輪和6~7輪回歸測試之前,引擎和腳本的開發(fā)工作所占工時比較多之外,其余測試過程均可高效自動化回歸測試完成,而且由于自動化測試方法較好的一致性,這兩個階段之間腳本的復(fù)用率也比較高。因此,對于具有多輪次的回歸測試,采用SDP專項(xiàng)測試工具有利于提高測試效率,增強(qiáng)測試的一致性和可信度。
表1 測試功能點(diǎn)及錯誤注入實(shí)現(xiàn)
表2 RSSP-II 7輪回歸測試結(jié)果
采用SDP專項(xiàng)測試工具開展自動測試工作,所需要額外的知識儲備主要在于分引擎和腳本的設(shè)計(jì)與開發(fā)。RSSP-II安全通信協(xié)議軟件的功能測試,一開始就采用了自動化腳本測試的方法,因而在多輪次的回歸測試過程中,獲得了良好的時間、人力效率以及較好的自動測試覆蓋率。在回歸測試過程中值得注意的是,由于分引擎與主引擎網(wǎng)絡(luò)UDP通信的不可靠性,通信時延以及Expect腳本時延控制精度不足,部分腳本需要進(jìn)行二次手動回歸才能通過,而有些需要精確測試定時器超時功能的案例,需要把待測協(xié)議棧超時值參數(shù)的顆粒度設(shè)置得較為粗大。此外,盡管自動測試案例的覆蓋率已經(jīng)較高,但是對于部分測試案例(表1最后兩行),由于開發(fā)難度和靈活性的限制,還是不太適合編寫腳本進(jìn)行自動化測試。
對于區(qū)域控制器(ZC)子系統(tǒng)專項(xiàng)測試,分引擎和腳本的結(jié)構(gòu)設(shè)計(jì)可以相對簡化地按照應(yīng)用接口協(xié)議進(jìn)行開發(fā)[5]。而RSSP-II安全通信協(xié)議,作為與應(yīng)用無關(guān)的通信協(xié)議類軟件產(chǎn)品,其測試案例更多偏重于考察軟件面對通信過程中的重復(fù)、插入、刪除、重排序、損壞、延遲、偽裝等安全通信威脅時的錯誤檢測和安全防護(hù)。在開發(fā)分引擎時,我們便充分考慮后期腳本開發(fā)的可行性和一致性。在測試案例不斷增加的過程中,通過擴(kuò)充protobuf消息類型的方式實(shí)現(xiàn)用腳本控制對等協(xié)議棧分引擎向RSSPII軟件進(jìn)行錯誤注入的新接口。這種引擎腳本聯(lián)合設(shè)計(jì)開發(fā)的思路,對于SDP專項(xiàng)測試工具在通信協(xié)議類軟件模塊測試領(lǐng)域的應(yīng)用具有明顯的借鑒意義。
RSSP-II安全通信協(xié)議軟件,可以作為安全通信模塊移植到不同的安全平臺上。移植后需要進(jìn)行目標(biāo)平臺的性能測試和側(cè)重軟件接口的軟硬件集成測試。同時開發(fā)了針對平臺軟硬件集成測試的半實(shí)物測試環(huán)境,測試框架與圖1相同,所不同的是待測RSSP-II軟件已經(jīng)編譯、運(yùn)行在不同的硬件平臺上:部署在測試機(jī)上的分引擎1通過平臺的UDP端口向平臺安全通信協(xié)議軟件轉(zhuǎn)發(fā)腳本消息并收取上報給平臺主控邏輯的應(yīng)用原語。實(shí)施平臺的軟硬件集成測試,可以確保RSSP-II軟件能夠在不同安全平臺硬件上得以正確運(yùn)行,客觀上也推廣了SDP專項(xiàng)測試工具的應(yīng)用領(lǐng)域。
本文提出基于SDP專項(xiàng)測試工具的RSSP-II安全通信協(xié)議軟件自動化測試設(shè)計(jì)和實(shí)現(xiàn)方法并將其應(yīng)用于軟件功能測試。多輪次的回歸測試表明,采用專項(xiàng)測試工具有利于提高測試效率,增強(qiáng)測試的一致性和可信度。針對軟件自動測試,本文提出測試引擎和腳本的聯(lián)合設(shè)計(jì)與實(shí)現(xiàn)方法,并將SDP工具應(yīng)用于半實(shí)物軟硬件集成測試。
[1] Subset-098,RBC-RBC Safe Communication Interface v1.0.0 [S].ERTMS,2007.
[2]運(yùn)基信號[2010]267號.RSSP-II鐵路信號安全通信協(xié)議v1.0[S].
[3] EN50159:Railway applications-Communication,signaling and processing systems [S].ERTMS,2010.
[4] EN50128:Railway applications-Software for railway control and protection systems [S].ERTMS,2011.
[5]高強(qiáng).專項(xiàng)測試工具在鐵路信號軟件測試中的試用與結(jié)果分析[J].鐵路通信信號工程技術(shù),2013,10(增刊):131-136.
RSSP-II safety communication protocol software is a safety-related product in the field of railway communication. SDP testing tool is used to realize automatic testing in the functional test of RSSPII software, so the testing effi ciency and standardization are improved. The paper presents a structure of RSSP-II software testing system to achieve fault injection by joint design and implementation of engine and script. It introduces the several rounds of automatic tests of the software products, and proposes that SDP testing tool can be applied to semi-physical hardware/software integration testing.
RSSP-II test; fault injection; joint design of engine and script; semi-physical hardware/software integration test
10.3969/j.issn.1673-4440.2015.06.011
2014-09-25)