在嵌入式領域目標系統的應用系統日趨復雜,而由于競爭要求產品快速上市,開發技術日新月異,同時硬件發展的日益穩定,而軟件故障卻日益突出,軟件的重要性逐漸引起人們的重視,越來越多的人認識到嵌入式系統的測試勢在必行。提到嵌入式軟件測試,首先要簡單介紹一些軟件工程的一些觀點,現在,被普遍接受的軟件的定義是:軟件(software)是計算機系統中與硬件(hardware)相互依存的另一部分,它包括程序(program)、相關數據 (data)及其說明文檔(document)。其中程序是按照事先設計的功能和性能要求執行的指令序列;數據是是程序能正常操縱信息的數據結構;文檔是與程序開發維護和使用有關的各種圖文資料。
對于一般商用軟件的測試,嵌入式軟件測試有其自身的特點和測試困難。
由于嵌入式系統的自身特點,如實時性(Real-timing),內存不豐富,I / O通道少,開發工具昂貴,并且與硬件緊密相關CPU種類繁多,等等。嵌入式軟件的開發和測試也就與一般商用軟件的開發和測試策略有了很大的不同,可以說嵌入式軟件是最難測試的一種軟件。
嵌入式軟件測試使用有效的測試策略是唯一的出路,它可以使開發的效率最大化,避免目標系統的瓶頸,使用在線仿真器節省昂貴的目標資源。自從出現高級語言,開發環境與最終運行環境通常都是存在差異的,嵌入式系統更是如此。開發環境被認為是主機平臺,軟件運行環境為目標平臺。相應的測試為host-target測試或cross-testing。
討論嵌入式軟件測試首先就會遇到一個問題:為什么不把所有測試都放在目標上進行呢?因為若所有測試都放在目標平臺上有很多不利的因素:
1)測試軟件,可能會造成與開發者爭奪時間的瓶頸,避免它只有提供更多的目標環境。
2)目標環境可能還不可行。
3)比起主機平臺環境,目標環境通常是不精密的和不方便的。
4)提供給開發者的目標環境和聯合開發環境通常是很昂貴的。
5)開發和測試工作可能會妨礙目標環境已存在持續的應用
從經濟上和開發效率上考慮,軟件開發周期中盡可能大的比例在主機系統環境中進行, 其中包括測試。
確定host-target測試環境后,開發測試人員又會遇到以下的問題:
1)多少開發人員會卷入測試工作(單元測試,軟件集成,系統測試)?
2)多少軟件應該測試,測試會花費多長時間?
3)在主機環境和目標環境有哪些軟件工具,價格怎樣,適合怎樣?
4)多少目標環境可以提供給開發者,什么時候?
5)主機和目標機之間的連接怎樣?
6)被測軟件下載到目標機有多快?
7)使用主機與目標環境之間有什么限制(如軟件安全標準)?
任何人或組織進行嵌入式軟件的測試都應深入考慮以上問題,結合自身實際情況,選定合理測試策略和方案。
對于嵌入式軟件測試或叫交叉測試(cross-test),在測試的各個階段有著通用的策略:
1.單元測試:
所有單元級測試都可以在主機環境上進行,除非少數情況,特別具體指定了單元測試直接在目標環境進行。最大化在主機環境進行軟件測試的比例,通過盡可能小的目標單元訪問所有目標指定的界面。
在主機平臺上運行測試速度比在目標平臺上快的多,當在主機平臺完成測試,可以在目標環境上重復作一簡單的確認測試,確認測試結果在主機和目標機上沒有被他們的不同影響。在目標環境上進行確認測試將確定一些未知的,未預料到的,未說明的主機與目標機的不同。例如,目標編譯器可能有bug,但在主機編譯器上沒有。
2.集成測試:
軟件集成也可在主機環境上完成,在主機平臺上模擬目標環境運行,當然在目標環境上重復測試也是必須的,在此級別上的確認測試將確定一些環境上的問題,比如內存定位和分配上的一些錯誤。
在主機環境上的集成測試的使用,依賴于目標系統的具體功能有多少。有些嵌入式系統與目標環境耦合的非常緊密,若在主機環境做集成是不切實際的。一個大型軟件的開發可以分幾個級別的集成。低級別的軟件集成在主機平臺上完成有很大優勢,越往后的集成越依賴于目標環境。
3.系統測試和確認測試
所有的系統測試和確認測試必須在目標環境下執行。當然在主機上開發和執行系統測試,然后移植到目標環境重復執行是很方便的。對目標系統的依賴性會妨礙將主機環境上的系統測試移植到目標系統上,況且只有少數開發者會卷入系統測試,所以有時放棄在主機環境上執行系統測試可能更方便。
原文轉自:http://www.uml.org.cn/Test/200908254.asp