軟件開(kāi)發(fā):如何做好(hǎo)嵌入式軟件開(kāi)發(fā)測試

2018-07-30 09:54:59

計算機技術的不斷發(fā)展帶動軟件功能(néng)的不斷強大,市場對(duì)軟件的需要越來越高。實際上,計算機軟件的發(fā)展與市場需要存在一定的不同步現象,導緻用戶使用過(guò)程中存在一定的故障,這(zhè)些故障嚴重時會(huì)造成(chéng)嚴重的經(jīng)濟損失。因此改善軟件質量是計算機領域的重要工作。嵌入式軟件由于自身的特點,被(bèi)應用到軍用設備中,因此對(duì)其進(jìn)行研究,并做好(hǎo)相關的測試工作對(duì)于發(fā)展軟件工程具有重要現實意義。    

1 嵌入式軟件特點    

研究嵌入式軟件的特點應該從嵌入式系統開(kāi)始了解,通常在嵌入式系統的開(kāi)發(fā)過(guò)程中,需要進(jìn)行軟硬件的獨立開(kāi)發(fā)。硬件部分的開(kāi)發(fā)會(huì)形成(chéng)裸機平台,軟件部分則需要進(jìn)行獨立單元、獨立部分以及配置項的編程工作。在硬件平台測試通過(guò)以後(hòu),才能(néng)將(jiāng)相應的軟件在硬件平台上進(jìn)行集成(chéng),并開(kāi)展各種(zhǒng)功能(néng)和性能(néng)的調試工作。    

嵌入式系統開(kāi)發(fā)時,底層驅動程序、操作系統以及應用程序之間存在一定的關聯,不能(néng)將(jiāng)三者獨立進(jìn)行開(kāi)發(fā)。通常根據需要還(hái)會(huì)對(duì)其進(jìn)行一定的綜合以滿足開(kāi)發(fā)的需要。嵌入式系統的開(kāi)發(fā)過(guò)程實際上是軟硬件之間相互協調、相互反饋、相互測試的過(guò)程,系統的功能(néng)和性能(néng)也會(huì)在測試的過(guò)程中得到體現。嵌入式系統開(kāi)發(fā)過(guò)程中,軟件開(kāi)發(fā)對(duì)硬件具有較強的依賴性,因此在進(jìn)行軟件測試時,應該跟硬件進(jìn)行結合以保證測試效果。    

通常情況下,嵌入式軟件缺乏繼承性,因此需要保證跟硬件之間形成(chéng)一對(duì)一的關系。硬件在不斷的發(fā)展升級過(guò)程中,軟件也需要不斷開(kāi)發(fā)滿足硬件的需要。這(zhè)種(zhǒng)情況會(huì)造成(chéng)軟件編程的工作量加大,繼承性較差。除此之外,硬件的更新速度本身就(jiù)比較快,因此容易出現軟硬件不匹配的情況。因此在實際測試過(guò)程中需要兩(liǎng)者之間相互協調,才能(néng)确定最終的功能(néng)和性能(néng)指标。    

2 軟件測試過(guò)程中遇到的問題   

軟件測試工作對(duì)于保證軟件的功能(néng)和質量具有重要作用,對(duì)于軟件而言,測試工作開(kāi)始的越早,對(duì)質量的控制情況越好(hǎo)。傳統的軟件測試主要包括單元測試、部件測試、配置項測試以及系統集成(chéng)測試四個部分。這(zhè)種(zhǒng)測試方式适用于脫離軟硬件平台的測試,對(duì)于嵌入式軟件的測試,會(huì)出現一定的問題:    

(1)嵌入式軟件的開(kāi)發(fā)過(guò)程中,産品的功能(néng)和性能(néng)通過(guò)軟硬件的結合發(fā)揮作用。在實際測試工作中,需要進(jìn)行一定的調整工作,這(zhè)種(zhǒng)調整實際上是對(duì)軟硬件的一種(zhǒng)協調。但在軟件測試中,通常會(huì)采用預防爲主的理念,這(zhè)就(jiù)跟嵌入式軟件的測試發(fā)生了沖突,因此在實際進(jìn)行測試時應該做好(hǎo)調整工作。    

