国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于EFSM模型的鐵路信號安全軟件單元測試技術(shù)研究

2023-11-27 08:04:12李一楠孫文哲趙曉宇劉雅晴
鐵路計算機(jī)應(yīng)用 2023年10期
關(guān)鍵詞:邊界值白盒黑盒

王 飛,李一楠,孫文哲,趙曉宇,劉雅晴

(中國鐵道科學(xué)研究院集團(tuán)有限公司 通信信號研究所,北京 100081)

隨著我國高速鐵路的快速發(fā)展,保證列車運行安全成為鐵路關(guān)注的重點[1-2]。中國列車運行控制系統(tǒng)3級(CTCS-3,Chinese Train Control System-3)是我國自主研發(fā)的列車運行控制系統(tǒng),在投入使用之前需要對其做大量的測試工作,確保其功能的正常使用[3]。其中,單元測試是軟件測試最基本、最初的階段,也是保障鐵路信號安全軟件質(zhì)量、防止其失效的重要手段[4]。通過對軟件單元測試發(fā)現(xiàn)其中的缺陷,確保設(shè)計和實現(xiàn)軟件規(guī)定的要求。目前,鐵路信號領(lǐng)域的軟件測試主要參考TJ/DW230-2020《鐵路信號安全軟件編程暫行技術(shù)要求》、 TJ/DW231-2020《鐵路信號安全軟件測試暫行技術(shù)要求》等文件[5-6]。其中,文獻(xiàn)[6]重點強(qiáng)調(diào)要通過單元測試方式對軟件的功能、性能、錯誤處理等進(jìn)行測試,可發(fā)現(xiàn)軟件內(nèi)部邏輯錯誤缺陷,識別難達(dá)、危險分支,提高軟件測試的可靠性,保證鐵路信號系統(tǒng)的安全性。

現(xiàn)階段,鐵路信號安全軟件單元測試技術(shù)主要以白盒測試為主,黑盒測試為輔[7]。白盒測試主要關(guān)注軟件內(nèi)部結(jié)構(gòu)邏輯,忽略軟件的功能邏輯。黑盒測試主要從功能方面對軟件進(jìn)行測試,不太關(guān)注軟件的內(nèi)部結(jié)構(gòu)邏輯,且測試案例是否完備全面依賴于測試人員對功能的理解程度,這樣會導(dǎo)致一些復(fù)雜環(huán)境條件下產(chǎn)生的異常測試案例被遺漏,進(jìn)而產(chǎn)生嚴(yán)重的后果。因此,需要一種既能充分考慮黑盒測試的各種場景,又能滿足白盒測試的結(jié)構(gòu)覆蓋需求的測試方法,同時切實可行、容易操作,從而提高測試效率。

本文提出了一種基于擴(kuò)展有限狀態(tài)機(jī)(EFSM,Enhanced Finite State Machine)模型的黑白盒融合單元測試方法。以軟件結(jié)構(gòu)中劃分的最小功能模塊為測試對象,利用EFSM模型準(zhǔn)確刻畫軟件的各種場景,設(shè)計相關(guān)測試案例,同時使用自動化測試工具Cantata對基于EFSM模型設(shè)計的測試案例進(jìn)行自動化分析,給出被測功能模塊各個函數(shù)結(jié)構(gòu)覆蓋結(jié)果。

1 基本理論

1.1 單元測試概述

單元測試是指對軟件內(nèi)部最小可測單元的正確性進(jìn)行測試的工作。其中,對最小可測單元的大小并沒有明確的規(guī)定,它可以是一個模塊、一個類、一個方法、一個子系統(tǒng)甚至一個函數(shù)。測試人員依據(jù)軟件設(shè)計規(guī)范和程序源代碼,設(shè)計測試的輸入和輸出條件,通過編寫相應(yīng)的測試案例分析軟件中可能存在的缺陷,驗證軟件功能是否符合設(shè)計規(guī)范的要求。單元測試方法包括白盒測試和黑盒測試。

