在嵌入式領(lǐng)域目標(biāo)系統(tǒng)的應(yīng)用系統(tǒng)日趨復(fù)雜,而由于競(jìng)爭(zhēng)要求產(chǎn)品快速上市,,開發(fā)技術(shù)日新月異,,同時(shí)硬件發(fā)展的日益穩(wěn)定,而軟件故障卻日益突出,,軟件的重要性 逐漸引起人們的重視,,越來越多的人認(rèn)識(shí)到嵌入式系統(tǒng)的測(cè)試勢(shì)在必行,。 由于嵌入式系統(tǒng)的自身特點(diǎn),如實(shí)時(shí)性(Real-timing),,內(nèi)存不豐富,,I/O通道少,開發(fā)工具昂貴,,并且與硬件緊密相關(guān)CPU種類繁多,,等等。嵌入式軟件的開發(fā)和測(cè)試也就與一般商用軟件的開發(fā)和測(cè)試策略有了很大的不同,,可以說嵌入式軟件是最難測(cè)試的一種軟件。嵌入式軟件測(cè)試使用有效的測(cè)試策略是唯一的出路,,它可以使開發(fā)的效率最大化,,避免目標(biāo)系統(tǒng)的瓶頸,使用在線仿真器節(jié)省昂貴的目標(biāo)資源,。 通過多年來前人的不斷努力,,我們已經(jīng)掌握了一些專門針對(duì)嵌入式軟件特性的測(cè)試方法和技術(shù),經(jīng)過對(duì)現(xiàn)有的這些測(cè)試方法和技術(shù)的總結(jié)和分析,,我們可以把嵌入式軟件的測(cè)試分為軟件測(cè)試方法,,硬件測(cè)試方式和軟硬件結(jié)合的測(cè)試方法。由于嵌入式系統(tǒng)資源有限,,很難提供軟件開發(fā),、調(diào)試所需要的相關(guān)資源和工具,因此嵌入式系統(tǒng)的這個(gè)特點(diǎn)也限制了嵌入式軟件的測(cè)試,。所以對(duì)于嵌入式軟件測(cè)試來說,,也有基于宿主機(jī)的測(cè)試和基于目標(biāo)機(jī)的測(cè)試之分。本文將對(duì)幾種常用的嵌入式測(cè)試方法進(jìn)行分析和對(duì)比,。 軟件測(cè)試方法軟件測(cè)試方法的目的就是盡量減少嵌入式軟件在目標(biāo)環(huán)境下測(cè)試的時(shí)間,,不需要為了完成測(cè)試工作而建立專用的硬件測(cè)試環(huán)境,降低測(cè)試的成本,。軟件測(cè)試方法一般是通過在宿主平臺(tái)上建立一個(gè)軟件方針測(cè)試環(huán)境來完成對(duì)被測(cè)軟件的測(cè)試,。按照仿真環(huán)境和仿真方式的不同,基于軟件仿真的測(cè)試方法可以分為兩類:一類為了實(shí)現(xiàn)仿真支持,,要求用戶改寫代碼,,使用測(cè)試環(huán)境提供的輸入/輸出函數(shù)代替被測(cè)程序中的I/O訪問。Pmsoft公司的ESIM就是這類測(cè)試工具的典型代表,,它通過在宿主機(jī)上運(yùn)行C語言編寫的嵌入式軟件來完成測(cè)試過程,。被測(cè)軟件經(jīng)過C編譯器編譯后被連接到ESIM環(huán)境的庫中,不但有指令的仿真,,還包括輸入/輸出操作的仿真,。其特點(diǎn)是仿真環(huán)境構(gòu)造相對(duì)簡(jiǎn)單,,仿真速度快,因?yàn)闊o需使用指令仿真器,。 另一類是完全以軟件仿真的方式實(shí)現(xiàn)嵌入式軟件的測(cè)試,,不需要任何目標(biāo)設(shè)備的支持。例如SDS公司的SingleSTEP,。它允許用戶在沒有目標(biāo)機(jī)和I/O設(shè)備,、并且無需修改被測(cè)程序的情況下完成對(duì)被測(cè)軟件的測(cè)試工作。這樣的工具還有Ready公司的RTAda-SIM等,。這類方法構(gòu)造軟件仿真測(cè)試環(huán)境費(fèi)時(shí)費(fèi)力,,而且仿真速度較慢。 硬件測(cè)試方法常用的硬件測(cè)試方法主要包括總線監(jiān)視器,、仿真存儲(chǔ)器,、在線仿真器ICE和邏輯分析儀等??偩€監(jiān)視器通過觀察總線上的數(shù)據(jù)和指令來獲得程序執(zhí)行的可視性,,在對(duì)流經(jīng)總線的數(shù)據(jù)進(jìn)行分析時(shí)完成一些相關(guān)的測(cè)試工作。 仿真存儲(chǔ)器的工作原理開發(fā)商在存儲(chǔ)器中包含覆蓋位,,當(dāng)訪問到某個(gè)內(nèi)存地址的同時(shí)設(shè)置覆蓋位,。程序運(yùn)行結(jié)束后,就可以看到仿真存儲(chǔ)器被“命中”的部位,,并從中推算出測(cè)試覆蓋率的百分比,。通過連續(xù)把系統(tǒng)內(nèi)存“映射”到仿真存儲(chǔ)器就可以得到測(cè)試覆蓋率的統(tǒng)計(jì)結(jié)果。 在線仿真器ICE是用來仿真CPU核心的設(shè)備,,它可以在不干擾運(yùn)算器的正常運(yùn)行情況下,,實(shí)時(shí)的檢測(cè)CPU的內(nèi)部工作情況。當(dāng)ICE停止時(shí)它內(nèi)部的寄存器內(nèi)容可以被讀出,,還允許用戶設(shè)定斷點(diǎn),、檢測(cè)和修改CPU狀態(tài)。ICE的不足之處在于它對(duì)特定的微處理器來說是專用的,。 邏輯分析儀則是通過設(shè)置各種的邏輯條件,,實(shí)時(shí)記錄下內(nèi)存訪問的活動(dòng),所以也可以把它作為測(cè)試覆蓋率的工具,。由于邏輯分析儀是用在“觸發(fā)捕獲”模式下的,,所以把跟蹤的數(shù)據(jù)轉(zhuǎn)化為覆蓋率數(shù)據(jù)是比較困難的。因此一般用在邏輯分析儀進(jìn)行測(cè)試時(shí),,采用統(tǒng)計(jì)采樣的方法,。 上述的這些硬件測(cè)試方法對(duì)被測(cè)軟件的運(yùn)行影響很少,但是它只能獲得被測(cè)程序較低層次的信息,,需要測(cè)試人員來完成從這些低級(jí)的信息到被測(cè)軟件高層結(jié)構(gòu)的映射,,測(cè)試效率比較低,。 軟硬件結(jié)合的測(cè)試方法AMC公司的CodeTEST是一種軟硬件結(jié)合的實(shí)時(shí)嵌入式軟件測(cè)試工具,它仍然采用了傳統(tǒng)的軟件插樁方法,,但由于硬件采集的存在可以使得插入的額外代碼減少,,對(duì)目標(biāo)系統(tǒng)的影響降低,同時(shí)也克服了邏輯分析儀不能長(zhǎng)時(shí)間連續(xù)進(jìn)行采集的缺點(diǎn),。由于一些額外代碼的存在也會(huì)對(duì)被測(cè)程序的執(zhí)行行為產(chǎn)生一定的影響,,從而使得干擾的存在,在一定程度上影響測(cè)試的結(jié)果,。根據(jù)AMC提供的分析數(shù)據(jù),,這種干涉效應(yīng)為1%-15%。 為了解決實(shí)時(shí)軟件測(cè)試過程中引入額外的代碼而產(chǎn)生的探針效應(yīng)問題,,也有人研究軟硬件相結(jié)合的實(shí)時(shí)嵌入式軟件測(cè)試方法,。在這些方法中,為了解決某個(gè)特定應(yīng)用中嵌入式軟件的實(shí)時(shí)性測(cè)試問題,,需要開發(fā)專門的硬件設(shè)備和上層分析軟件。因此通用性不好,,而且實(shí)現(xiàn)困難,,測(cè)試成本高。 基于宿主機(jī)的測(cè)試基于宿主機(jī)的測(cè)試是指完全利用宿主平臺(tái)上豐富的資源和工具來對(duì)嵌入式軟件進(jìn)行測(cè)試,,不需要依賴目標(biāo)系統(tǒng)的支持,。基于宿主機(jī)的測(cè)試極大地提高了被測(cè)軟件執(zhí)行可視性和可控性,。因此測(cè)試過程中我們能夠以較少代價(jià),、較高的效率發(fā)現(xiàn)和定位軟件設(shè)計(jì)中的錯(cuò)誤。另外,,基于宿主機(jī)的測(cè)試在完全脫離目標(biāo)平臺(tái)的情況下完成對(duì)嵌入式軟件的測(cè)試工作,,可以盡早發(fā)現(xiàn)軟件設(shè)計(jì)中的錯(cuò)誤,避免了在軟硬件集成時(shí)才來發(fā)現(xiàn)和定位問題,。從而減少了軟件的測(cè)試成本,、降低了開發(fā)風(fēng)險(xiǎn)。目前,,已經(jīng)有很多的研究工作是把嵌入式軟件的測(cè)試轉(zhuǎn)移到宿主平臺(tái)環(huán)境中進(jìn)行,。 基于目標(biāo)機(jī)的測(cè)試無論在宿主機(jī)上進(jìn)行的測(cè)試如何完善,基于目標(biāo)系統(tǒng)的測(cè)試仍然不可替代,。因?yàn)橛行﹩栴}只有在目標(biāo)機(jī)上測(cè)試時(shí)在能夠發(fā)現(xiàn),,例如軟硬件接口。當(dāng)然,,基于目標(biāo)機(jī)的測(cè)試并不能僅僅依靠目標(biāo)系統(tǒng)來完成全部的測(cè)試,。為了解決目標(biāo)機(jī)平臺(tái)測(cè)試時(shí)可視性和可控性有限,、測(cè)試效率低的問題,基于目標(biāo)機(jī)的測(cè)試一般都是采用宿主機(jī)/目標(biāo)機(jī)(Host/Target)交叉的測(cè)試模式,。被測(cè)軟件運(yùn)行在目標(biāo)系統(tǒng)中,,宿主機(jī)負(fù)責(zé)控制目標(biāo)系統(tǒng)的運(yùn)行并且反饋目標(biāo)系統(tǒng)的狀態(tài)來實(shí)現(xiàn)測(cè)試。這樣一方面實(shí)現(xiàn)了軟件在真實(shí)的目標(biāo)環(huán)境下的測(cè)試,,而且又充分利用宿主機(jī)上豐富的資源和工具,,高效、低成本的完成嵌入式軟件的測(cè)試工作,。 本文轉(zhuǎn)自慧都控件網(wǎng)
|
|