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