白盒測試方法中的語句覆蓋、分支覆蓋、條件覆蓋(CC,Condition Coverage)、修正條件判定覆蓋(MCDC,Modified Condition Decision Coverage)、條件組合覆蓋的測試是以程序內(nèi)部結(jié)構(gòu)為基礎(chǔ)的常見白盒測試方法,其覆蓋程度依次增強(qiáng),設(shè)計難度也逐級增加;白盒測試方法還包括路徑覆蓋、控制流、數(shù)據(jù)流、程序變異、程序插樁等,可以根據(jù)測試的充分性要求適當(dāng)選擇。

黑盒測試方法中的功能分解、等價類劃分、邊界值分析是黑盒測試設(shè)計用例的常用方法[8];判定表、因果圖、隨機(jī)測試、猜錯法和正交試驗法等,可以根據(jù)測試對象和被測特性的特點適當(dāng)選擇。

鐵路信號安全軟件單元測試的基本內(nèi)容如下[9]:

(1)對每個軟件單元的功能進(jìn)行測試;

(2)被測試的軟件特性都與功能相關(guān),且包含正常和異常情況;

(3)測試用例的輸入域應(yīng)覆蓋有效等價類、無效等價類和邊界值;

(4)軟件源代碼對于每個單元內(nèi)部的錯誤處理措施是否有效;

(5)軟件源代碼的每條語句都被至少一個測試用例覆蓋,即語句 100%覆蓋;

(6)軟件源代碼的每個分支都被至少一個測試用例覆蓋,即分支 100%覆蓋;

(7)軟件源代碼的每個分支的每個條件都被獨立起作用的測試用例覆蓋,即 MCDC 100%覆蓋。

1.2 擴(kuò)展有限狀態(tài)機(jī)

EFSM能夠?qū)浖杏邢迋€狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移行為進(jìn)行建模。EFSM在有限狀態(tài)機(jī)基礎(chǔ)上增加了變量、操作及狀態(tài)遷移的前置條件,可以更加準(zhǔn)確地刻畫軟件內(nèi)部的動態(tài)行為[10],是對FSM的擴(kuò)展。通常EFSM模型使用狀態(tài)圖來表示,圖中,用節(jié)點表示狀態(tài),用邊表示轉(zhuǎn)移條件。

EFSM由六元組M構(gòu)成:

其中,S為一個有限狀態(tài)集合;s0∈S為該模型的初始狀態(tài);V為內(nèi)部變量的有限集合;I為輸入集合;O為輸出集合;T為狀態(tài)遷移的有限集合。T的每個遷移t是一個五元組t=(ss,i,g,op,se),其中,ss為遷移t的起始狀態(tài);i∈I為輸入符;g為當(dāng)前遷移的判定條件,也被稱為守衛(wèi)條件;op為輸出或賦值等一系列操作語句;se為遷移t的終止?fàn)顟B(tài)。

1.3 Cantata自動化測試工具

Cantata測試工具的功能包含:單元和集成動態(tài)測試、AutoTest測試、覆蓋率分析、靜態(tài)分析、測試需求追蹤、代碼變更分析、Cantata Makefile等。

Cantata進(jìn)行軟件測試的策略,如圖1所示。

圖1 Cantata進(jìn)行軟件測試的策略

(1)編寫測試腳本,設(shè)置不同的輸入調(diào)用被測試單元;

(2)將編寫的測試腳本與動態(tài)測試庫、函數(shù)插樁、覆蓋率插樁、覆蓋率采集分析等進(jìn)行鏈接編譯,生成測試可執(zhí)行文件;

(3)產(chǎn)生測試結(jié)果,給出覆蓋率統(tǒng)計結(jié)果,并顯示未覆蓋的原因。

2 基于EFSM模型的黑白盒融合單元測試技術(shù)

2.1 黑盒測試案例的形式化描述技術(shù)