(2)對(duì)軟件進(jìn)行重大修改或者新研發(fā)設備的測試過(guò)程中,由于算法、功能(néng)和性能(néng)上脫離實際平台,因此需要進(jìn)行進(jìn)一步的驗證工作。在C3I等控制軟件開(kāi)發(fā)過(guò)程中,設備與指控中心是獨立開(kāi)發(fā)的,經(jīng)常會(huì)出現接口協議沖突問題,因此系統在調試過(guò)程中需要進(jìn)行較大改動,這(zhè)樣(yàng)對(duì)于早期版本進(jìn)行測試對(duì)軟件的實際質量作用不大。    

(3)軟件測試中的單元測試、部件測試、配置項測試、系統集成(chéng)測試等,都(dōu)會(huì)包含功能(néng)測試和性能(néng)測試工作。但在嵌入式軟件的測試過(guò)程中由于缺乏測試平台,導緻功能(néng)和性能(néng)上的測試難以實現,形成(chéng)了諸多矛盾。    

嵌入式軟件在測試過(guò)程中出現的種(zhǒng)種(zhǒng)矛盾導緻軟件測試工作難以開(kāi)展。一方面(miàn)軟件的單元測試、部件測試以及配置項測試需要跟硬件進(jìn)行結合才能(néng)開(kāi)展調試工作;另一方面(miàn)這(zhè)些部分的測試由于沒(méi)有裝入硬件平台進(jìn)行實際測試,因此無法确定是否符合相關的匹配要求,完成(chéng)最終的測試工作。    

3 嵌入式軟件測試的基本方法    

嵌入式系統以計算機技術爲基礎,以應用爲中心,軟硬件可以進(jìn)行調整。嵌入式系統的軟硬件功能(néng)聯系緊密,不能(néng)單獨完成(chéng)測試工作,因此嵌入式軟件測試相比于PC系統軟件測試難度更高。嵌入式軟件系統測試具有以下特點:    

(1)測試軟件功能(néng)對(duì)硬件功能(néng)依賴性強,難以快速定位軟硬件錯誤;    

(2)使用編碼難以完成(chéng)強壯性測試、可知性測試;    

(3)在交叉測試平台上的測試用例、測試結果上載難度較大;    

(4)由于消息系統測試具有一定的複雜性,因此線程、任務、子系統之間的交互,并發(fā)、容錯和對(duì)時間的要求都(dōu)較高;    

(5)嵌入式軟件系統的重要特征還(hái)體現在性能(néng)測試、确定性能(néng)瓶頸困難;    

(6)由于測試過(guò)程中需要考慮的因素較多,難以實施測試自動化技術。軟件測試在工程開(kāi)發(fā)上,本身投入較大,成(chéng)本較高。嵌入式軟件測試系統由于自身的複雜性和綜合性,相應的成(chéng)本會(huì)持續擴大。    

綜合以上嵌入式軟件系統測試的特點,常用的測試方式主要有全數字模拟測試與交叉測試兩(liǎng)種(zhǒng),接下來筆者詳細分析兩(liǎng)種(zhǒng)測試技術。    

3.1 全數字模拟測試    

全數字模拟測試是一種(zhǒng)利用數學(xué)平台的方式,可以將(jiāng)嵌入式軟件從系統中分離出來。通過(guò)對(duì)CPU指令、常用芯片、I/O、中斷、時鍾等模拟器的開(kāi)發(fā)在開(kāi)發(fā)主機平台(Host)上完成(chéng)嵌入式軟件的測試。這(zhè)種(zhǒng)測試方式比較簡單,對(duì)于軟件的功能(néng)測試具有較好(hǎo)的适用性。但全數字模拟測試方式本身具備一定的局限性,對(duì)于不同編程語言完成(chéng)的軟件需要通過(guò)不同的仿真程序完成(chéng)測試工作。實時性、準确性和通用性都(dōu)比較差。另外完全搭建測試環境花花費的成(chéng)本過(guò)高,因此全數字模拟測試隻能(néng)作爲嵌入式軟件測試的輔助手段。    

