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

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