傳統(tǒng)的黑盒測試案例使用自然語言描述,由于自然語言存在模糊性和二義性,給測試人員帶來了一定的困擾和挑戰(zhàn)。測試人員由于對測試案例的含義和預(yù)期結(jié)果理解不一致,導(dǎo)致執(zhí)行時產(chǎn)生歧義和誤解,從而影響測試結(jié)果的準(zhǔn)確性。

為了解決這些問題,通過將測試案例轉(zhuǎn)化為EFSM模型,可以將測試過程更加形式化和規(guī)范化,并消除了自然語言描述的模糊性和二義性。

EFSM模型使用圖形的方式表示軟件的各個狀態(tài)和狀態(tài)間的轉(zhuǎn)換關(guān)系,可以清晰地展示系統(tǒng)的行為和功能。測試人員可以根據(jù)EFSM模型中的狀態(tài)遷移路徑,準(zhǔn)確地理解測試案例所要求的系統(tǒng)行為和預(yù)期結(jié)果。這種結(jié)構(gòu)化和精確的表示方式使測試人員之間可以更好地共享和理解測試需求,減少了解釋和執(zhí)行測試用例時的歧義,提高了測試人員對測試細(xì)節(jié)的準(zhǔn)確理解。

2.2 黑盒測試與白盒測試相互融合技術(shù)

該技術(shù)充分利用了黑盒測試和白盒測試各自的優(yōu)點,能夠全面驗證軟件的功能和結(jié)構(gòu),發(fā)現(xiàn)更多的缺陷,提高測試案例的質(zhì)量,進(jìn)而提升軟件的安全和可靠性。

(1)黑盒測試和白盒測試分別關(guān)注軟件的功能和內(nèi)部結(jié)構(gòu),通過將兩者結(jié)合,能夠充分覆蓋測試對象的各個方面。黑盒測試注重對軟件功能的正確性和需求符合性的驗證,而白盒測試則關(guān)注代碼覆蓋率和結(jié)構(gòu)的完整性。

(2)由于黑盒測試和白盒測試都有不同的測試目標(biāo)和方法,結(jié)合使用可以發(fā)現(xiàn)更多的缺陷。黑盒測試主要通過輸入和輸出驗證軟件功能的正確性,而白盒測試通過深入分析代碼路徑和邏輯來發(fā)現(xiàn)軟件中潛在的問題。

(3)黑盒測試用例基于功能需求的角度設(shè)計,能夠充分考慮到用戶的使用場景和預(yù)期結(jié)果;白盒測試著重于代碼層面的覆蓋和測試,能夠發(fā)現(xiàn)邏輯錯誤和邊界條件等問題;結(jié)合兩者,既可以保證軟件功能的完整性和正確性,又能夠測試代碼的覆蓋率和結(jié)構(gòu),提高測試案例的質(zhì)量。

(4)白盒測試對于難以覆蓋的關(guān)鍵分支和異常場景能夠提供更深入的測試和分析。通過使用白盒測試方法,結(jié)合對未滿足覆蓋率要求的分支的設(shè)計和測試,可以進(jìn)一步提升軟件的安全性和可靠性。

2.3 基于EFSM模型的黑白盒融合單元測試方法

結(jié)合黑盒測試和白盒測試各自的優(yōu)點,以功能模塊為最小可測對象執(zhí)行單元測試,本文提出了一種基于EFSM模型的黑白盒融合單元測試方法,如圖2所示。具體實施步驟如下:

(1)采用EFSM模型對鐵路信號軟件應(yīng)用各場景進(jìn)行形式化建模,實現(xiàn)功能點分解;

(2)根據(jù)EFSM模型中各個狀態(tài)遷移,建立黑盒測試用例集;

(3)根據(jù)建立的黑盒測試用例集,編寫相關(guān)測試代碼,結(jié)合Cantata自動測試工具,給出覆蓋率測試結(jié)果,查看各個被測函數(shù)是否滿足語句、分支、MCDC覆蓋率要求;

(4)如果覆蓋率測試結(jié)果不滿足要求,分析未覆蓋原因,判斷是否存在異常場景,針對未覆蓋分支使用白盒測試方法設(shè)計補(bǔ)充測試案例,滿足覆蓋率要求。

