CODETEST嵌入式軟件在線測試與分析工具在嵌入式系統開發中的應用 軟件測試
摘要:嵌入式軟件的應用與開發是當今計算機軟件發展的一個熱點。本文首先分析了在嵌入式系統開發中軟件開發的重要性,接著分析了傳統測試方式的缺點,并在此基礎上介紹了AMC公司的CODETEST嵌入式軟件在線分析與測試解決方案。
關鍵字: 嵌入式 軟件分析 軟件測試 動態測試 實時 白盒測試
引言:隨著嵌入式技術的發展,嵌入式應用的不斷增長以及嵌入式系統復雜性不斷提高,要求嵌入式軟件的規模和復雜性也不斷提高,嵌入式軟件的質量和開發周期對產品的最終質量和上市時間起到決定性的影響,嵌入式軟件的開發、分析與測試成為了研究的熱點。針對這一變化,本文提出了一種為嵌入式軟件的開發、分析與測試特別設計的一種測試方法。
嵌入式軟件分析與測試的重要性
隨著計算機硬件技術的進步和元件質量逐步提高,元件的集成量也大大增加,從而使嵌入式設備的硬件性能得到了極大的提高;與此同時,通過采用成熟的商用操作系統,使系統運行在一個高性能的、可靠的軟件平臺上,為實現各種大型的復雜的應用打下了良好的基礎。面對系統復雜性的增加,自然需要功能強大、性能穩定的應用軟件與之相適應。所以,在嵌入系統開發中軟件的代碼量也越來越大,電子類產品的代碼量以每兩年就翻一翻的速度增長。同時,系統又要求應用也要精簡高效、穩定可靠,使軟件的開發在整個系統開發中所占的時間也越來越長,軟件的質量對產品的最終質量起到了決定性的作用。但是事實上由于軟件的開發缺乏科學的管理手段,開發的軟件得不到很好的測試與分析,所編寫的程序沒有得到有效的測試就交付給用戶使用。那些沒有運行過的代碼帶著潛在的危險交付到客戶手中,經常會給用戶帶來巨大的經濟損失、為產品供應商帶來信譽上的損失,在一些特殊的領域甚至會危及人的生命安全。
綜上所述,隨著嵌入式系統的發展,我們迫切需要一種工具能夠在軟件開發的單板階段、集成階段、系統階段等各階段對嵌入式系統的軟件進行實時在線的測試與分析,以保證系統的性能和可靠性。
市面上流行的測試工具大致分為純軟件的測試工具和純硬件的測試工具(如邏輯分析儀和仿真器等),下面我們從原理上分析使用傳統的測試工具對嵌入式軟件進行分析和測試的優缺點。
純軟件的測試工具
純軟件的測試工具采用的是軟件打點技術,在被測代碼中插入一些函數,用這些函數來完成數據的生成,并上送數據到目標系統的共享內存中。同時在目標系統中運行一個預處理任務,完成這些數據的預處理,將處理后的數據通過目標機的網口或串口上送到主機平臺。這一切都需借助于用戶的目標處理器完成。通過以上過程,測試者得以知道程序當前的運行狀態。 從上述分析可知,純軟件的測試工具的測試原理有兩個必然存在的特點——插樁函數和預處理任務。
由于插入插樁函數和預處理任務的存在,使系統的代碼增大,更嚴重的是這些代碼會對系統的運行效率有很大的影響(超過50%)。函數本身要有它的實現過程,它要完成數據的生成和暫存,而且這些函數在它的實現過程中還可能被其他優先級更高的中斷程序所中斷,預處理任務需要占用目標系統CPU處理時間、共享內存和通信通道完成數據的處理、數據的上送。由于這些弊端的存在,當采用純軟件測試工具對目標系統進行測試時,用戶目標系統是在一種不真實的環境下運行的,我們所捕獲的數據也是不夠精確。
所以采用純軟件的測試工具缺乏性能分析,它不能對用戶目標系統中的函數和任務運行的時間指標進行精確的分析。
當做覆蓋率分析的時候,因為要大量打點,而打點多于200時就會影響系統的運行,所以只能做單元覆蓋率分析且單元的程序量不能太大。
它不能對內存的動態分配進行動態的觀察。
純硬件的測試工具
純硬件工具通常用于系統的硬件設計與測試工作。當它用于軟件的分析測試時,卻無法滿足用戶的基本要求。
以邏輯分析儀為例,邏輯分析儀是通過監控系統在運行時總線上的指令周期,并以一定的頻率捕獲這些信號,通過對捕獲的信號進行分析來判斷程序當前運行的狀況。由于它使用的是采樣的方式,難免會遺失一些重要的信號;同時,分析的范圍也及其有限。以性能分析為例,當使用某種邏輯分析儀進行性能分析時,我們只能以抽樣的方式,同時對80個函數做性能分析,得到一個不精確的結果;而若使用CodeTEST,我們可以同時對128000個函數做性能分析,得到一個精確的結果。
當對程序做覆蓋率分析時,因為硬件工具是從系統總線捕獲數據的,如當CACHE打開我們會采用指令預取技術,從外存中讀一段代碼到一級CACHE 中,這時邏輯分析儀在總線上監視到這些代碼被讀取的信號,就會報告這些代碼已經被執行了,但實際上被送到CACHE中的代碼可能根本沒有被命中。為了避免這種誤差必須把CACHE關閉掉,而CACHE關掉就不是系統真實的運行環境了,有時甚至會由于CACHE關閉而導致系統無法正常運行。
文章來源于領測軟件測試網 http://www.kjueaiud.com/