用創(chuàng)新架構(gòu)實(shí)現(xiàn)實(shí)時(shí)嵌入式軟件測(cè)試環(huán)境
掃描二維碼
隨時(shí)隨地手機(jī)看文章
日常生活當(dāng)中我們經(jīng)常接觸到的軟件是PC機(jī)上運(yùn)行的桌面軟件,我們用這些軟件寫文章、填報(bào)表、玩游戲、瀏覽互聯(lián)網(wǎng)。
但實(shí)際生活當(dāng)中使用最多的其實(shí)是嵌入式軟件,從最簡(jiǎn)單的電子表、遙控器、MP3播放器,到手機(jī)、汽車、工業(yè)控制系統(tǒng),再到極其復(fù)雜的飛機(jī)、火箭、核電站,在所有采用電子控制裝置的系統(tǒng)中,都或多或少地存在著嵌入式軟件的蹤跡。從使用數(shù)量來看,世界上絕大多數(shù)的軟件是嵌入式軟件。
嵌入式軟件的測(cè)試挑戰(zhàn)
由于其自身的特點(diǎn),嵌入式軟件的測(cè)試與傳統(tǒng)桌面軟件的測(cè)試有很大不同。嵌入式軟件的開發(fā)環(huán)境是通用的PC,但運(yùn)行環(huán)境是內(nèi)嵌的一個(gè)小型計(jì)算機(jī)系統(tǒng),導(dǎo)致測(cè)試時(shí)的運(yùn)行環(huán)境不是實(shí)際的運(yùn)行環(huán)境,因此在開發(fā)環(huán)境中對(duì)嵌入式軟件的測(cè)試必然是不充分的。
其次,大多數(shù)嵌入式軟件都有實(shí)時(shí)性的要求,要求測(cè)試環(huán)境本身也是實(shí)時(shí)的,否則軟件的實(shí)時(shí)特性就無(wú)法測(cè)出來。在PC機(jī)上的測(cè)試往往是仿真運(yùn)行的,很難測(cè)出軟件的時(shí)序關(guān)系、邏輯關(guān)系,以及精度、性能等和時(shí)間相關(guān)的因素。
第三,是對(duì)整個(gè)測(cè)試環(huán)境的構(gòu)建。如心臟起搏器和飛機(jī)的飛控系統(tǒng)軟件,是無(wú)法在實(shí)際的運(yùn)行過程中測(cè)試的。因此如何構(gòu)建仿真的測(cè)試環(huán)境,并盡可能提高測(cè)試環(huán)境的真實(shí)程度是一個(gè)挑戰(zhàn)。
中航一集團(tuán)計(jì)算機(jī)軟件可靠性管理與測(cè)評(píng)中心是國(guó)內(nèi)專業(yè)的嵌入式軟件測(cè)試工具和服務(wù)提供商,先后推出了通用嵌入式軟件仿真測(cè)試環(huán)境GESTE 1.0和2.0版,為解決嵌入式軟件的測(cè)試提供了易用、靈活、可擴(kuò)展的解決方案。
本刊記者采訪了中航一集團(tuán)計(jì)算機(jī)軟件可靠性管理與測(cè)評(píng)中心、中航二集團(tuán)計(jì)算機(jī)質(zhì)量可靠性管理與測(cè)評(píng)中心的主任劉斌博士,詳細(xì)了解了GESTE 2.0的特點(diǎn)和創(chuàng)新之處。
組件化與分層設(shè)計(jì)實(shí)現(xiàn)通用性
劉斌介紹說,GESTE 2.0采用了組件化和構(gòu)件化設(shè)計(jì),可以通過模塊直接的疊加,完成對(duì)通用的嵌入式軟件進(jìn)行測(cè)試。GESTE把半實(shí)物仿真的技術(shù)應(yīng)用于嵌入式軟件的測(cè)試,同時(shí)又實(shí)現(xiàn)了通用性,這是它的創(chuàng)新之處(圖1)。
仿真方式首先是要讓被測(cè)系統(tǒng)感覺到它捕捉到的信號(hào)和控制的東西都是真實(shí)的,接口輸入和輸出的都是真實(shí)的模擬量和數(shù)字量,只是接口后面的模型是仿真的,不需要使用實(shí)物來產(chǎn)生信號(hào)。
由于嵌入式軟件一般是實(shí)時(shí)軟件,算法、時(shí)序關(guān)系和代碼是非常精巧的。如果在測(cè)試時(shí)改變它,如插裝,或改寫一些程序,軟件的時(shí)序關(guān)系就變得不確定了,無(wú)法保證測(cè)試的準(zhǔn)確性。為了避免這個(gè)問題,GESTE采用了非侵入式的方式,不對(duì)軟件進(jìn)行改動(dòng),而是從外部的接口來測(cè)試、觸發(fā)。從模塊到組件,從組件到軟件系統(tǒng),再?gòu)能浖到y(tǒng)與硬件系統(tǒng)結(jié)合到一起,到運(yùn)行環(huán)境,是自下而上、自低級(jí)到高級(jí)的測(cè)試環(huán)境。單元和組件是可以改變和侵入的,只有到軟件集成階段,才是GESTE要解決的。
另外,通用和性能之間是一對(duì)矛盾。GESTE采用基于模型驅(qū)動(dòng)的仿真測(cè)試原理,相當(dāng)于把原來嵌入式軟件測(cè)試的兩層模型改成了三層模型,又通過精巧的算法解決了多增加一層所帶來的性能損失問題。
在仿真建模方面,GESTE提供了代碼自動(dòng)生成功能。GESTE可以直接從接口控制文件,或者稱接口協(xié)議,自動(dòng)地把這個(gè)仿真模型的框架生成出來,使測(cè)試人員可以專注于測(cè)試,而不用去管如何與環(huán)境之間交聯(lián),這是GESTE所獨(dú)有的創(chuàng)新功能。
可定制的測(cè)試環(huán)境
劉斌領(lǐng)導(dǎo)的開發(fā)小組還設(shè)計(jì)了專用的測(cè)試腳本語(yǔ)言,解決了并發(fā)性、時(shí)序關(guān)系的描述性、多任務(wù)等測(cè)試需求。新腳本語(yǔ)言的解釋器和實(shí)時(shí)虛擬機(jī)是建立在實(shí)時(shí)操作系統(tǒng)VxWorks上,既可以半編譯半解釋執(zhí)行,也可以完全編譯后執(zhí)行。
GESTE在易用性、切合測(cè)試人員的實(shí)際需求方面下了很大功夫。如GESTE提供了測(cè)試用例的管理功能,采取了分級(jí)管理的方式。GESTE使用了Windows風(fēng)格的界面和使用方式,迎合了中國(guó)用戶的習(xí)慣和實(shí)際情況。
GESTE 2.0里面有專門的數(shù)據(jù)收集模型,由設(shè)計(jì)人員進(jìn)行定義,既可以機(jī)械地把數(shù)據(jù)全部采集進(jìn)來,也可以設(shè)定觸發(fā)條件,如到某個(gè)時(shí)間點(diǎn)采集數(shù)據(jù),或出現(xiàn)某種情況后采集,從而實(shí)現(xiàn)數(shù)據(jù)壓縮。
GESTE的特點(diǎn)之一是可以通過二次開發(fā),變成專用的測(cè)試平臺(tái)。設(shè)計(jì)人員可以通過MatLab的建模生成模型框架,也可以通過統(tǒng)一通訊協(xié)議把其它工具開發(fā)的算法內(nèi)嵌進(jìn)來,使各個(gè)模型之間關(guān)聯(lián)起來。GESTE可以直接調(diào)用其它軟件生成的可執(zhí)行的目標(biāo)碼。劉斌說,統(tǒng)一通訊協(xié)議是測(cè)評(píng)中心自主開發(fā)的軟件接口,吸取了航天、軍工等很多行業(yè)在開發(fā)軟件接口方面的諸多經(jīng)驗(yàn),現(xiàn)已成為標(biāo)準(zhǔn)的接口。
GESTE可以從早期的快速原型驗(yàn)證,到中期的單元測(cè)試、集成測(cè)試中,起到輔助作用,而在系統(tǒng)測(cè)試中起到主導(dǎo)作用。在原型沒有做出來的時(shí)候,可以在GESTE上把所有的部件或接口仿真出來,看設(shè)計(jì)的時(shí)序關(guān)系是不是正常,也可以把MatLab引入進(jìn)來。進(jìn)行了單元測(cè)試與集成測(cè)試之后的軟件需要在實(shí)際運(yùn)行環(huán)境中運(yùn)行,這時(shí)可以利用GESTE的仿真源實(shí)現(xiàn)仿真和激勵(lì),從而對(duì)軟件施加仿真測(cè)試。
硬件與軟件結(jié)構(gòu)
GESTE的體系機(jī)構(gòu)采用主從式設(shè)計(jì),整個(gè)測(cè)試環(huán)境由兩臺(tái)通過以太網(wǎng)連接的計(jì)算機(jī)構(gòu)成,宿主機(jī)主要負(fù)責(zé)測(cè)試準(zhǔn)備階段的任務(wù),實(shí)時(shí)處理機(jī)主要負(fù)責(zé)測(cè)試運(yùn)行時(shí)任務(wù)。測(cè)試環(huán)境與被測(cè)系統(tǒng)之間的連接是依靠實(shí)時(shí)處理機(jī)與被測(cè)系統(tǒng)之間的硬件I/O接口(圖2)。
GESTE的這種主從式結(jié)構(gòu),通過基于Windows的宿主機(jī)為用戶提供圖形化的測(cè)試用例管理、測(cè)試腳本和仿真模型的開發(fā)環(huán)境,而基于VxWorks的實(shí)時(shí)處理機(jī)用來運(yùn)行測(cè)試用例,實(shí)現(xiàn)自動(dòng)化的測(cè)試執(zhí)行過程,并滿足被測(cè)系統(tǒng)的實(shí)時(shí)性要求。宿主機(jī)和實(shí)時(shí)處理機(jī)之間是非實(shí)時(shí)通信機(jī)制,實(shí)時(shí)處理機(jī)則采用強(qiáng)實(shí)時(shí)通信機(jī)制,確保與被測(cè)系統(tǒng)之間的實(shí)時(shí)數(shù)據(jù)通信。
實(shí)時(shí)處理機(jī)軟件是仿真測(cè)試環(huán)境與被測(cè)系統(tǒng)之間的橋。用戶在宿主機(jī)上開發(fā)的測(cè)試腳本和仿真模型通過以太網(wǎng)下載到實(shí)時(shí)處理機(jī),以測(cè)試任務(wù)的形式在實(shí)時(shí)處理機(jī)上實(shí)時(shí)地運(yùn)行,并且被有序地組織成被測(cè)系統(tǒng)可以接收的數(shù)據(jù),通過I/O驅(qū)動(dòng)發(fā)送到被測(cè)系統(tǒng),同時(shí)接收從被測(cè)系統(tǒng)返回的數(shù)據(jù)結(jié)果并進(jìn)行保存。
實(shí)時(shí)處理機(jī)軟件采用三層結(jié)構(gòu)設(shè)計(jì):應(yīng)用層、系統(tǒng)服務(wù)層和核心層。核心層是軟件的關(guān)鍵部分,它提供了整個(gè)系統(tǒng)的任務(wù)管理和實(shí)時(shí)調(diào)度機(jī)制,以及測(cè)試任務(wù)間數(shù)據(jù)通信的實(shí)現(xiàn)機(jī)制。系統(tǒng)服務(wù)層是測(cè)試環(huán)境為滿足測(cè)試要求而提供的一系列系統(tǒng)服務(wù)的集合,包括數(shù)據(jù)的實(shí)時(shí)收集、顯示,以及下載數(shù)據(jù)信息等測(cè)試服務(wù)。系統(tǒng)服務(wù)層建立在核心層中提供的各種機(jī)制之上,同時(shí)又為應(yīng)用層提供服務(wù)。應(yīng)用層面向用戶,用戶可以根據(jù)測(cè)試需求,并通過服務(wù)層提供的各種服務(wù)組織測(cè)試過程,其中包括開發(fā)仿真模型和編寫測(cè)試腳本等。
通常一次完整的系統(tǒng)仿真測(cè)試包括:測(cè)試準(zhǔn)備、測(cè)試執(zhí)行和測(cè)試結(jié)果分析三個(gè)階段。GESTE可以在上述三個(gè)階段都提供相應(yīng)的工具支持,盡量提高測(cè)試的自動(dòng)化水平。
劉斌總結(jié)到,GESTE把傳統(tǒng)的技術(shù)和通用原理巧妙地組合在一起,把基于半實(shí)物仿真的平臺(tái)擴(kuò)展到嵌入式軟件的實(shí)時(shí)測(cè)試。自1998年設(shè)計(jì)出這個(gè)體系結(jié)構(gòu)以后,迄今為止都沒有大的改動(dòng)。在GESTE中以模型為單元運(yùn)行。在模型間通過協(xié)議保證協(xié)同工作,模型間通過測(cè)試總線相連,稱為測(cè)試統(tǒng)一通信協(xié)議。各個(gè)模型可以組合,也可分開,可以有時(shí)序,也可以并行執(zhí)行。GESTE在測(cè)試腳本和硬件測(cè)試中間加了一層,解決了性能和通用性問題。
劉斌透露,GESTE的后繼版本也可能支持QNX、RTLinux等RTOS,并且,有一個(gè)小組正在開發(fā)基于開源RTOS的專用于嵌入式軟件測(cè)試的操作系統(tǒng),把一些軟件測(cè)試的常用服務(wù)和模式做成一個(gè)服務(wù),這樣就可以大大提高應(yīng)用性、系統(tǒng)精度和性能。由于GESTE采用分層設(shè)計(jì),已經(jīng)把操作系統(tǒng)屏蔽掉了,只要設(shè)計(jì)新的接口,就可以在新的操作系統(tǒng)上運(yùn)行起來。