(5)如果覆蓋率測試結(jié)果滿足要求,本測試步驟選擇邊界值分析法補(bǔ)充測試用例。經(jīng)驗表明,在邊界附近很容易發(fā)生錯誤,為了使測試案例集更充分,該方法簡單而有效。

3 鐵路信號軟件單元測試驗證

3.1 無線超時降級場景的EFSM模型

車載設(shè)備在CTCS-3(簡稱:C3)等級完全模式下,處理無線超時降級CTCS-2(簡稱:C2)等級的場景分析[11]。

場景1:無線超時后,在完全監(jiān)控模式下應(yīng)啟動C3等級向 C2等級的降級處理并輸出最大常用制動命令。

場景2:無線超時制動10 s內(nèi),列車速度不大于160 km/h,且不超過C2等級允許速度,車載自動轉(zhuǎn)入C2等級。

場景3:無線超時制動10 s內(nèi),列車速度高于160 km/h,但低于C2等級允許速度,不轉(zhuǎn)入 C2 等級。

場景4:無線超時制動10 s 后,列車速度不超過C2的允許速度,自動轉(zhuǎn)入C2等級。

場景5:無線超時制動10 s后,列車速度高于C2的允許速度,不轉(zhuǎn)入C2等級。

場景6:自動降級過程中,無線恢復(fù),自動緩解常用制動,列車?yán)^續(xù)以C3等級運行。

根據(jù)EFSM模型理論,建立C3等級完全模式下,處理無線超時降級C2等級的EFSM模型,如圖3所示。圖中,各狀態(tài)、含義如表1所示;各遷移含義如表2所示。表2中主要描述了輸出條件、判定條件及輸出操作的含義。

表1 模型中各狀態(tài)含義

表2 模型中各遷移含義

3.2 EFSM模型中各遷移轉(zhuǎn)換為黑盒測試用例

根據(jù)表2中EFSM模型中每個遷移t的描述,建立黑盒測試用例集,其中,全局變量和樁函數(shù)設(shè)置依據(jù)遷移輸入條件i,驅(qū)動參數(shù)依據(jù)遷移判定條件g,以及期望輸出依據(jù)遷移輸出操作op,如表3所示。

3.3 基于Cantata的覆蓋率分析

(1)覆蓋率要求:依據(jù)鐵路信號安全軟件測試要求,語句、分支和MCDC覆蓋率均須達(dá)到100%。

(2)準(zhǔn)備工作:基于以上要求,根據(jù)EFSM模型生成的測試用例集,編寫測試腳本,設(shè)計樁函數(shù),將測試腳本與Cantata建立連接,在Test Properties視圖選擇“Options File”> “Coverage”,勾選想要查看的覆蓋率。

(3)執(zhí)行過程:執(zhí)行編譯,將測試腳本與Cantata軟件中的庫函數(shù)鏈接生成可執(zhí)行文件后,運行生成一個后綴為cov的覆蓋率文件。

(4)查看覆蓋率結(jié)果:切換到Coverage Explorer頁面,點擊頁面右上角的倒三角,下拉選擇當(dāng)前工程查看覆蓋率結(jié)果,如圖4所示。

(5)定位未覆蓋部分:針對覆蓋率不滿足100%要求的函數(shù),可以點擊對應(yīng)的源碼,紅色顯示未覆蓋部分,同時給出未覆蓋原因,這樣可以快速定位未覆蓋部分。如圖5所示,選擇紅色未覆蓋代碼給出的未覆蓋原因,MCDC覆蓋未滿足,判斷條件currentMode_ == FULL_SUPERVISION_A &¤tLevel == ATP_LEVEL_3_A的獨立影響作用沒被體現(xiàn),也就是未設(shè)計當(dāng)判斷條件不滿足時的測試案例。

圖5 未覆蓋原因截圖

