999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VectorCAST針對iDRT車載控制軟件的單元測試

2021-06-01 09:47:02
中國科技縱橫 2021年3期

(上海電氣集團智能交通科技有限公司,上海 200233)

1.系統概況及測試依據

基于數字化磁標簽的列車運行管理系統,是數字軌道捷運系統的關鍵子系統。系統綜合運用高精度定位和循跡導向技術、電子地圖技術、車路協同技術、智能感知與控制技術,與虛擬軌道膠輪電車智能控制相結合,保證數字軌道膠輪電車循數字化磁釘軌道(含電子道岔)運行,實現數字軌道列車的運行控制以及安全防護、輔助與駕駛和列車運行監控等功能[1]。

iDRT車載控制軟件作為基于數字化磁標簽的列車運行管理系統的新型軌道系統中重要的車載控制設備軟件,需依據EN50128標準進行軟件測試,開展重要軟件的測試工作。標準要求所有含有軟件的具有安全含義的系統都應分配一個軟件完整性級別(SIL),范圍從0~4。標準以一些“規范”和“信息”的方式詳細描述了為適合于每個SIL而必須開展的軟件開發活動以及必須生成的活動完成證據[2]。

其中代碼覆蓋率在鐵路控制和防護系統的軟件代碼測試中愈來愈受重視,這不僅是由于功能安全規范(如國際標準EN50128)的高度推介,更是來自于研發組織內部對提升軟件代碼質量的迫切需求。

EN50128標準描述了軟件安全完整性等級,并規定了對于人員及其職責、生命周期、文件材料方面的要求。內容還對目標、輸入文件、輸出文件進行了詳細描述,并對軟件需求規范、體系結構、設計和執行、驗證和測試,以及軟件/硬件集成、軟件確認、質量保證和維護提出了要求見表1。

表1 EN 50128代碼測試覆蓋需求

其中覆蓋需求包括:

(1)Other test coverage criteria can be used,given that this can be justified.These criteria depend on the software architecture(see Table A.3) and the programming language (see Table A.15 and Table A.16).

(2)Any code which it is not practicable to test shall be demonstrated to be correct using a suitable technique,e.g.static analysis from Table A.19.

2.單元測試理論及方法

iDRT車載控制軟件作為安全苛刻設備,其安全完整性等級不低于SIL2,其中對于軟件覆蓋率提出了要求,使用VectorCAST結合Tornado開發環境的vxSim進行單元測試、集成測試[3]。

首先需要了解什么是軟件單元,在CMMI管理體系中定了軟件中的最小可測試單元為軟件單元(一般是指單個的軟件函數),而單元測試即對最小可測試單元進行檢查和驗證,即對函數或一個類的方法進行測試等。

單元測試的基本原則:宏觀上,單元測試要符合 AIR原則:A: Automatic(自動化)、I: Independent(獨立性)、R: Repeatable(可重復);微觀上,單元測試代碼層面要符合 BCDE 原則:B: Border,邊界性測試,包括循環邊界、特殊取值、特殊時間點、數據順序等;C: Correct,正確的輸入,并且得到預期的結果;D: Design,與設計文檔相符合,來編寫單元測試用例;E: Error,單元測試的目的是為了證明程序有錯,而不是證明程序無錯。

為了發現代碼中潛藏的錯誤,我們需要在編寫測試用例時有一些強制的錯誤輸入(如非法數據、異常流程、非業務允許輸入等)來得到預期的錯誤結果。

一般的單元測試策略有三種:孤立的單元測試策略(Isolation Unit Testing);自頂向下的單元測試策略(Top-Down Unit Testing);自底向上的單元測試策略(Bottom Up Unit Testing)。

集成測試:也叫組裝測試或聯合測試。在單元測試的基礎上,將所有模塊按照設計要求(如根據結構圖)組裝成為子系統或系統,進行集成測試。

系統測試 System Testing:是對整個系統的測試,將硬件、軟件、操作人員看作一個整體,檢驗它是否有不符合系統說明書的地方。這種測試可以發現系統分析和設計中的錯誤。