3.2 交叉測試(Host/Target測試)   

由于高級語言的影響,嵌入式系統的開(kāi)發(fā)環境和運行環境存在一定的差異。開(kāi)發(fā)環境可以視爲主機平台(Host),軟件運行環境視爲目标平台(Target),這(zhè)種(zhǒng)測試方式又稱爲HostTarget測試(交叉測試)。在進(jìn)行測試工作時,利用高級語言的可移植性優勢,將(jiāng)與目标環境無關的測試工作移植到PC平台上完成(chéng)。在硬件環境未搭建好(hǎo)之前或者設備工具缺乏的情況下,可以利用常規軟件測試的方式完成(chéng)測試工作。系統中與硬件相關的測試工作需要在Target上完成(chéng),使用測試工具必須保證支持目标環境,最終對(duì)目标環境進(jìn)行确認,完成(chéng)整體的測試工作。這(zhè)種(zhǒng)測試方式适用于高級語言,操作簡單測試成(chéng)本較低。缺點是實時性較差,并且在目标環境的測試中需要占用一定的目标資源。   

4 提高嵌入式軟件測試水平的策略    

嵌入式軟件的測試技術還(hái)在不斷發(fā)展,通過(guò)對(duì)嵌入式軟件系統測試特定以及當前存在問題的分析,可以通過(guò)以下幾種(zhǒng)措施提高嵌入式軟件測試水平,筆者將(jiāng)其歸納總結如下:    

4.1 先靜後(hòu)動、從小到大、由黑到白    

(1)軟件測試應該先進(jìn)行靜态測試,然後(hòu)進(jìn)行動态測試。測試時間越早對(duì)于質量的控制性越高。另外對(duì)于嵌入式軟件系統的測試應該做好(hǎo)與硬件的協調工作。    

(2)單元測試完成(chéng)後(hòu)再進(jìn)行集成(chéng)測試,單元測試的效果越好(hǎo),整體的效率越高。    

(3)先進(jìn)行簡單的黑盒測試再進(jìn)行白盒測試,确定軟件的功能(néng),同時對(duì)程序的覆蓋率進(jìn)行驗證。    

4.2 重視質量分析工作    

軟件模塊之間的邏輯結構是軟件質量的直觀反映。這(zhè)種(zhǒng)結構性越好(hǎo),代碼的可靠性越高。結構化測試也是分析代碼質量的重要方法。代碼的複雜性和錯誤情況可以通過(guò)結構分析得到改善。    

4.3 選擇合理的工具完成(chéng)測試,并加強管理    

嵌入式軟件系統的測試對(duì)工具的要求更高,必要時需要搭建測試所需要的環境,提高測試成(chéng)本,爲保證測試效果。在測試工作中需要選擇合理的工具完成(chéng)測試工作,降低工作量。同時還(hái)應該對(duì)工具進(jìn)行嚴格管理,通過(guò)維護與更新,控制測試成(chéng)本。

在嵌入式軟件的測試工作中,首先應該遵循預防爲主的理念。并按照軟件開(kāi)發(fā)的相關順序完成(chéng)對(duì)軟件的測試工作。同時還(hái)應該對(duì)軟件測試的成(chéng)本、進(jìn)度、風險以及有效性等因素進(jìn)行綜合考慮。當前硬件的集成(chéng)度不斷提高,軟件的功能(néng)越來越強大,因此對(duì)于嵌入式軟件的測試應該增加科研投入,不斷滿足市場需要,提高軟件的質量和穩定性。