全數字仿真運行平臺CRESTS/CodeCAST是能夠滿足模擬或仿真外部硬件行為進行軟件運行和測試需求的工具。該工具運用國際流行的仿真、測試腳本語言來編寫外部硬件邏輯行為所產生外部激勵事件以構成嵌入式軟件的外部信號激勵或數據輸入,從而滿足軟件在全數字仿真運行環(huán)境下無須人的干預而閉環(huán)運行的要求。
基于嵌入式應用的特點,嵌入式軟件全數字仿真測試支撐平臺CodeCAST要為嵌入式系統提供全數字仿真測試環(huán)境或測試平臺,實現對嵌入式系統進行實時、閉環(huán)的系統測試。具體地說CodeCAST要為用高級語言(C,ADA等)編寫的嵌入式軟件測試提供了有效的、統一的協作平臺。在該平臺上完成被測軟件的分析、運行和測試,最重要的是要實現嵌入式系統外部事件的全數字仿真,使得嵌入式軟件就像在真實硬件環(huán)境下連續(xù)不中斷地運行。

從嵌入式軟件全數字仿真測試支撐平臺(CodeCAST)總體結構圖我們可以看出,CodeCAST的工作流程是:
· 對被測程序進行插樁處理;
· 對被測程序進行靜態(tài)分析,生成程序理解數據和質量度量數據
· 裝載在開發(fā)環(huán)境中交叉編譯后的被測軟件
· 對被測嵌入式軟件程序進行測試
· 通過全數字仿真模擬端口、中斷等外部事件,使被測嵌入式軟件程序能夠“閉環(huán)”運行
· 對測試結果進行分析,生成測試報告
· 依據CodeCAST的工作流程,CodeCAST能夠滿足嵌入式軟件開發(fā)階段的內部測試和驗收階段的測試的要求,并能夠為測試方、被測方及上級主管單位提供可以信賴和再現測試過程與測試問題的測試報告。
主要性能特點
CodeCAST要為嵌入式軟件提供全數字仿真測試的支撐平臺,實現對嵌入式系統進行實時的、閉環(huán)的系統測試。具體地說CodeCAST要為用高級語言/匯編語言(包括混合編程)編寫的嵌入式軟件測試提供了有效的、統一的協作平臺。在該平臺上完成被測軟件的分析、運行、測試,最重要的是要實現嵌入式系統外部事件的全數字仿真,使得嵌入式軟件就像在真實硬件環(huán)境下能夠連續(xù)不中斷地運行,并進行系統測試。
建立嵌入式應用的核心——CPU的虛擬目標機
CPU的虛擬目標機實際上就是嵌入式開發(fā)應用中大家常用到的CPU模擬器Simulator。由于嵌入式應用千差萬別,CPU的種類和型號多種多樣,因此CPU虛擬目標機的實現也是各不相同,但它們的核心內容都是相同的。
CodeCAST虛擬目標機所要完成的任務有:CPU指令集的解釋、CPU時序的模擬、CPU端口動作的仿真和CPU中斷機制的實現等等。虛擬目標機中對對程序運行性能的計算及時間統計是基于所對應CPU的指令周期以及CPU的工作主頻。這是一個相對量,但它能夠指導開發(fā)人員優(yōu)化程序,保證程序的運行性能。而且實際的定時或實時設計就是以它為基礎的。
程序理解與質量分析
程序理解是測試程序、調試程序和維護程序的基礎,也是程序質量度量、評估的基礎。國外最新研究成果表明, 維護和逆向工程工作百分之七十的時間花在對系統的理解上。為了幫助軟件測試人員進行軟件質量評測,知道軟件的哪些部分能正常運行, 哪些部分應該加以改進, 哪部分應該重新實現,那些部分要重點測試必須首先研究程序的理解技術。
CodeCAST在程序理解方面要做的工作是解決高級語言程序單元之間的調用關系、被調用關系以及程序單元內部的控制流程關系的表示和圖形顯示。
軟件質量是人們十分關心的問題,但軟件質量的評價十分復雜。為了準確地評定軟件的質量,首先必須對影響軟件質量的各個因素進行量化,然后才能通過定性與定量相結合的方法評價軟件的質量。軟件分析主要是為軟件測試人員提供度量被測軟件質量的度量數據——度量元。
CodeCAST在軟件質量分析方面要做的工作是在國際軟件質量標準ISO/IEC 9126和權威理論(McCabe結構復雜性度量)基礎上,給出那些嚴重影響程序整體質量的度量元。
軟件測試
軟件測試是檢驗軟件質量,驗證軟件功能、性能及結構正確與否的重要手段。軟件測試涉及到很多測試技術,如結構測試(覆蓋測試或“白盒”測試)、功能測試(“黑盒”測試)、單元測試、集成測試、系統測試以及回歸測試。為完成這些測試類型,需要設計測試用例,編寫測試腳本。應用測試用例和測試腳本進行軟件測試最大的好處是測試結果可以再現,測試自動化和回歸測試能夠得到保證。
CodeCAST的結構測試(覆蓋測試或“白盒”測試)是被測軟件在CPU虛擬目標機運行環(huán)境下按照測試要求運行完成的。在正式運行前,要對被測軟件在程序理解和分析的基礎上進行插樁。在程序運行以后,就可以給出覆蓋信息。覆蓋測試的結果可在調用圖、控制流圖上用醒目的顏色標注,或以統計的數據給出。
CodeCAST的功能測試(“黑盒”測試)是通過特定輸入或輸入序列,檢驗相關輸出或輸出序列來測試程序處理或程序處理流程的正確性。
CodeCAST的單元測試是通過配置程序單元的運行環(huán)境或構造程序單元運行的驅動并實際運行該程序單元完成的?;谝唤M正確的程序單元采取自底向上的方法可進行組裝測試或集成測試,最終進行系統測試。
CodeCAST通過實時獲取或改變虛擬目標機的數據和狀態(tài)來支持測試用例或測試腳本的應用。CodeCAST支持用國際上流行的高級腳本語言來編寫測試用例或測試腳本。單元測試的測試驅動也要用腳本語言來編寫。測試的自動化和回歸測試環(huán)境的建立都可用腳本編程來完成。
全數字仿真
嵌入式軟件是通過CPU的各種端口與外部硬件發(fā)生關聯,全數字仿真是針對嵌入式軟件而言的。真實CPU端口所對應的型號是電信號,嵌入式軟件在端口讀取或輸出的信號則是數據信號。因此,通過對端口I/O與中斷事件產生的邏輯編程,就能夠實現端口、中斷或外部事件的全數字仿真。
CodeCAST提供模擬外部設備產生外部激勵信號的機制(全數字仿真),即用腳本語言編寫端口事件、中斷事件以及其它外部事件的邏輯流程。
總之,全數字仿真運行平臺CRESTS/CodeCAST能夠滿足軟件仿真運行與測試的要求,方便靈活地仿真外部硬件行為,監(jiān)控程序運行的內部狀態(tài),支持軟件的覆蓋測試和功能測試的需求。
目前,嵌入式軟件全數字仿真的思想越來越受到人們的重視,其方法和技術越來越成熟,應用領域越來越廣,成功案例越來越多(軍事、國防、交通、電子等有大量的應用例子)。特別是仿真和測試腳本語言的出現,為人們編寫仿真程序提供了強有力的手段。反過來,腳本語言又很好地促進了全數字仿真概念的普及和應用的推廣。