基于Cantata的覆蓋率測試結(jié)果,分析未達(dá)分支原因,判斷是否是難達(dá)分支,針對無線超時降級場景的未覆蓋分支,經(jīng)分析未存在復(fù)雜難以設(shè)置的場景,均為不滿足限制條件進(jìn)入等待處理分支,使用白盒測試方法補(bǔ)充以下測試案例,如表4所示。

表4 白盒測試用例

針對白盒測試設(shè)計的案例,編寫測試腳本,使用Cantata測試工具再次查看覆蓋率結(jié)果,如圖6所示,添加的補(bǔ)充測試案例,滿足語句、分支和MCDC覆蓋率均達(dá)到100%的要求,測試通過。

圖6 覆蓋率測試通過結(jié)果截圖

3.4 邊界值分析法

通過Cantata軟件分析之后,已經(jīng)確保了軟件內(nèi)部每一條語句、分支都至少被執(zhí)行過一次,滿足覆蓋率要求。但是針對輸入域有邊界范圍限制時,需要進(jìn)一步設(shè)計案例,保障軟件在邊界值附近的運行邏輯的正確性。依據(jù)邊界值的常用分析方法,測試數(shù)據(jù)一般選取剛好等于、稍小于和稍大于邊界的數(shù)據(jù)。通過分析無線超時降級處理軟件時,發(fā)現(xiàn)列車當(dāng)前運行速度、輸出制動時間和降為C2級后的允許速度都有邊界值限制。針對這3個輸入域利用邊界值分析方法設(shè)計案例,由于在基于EFSM模型分析設(shè)計案例時已經(jīng)對邊界值附近大于和小于的數(shù)據(jù)進(jìn)行了案例分析,因此,針對該場景補(bǔ)充的測試案例只針對等于邊界值進(jìn)行分析,如表5所示。測試過程中,未發(fā)現(xiàn)邊界值附近有邏輯錯誤,測試通過。

表5 邊界值分析測試用例

4 結(jié)束語

本文詳細(xì)介紹了測試案例的設(shè)計、執(zhí)行和評估過程,以無線超時降級場景為例,介紹了基于EFSM模型的黑白盒融合單元測試方法的具體應(yīng)用過程和結(jié)果,以及測試結(jié)果的分析和改進(jìn)措施。該方法結(jié)合了黑盒測試的功能覆蓋和白盒測試的結(jié)構(gòu)覆蓋,生成了完備的測試案例集,有助于檢測出軟件內(nèi)部的邏輯錯誤和狀態(tài)轉(zhuǎn)換錯誤。本方法不僅提高了單元測試的效率和完整性,也提高了軟件的可靠性。

猜你喜歡
邊界值白盒黑盒
一種基于局部平均有限差分的黑盒對抗攻擊方法
面向未來網(wǎng)絡(luò)的白盒交換機(jī)體系綜述
DWB-AES:基于AES 的動態(tài)白盒實現(xiàn)方法
如何設(shè)計好的測試用例
價值工程(2020年3期)2020-02-02 04:00:42
巧用洛必達(dá)法則速解函數(shù)邊界值例讀
讀寫算(2019年11期)2019-08-29 02:04:19
網(wǎng)絡(luò)“黑”“白”之爭
通信世界(2018年29期)2018-11-21 06:34:44
基于EEPROM數(shù)據(jù)讀寫的智能電能表白盒測試方法
電測與儀表(2014年3期)2014-04-04 09:08:08
一類帶有Dirichlet邊界值條件的橢圓型方程正解的存在性
序半群中有邊界值的直覺模糊理想
石棉县| 乌兰察布市| 平潭县| 永川市| 东兰县| 扶余县| 荔波县| 灵山县| 诸暨市| 宿松县| 本溪| 华池县| 雷州市| 友谊县| 上杭县| 易门县| 嘉峪关市| 余江县| 通江县| 沙田区| 武山县| 肃宁县| 英超| 晋城| 武威市| 广汉市| 灌阳县| 吉水县| 滁州市| 抚顺县| 永平县| 济南市| 左云县| 福泉市| 公主岭市| 成都市| 平定县| 化德县| 丰城市| 宝丰县| 汝州市|