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