3.測試工具VectorCAST的使用及拓展

在單元測試環節,使用VectorCAST/C++(VectorCAST用于單元/集成動態測試的工具)實現了函數級別的代碼覆蓋和功能驗證,編輯自動對被測項目軟件實現函數級的插樁處理(Instrumentation on the Function level),采用圖形用戶界面執行測試[4]。

3.1 啟動VectorCAST并新建一個測試環境

設置編譯器Compiler為 Wind River -> VxWorks ->VxWorks 5.x -> VxSim;輸入環境名稱“Tornado_demo”,設置測試方法,選擇“Traditional Method”,選擇White-Box;測試文件目錄,比如這里我將被測試文件放在“C:VCASTExamplesTimer”目錄下,則這里選擇添加該目錄。

3.2 在VectorCast上進行單元測試

依據上面的步驟就已經將VectorCast與Tornado的Vxsim連接好,在運行測試用例時,自動會在VxSim跑用例,下面簡單介紹如何在VectorCast上進行單元測試的步驟:

選擇某一個函數右鍵菜單,選擇“Insert Basis Path Test Cases”添加用例,則生成的用例是根據函數的判斷分支生成測試用例。當然也可以根據項目要求選擇MC/DC等其他方式生成用例。此時生成測試用例如圖1所示。

圖1 單元測試執行的代碼分支

執行測試用例并觀察測試用例所執行的判斷分支,第一個用例需要執行的分支是“if(initiated == TRUE)”。通過正確設置全局變量initiated為1和返回值,使得第一個用例執行“if(initiated == TRUE)”。同時可以通過勾選用例查看語句覆蓋情況,查看代碼已經覆蓋了對應的分支如圖2所示。

圖2 測試用例執行后的語句覆蓋情況

3.3 多個被測文件開展單元測試方案

iDRT車載控制軟件主要實現車輛循跡導航控制功能,需要進行單元測試、集成測試的代碼量比較大,為了能更有效得使用VectorCast進行完成單元測試,提出了一些測試要求及測試步驟,包括:(1)首先針對于每一個被測的.c文件建立一個測試環境,在集成測試中將兩個關聯緊密的.c文件建立一個測試環境,環境名稱一般命名為“配置項名稱-文件名稱-001”。(2)為了保證測試的充分性,一般要求單元測試的各種覆蓋率都達到100%;語句覆蓋要求所有語句至少執行一次;分支覆蓋要求程序中每個判定的“真”值和“假”值都至少執行1次,即程序的每1個分支都至少遍歷1次。(3)代碼的分支中如果存在多條件組合情況,為了實現各種條件組合的遍歷,測試用例的數量將呈指數級增長,測試效率降低。為避免這種情況,采用MC/DC覆蓋取代條件組合覆蓋,用很少的測試用例即可實現多條件中的每個布爾操作數都獨立影響判定結果。(4)通過MC/DC覆蓋自動生成測試用例,查看每個用例的路徑,對應路徑設置對應的輸入、輸出及全局變量,如果是輸出變量的,需要設置預期值。(5)對函數所調用的函數,可以先不打樁,通過調用查看兩者之間的接口是否正常,如果出錯,可以結合代碼審查查看被調用函數的問題后,再打樁,完成覆蓋。樁函數信息填寫必須完整。(6)對于系統函數需要打樁,先不執行,在測試環境中添加系統函數后,重新更新環境[5]。

3.4 利用VBA自動生成單元測試記錄文件

利用VBA編寫抽取VectorCAST測試數據文件的宏代碼依據執行過程寫入CMMI管理體系制定的單元測試記錄和集成測試記錄文件中,最終快速自動生成相關單元測試記錄和集成測試記錄的Word文檔,規范化完成項目資料歸檔[6]。

(1)準備單元測試記錄模板,見表2所示。

表2 單元測試記錄模板

(2)依據軟件設計文件整理好被測單元信息,見表3所示。

表3 軟件設計文件被測單元信息

(3)在Office Word中執行已經編寫好VBA源碼實例,VBA源碼實例詳解以下內容:

