黃濤 孫罡 同向楠


摘要 本文主要論述了嵌入式軟件測試的方法與相關技術。
【關鍵詞】嵌入式系統 測試 技術
嵌入式系統由于其發揮的重要作用,所以對此系統的測試要及其嚴格,不斷測試確認。嵌入式系統有本身的特征,例如實時性,儲存功能不強大以及開發工具成本高等,嵌入式系統還與硬有十分密切的聯系,CPU的類別很多,嵌入式系統發生漏洞也不容易被修復。過去的軟件測試理論對于嵌入式這一特殊系統并沒有很好的作用,所以,想要嚴格準確的測試此系統,要深入研究相關方法與技術。這同時也可以不斷提高嵌入式軟件的質量。
1 測試嵌入式軟件的基本措施
嵌入式基礎需要以計算機技術為基本,以相關應用為核心,對各方面都要求十分嚴格的專業計算機系統。并且在這一系統中軟硬件之間的區分并不明顯,相比于一般的PC軟件,嵌入式系統的測試要更為復雜,可以有以下幾點:
(1)測試軟件功能依靠不要編碼的硬件作用,很難快速準確的定位軟硬件;
(2)強壯性和可知性的相關測試通過編碼的手段不能進行;
(3)交叉測試平臺的測試用例、測試結果上載困難;
(4)基于消息系統測試的復雜性,包括線程、任務、子系統之間的交互,并發、容錯和對時間的要求;
(5)性能測試、確定性能瓶頸困難;
(6)很難實現測試技術的自動化,通過對許多資料的研究,軟件測試的工作量很大,甚至有時會達到所有軟件開發工作量的一半,偶爾會有非常特殊的狀況,一些關系到人們生命安全的軟件測試消耗的成本非常大,是其他步驟的幾倍。
同時在進行測試過程中,也要考慮到軟件自身的相關因素以及軟件和相匹配的硬件與操作系統的因素。除此之外還有要求很嚴格的時間約束與實時約束,以及所有與性能相關的因素。
2全數字模擬測試
這一測試方法是指通過數學平臺的手段,把嵌入式系統單獨割裂開來成為一個獨立體,然后開發CPU指令、I/O、以及時鐘等模擬器在開發主機上進行測試。全數字模擬測試步驟簡單,對軟件的功能測試很適合,是一種常見的一般軟件的測試手段。但是這一測試手段也有其劣勢,嵌入式軟件是用多種不一樣的語言所編寫出來的,因此也就需要多種的仿真程序來進行工作,所以實時性與準確性差的測試手段不能完全反映出嵌入式軟件的具體狀況,如果并發時間需要一些同步關系時,維持協調、準確的系統時鐘、整理好時序關系非常難。所以,全數字模擬不能成為嵌入式系統軟件測試的主要措施,否則所付出的代價過大。
3 交叉測試(Host/Target測試)
在高級語言出現以來,嵌入式系統所開發與運行的環境并不是完全相同的,開發的環境被定義為主機平臺,運行環境則被定義為目標平臺,對應的測試是Host Target測試。在進行測試的過程中,可以很好的利用高級語言可移植性的特點,把工作系統中和目標環境沒有關聯的工作放在P/C上去進行,在硬件環境沒有做完整或者調試工具缺乏的情況下就可以進行,這種情況下就能使用一般的軟件測試手段。在系統中和硬件聯系密切的步驟在Target上進行,所涉及到的測試工具要支持目標環境。最后一步在目標環境中來測試檢驗。交叉測試這一手段比較適合高級語言,并且測試成本不高,使用簡單,但是也由于受到調試環境的限制,進行測試檢驗時會占據一定程度上的資源。
4 嵌入式軟件測試方法類別
按照步驟來區分可以主要分為四種測試,分別是單元測試、集成測試、確認測試以及系統測試。
4.1 單元測試
是指對最小的軟件設計單元進行測試,只有單元測試完成之后才可以進行下來的步驟。主要運用白盒測試手段,一次來保障單元最大程度的覆蓋率以及及時發現其中的缺陷錯誤。單元測試手段通常情況下可以在宿主環境中工作。對嵌入式系統進行測試通常會分為幾個單元:預處理和詞法語法分析單元、插樁單元和測試信息分析和顯示單元以及測試用例單元。
被測試的程序要第一實行預處理,主要工作是進行宏觀替換以及把短跳改編成遠跳轉。其次再驚醒語法研究,掃描好整體程序之后得到一些聯系密寫的鏈表,目的在于找到插樁函數的位置,在一些較為重要的地方插樁,再進行編程成為目標文件。在不斷運動的集成環境里,用戶可以選擇測試類別,由此產生一個記錄文件,在這個文件中會記載此測試類型中全部的函數位置,最后生成對應的測試用例。按照插樁來找文件中對應的函數。在系統進行工作時,把得到的一些數據回饋給數據機就可以把測試的相關結果保存在開始確定的文件里。測試人員就可以依照測試結果和期望值進行對比來看結果有沒有達到標準,如果沒有達到相應標準,就要利用相關工具進行研究分析。
4.2 集成測試
這是在單元測試的基礎上進行的,把這些模塊根據軟件的結構組合成一個整體成為一個單獨的系統來整體進行測試。目的在于發現程序框架與結構上的缺陷和問題。雖然在保證路徑覆蓋率上通常會使用白盒測試,但是在集成測試這一步驟中黑盒測試也比較常見。集成測試這一步驟通常會在宿主環境中進行工作。
白盒測試,又叫做機構測試,進行白盒測試相關人員可以對原始程序的代碼進行觀測,從而探究其內部形態,其次再根據這些信息,來設計相應的實例。
4.3 確認測試
這一測試方法是將軟件系統看作一個獨立的執行整體來進行的測試手段。主要作用在于檢查軟件的所有功能是不是完備,各種行為和執行命令能不能進行,這一步驟中主要運用的是黑盒測試。
4.4 系統測試
這一測試是把系統的測試軟件與其他的資源例如硬件等結合起來構造成一個計算機應用系統,之后再進行測試。主要目的在于保障系統的性能和執行的強度都達到所規定的標準。因此在系統測試中要與硬件聯系起來,也就是說和目標板同時進行測試,在目標環境下工作。
5 總結
本文主要論述了嵌入式軟件測試的相關概念和基本測試手段技術,除此之外還提出了一種有用的嵌入式軟件系統測試的結構體系。接下來的工作就是依照這一工作體系來完成嵌入式系統軟件的相關測試工作。
參考文獻
[1]孫昌愛,金茂忠.基于程序插裝的動態測試技術實現[J].小型微型計算機系統,2015,22 (12):11-12.