(4)生成相關函數的單元測試記錄見表4所示,通過VBA自動完成文件合并,生成針對每一個.c文件的單元測試記錄。

表4 函數的單元測試記錄

4.總結

軟件集成測試是根據軟件結構設計,是將單元測試的各個軟件模塊按照功能、接口等方式逐步整合,測試軟件單元之間、軟件單元與已集成軟件之間的接口關系是否正確,并且符合軟件設計要求。VectorCAST測試工具也提供了軟件集成測試方法。集成測試一般采用黑盒測試為主,白盒測試為輔,通常采用增量集成的方式逐級進行,有自上而下和自下而上2種方式。對于軟件單元之間的所有調用關系,集成測試需要達到100%的覆蓋率。

通過VectorCAST測試工具在新型軌道項目中車載嵌入式軟件單元測試中提出了切實可行的改進軟件設計的質量管理方法和措施。在對iDRT車載控制軟件進行單元測試的過程中,實現了多人協同進行嵌入式軟件測試流程的可能。同時,iDRT車載控制軟件對標安全性指標需小于10-6次/小時的失效概率。需要達到快速完成研發和產品化,同時又能夠滿足相應的安全性標準,就必須采用先進的測試流程和工具進行質量管理。工具的使用以及自行的文檔生成開發,能夠大大減少了復雜的重復勞動,起到了事半功倍的作用。

主站蜘蛛池模板: 亚洲中文制服丝袜欧美精品| 欧美激情网址| 亚洲欧洲自拍拍偷午夜色| 国产XXXX做受性欧美88| 中文字幕第1页在线播| 国产精品久久精品| 久久久噜噜噜久久中文字幕色伊伊 | 风韵丰满熟妇啪啪区老熟熟女| 日韩不卡高清视频| AV天堂资源福利在线观看| 亚洲一区二区黄色| 国产午夜精品鲁丝片| 欧美啪啪网| 色爽网免费视频| 日韩大片免费观看视频播放| 精品成人免费自拍视频| 亚洲激情区| 在线亚洲小视频| 日本免费a视频| 91欧美在线| 欧美亚洲国产视频| 亚洲无码视频喷水| 亚洲码一区二区三区| 国产精品视频999| 久久99精品国产麻豆宅宅| 一级福利视频| 国产在线自在拍91精品黑人| 亚洲天堂视频在线观看免费| 99热这里只有精品在线播放| 亚洲天堂视频在线观看免费| 成年人午夜免费视频| 2024av在线无码中文最新| 亚洲国产在一区二区三区| 不卡视频国产| 一级片一区| 国产精品一区在线麻豆| 婷婷伊人久久| 国产精品成| 精品久久香蕉国产线看观看gif| 婷婷午夜影院| 国产97视频在线观看| 欧美全免费aaaaaa特黄在线| 国产a v无码专区亚洲av| 久久青草免费91观看| 黄色成年视频| 精品国产99久久| 波多野结衣中文字幕一区二区| 国产丰满成熟女性性满足视频| 一级毛片在线免费看| 国产精选小视频在线观看| 亚洲一区二区日韩欧美gif| 国产一区二区三区夜色| 波多野结衣在线一区二区| 无码一区二区波多野结衣播放搜索| 国产欧美又粗又猛又爽老| 久久国产V一级毛多内射| 亚洲一区二区成人| 免费看黄片一区二区三区| 国产精品第一区在线观看| 日本手机在线视频| 亚洲欧洲国产成人综合不卡| 天天操天天噜| 亚洲综合精品香蕉久久网| 亚洲性影院| 一本二本三本不卡无码| 亚洲欧美日韩中文字幕在线| 欧美色亚洲| 最新国产高清在线| 中国一级毛片免费观看| 91毛片网| 免费无码AV片在线观看中文| 色成人综合| 91九色国产在线| 久草网视频在线| 又粗又硬又大又爽免费视频播放| 午夜福利在线观看入口| 99热最新在线| 国产SUV精品一区二区6| a级毛片毛片免费观看久潮| 精品精品国产高清A毛片| 久久综合干| 91精品人妻互换|