摘 要:隨著嵌入式系統(tǒng)應(yīng)用的不斷發(fā)展,嵌入式軟件系統(tǒng)的可靠性與安全性尤為重要。合理有效運用嵌入式軟件測試的策略和技術(shù),提高系統(tǒng)開發(fā)效率,保證嵌入式軟件產(chǎn)品質(zhì)量。
關(guān)鍵詞:嵌入式;軟件測試;實時性;覆蓋率
中圖分類號:TP311.52
嵌入式軟件在智能設(shè)備中得到了廣泛的應(yīng)用。國內(nèi)外對嵌入式軟件人才需求量巨大。人才需求較多的有汽車電子行業(yè)、移動互聯(lián)行業(yè)、工業(yè)自動化行業(yè)等等。最近幾年,隨著3G移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,嵌入式的手機軟件開發(fā)行業(yè)在云計算和物聯(lián)網(wǎng)產(chǎn)業(yè)的帶動下,發(fā)展迅速。很多高職高專院校開設(shè)了嵌入式軟件開發(fā)相關(guān)課程,培養(yǎng)嵌入式軟件開發(fā)人員,以適應(yīng)市場的需求。
軟件測試的目的是為了盡可能多的找到軟件中的缺陷,盡量避免由于軟件問題而產(chǎn)生的巨大經(jīng)濟損失,保證軟件滿足需求規(guī)格說明。嵌入式軟件產(chǎn)品必須有一套專門的測試技術(shù)以保證嵌入式軟件的質(zhì)量。嵌入式軟件測試是嵌入式軟件得以生存和發(fā)展的重要基礎(chǔ)。嵌入式軟件測試作為計算機軟件專業(yè)的分支之一,是嵌入式軟件開發(fā)的必要環(huán)節(jié)。在整個軟件體系中占據(jù)重要的地位。
1 嵌入式軟件測試的概述
1.1 嵌入式軟件測試的特點。嵌入式軟件的開發(fā)需要與之對應(yīng)的嵌入式開發(fā)環(huán)境,需要具有一定的軟硬件要求并且要保證軟件實時性等要求。所以嵌入式軟件開發(fā)與普通軟件開發(fā)存在一定的差異。因此,嵌入式軟件的測試工作也不同與一般軟件的測試工作。嵌入式軟件測試又稱為交叉測試(Cross-Test),其目的是為了保證嵌入式軟件產(chǎn)品的滿足用戶的需求。嵌入式軟件測試與一般軟件測試的區(qū)別主要體現(xiàn)為以下幾點:(1)嵌入式軟件測試與其特定的硬件環(huán)境是密不可分,嵌入式軟件測試中對嵌入式軟件與硬件的兼容性測試至關(guān)重要。(2)嵌入式軟件對實時性要求嚴(yán)格。嵌入式軟件測試要保證軟件系統(tǒng)的可靠性和實時性。測試需要充分考慮系統(tǒng)實時性響應(yīng)問題。嵌入式軟件測試要求有嚴(yán)格響應(yīng)時間要求的負(fù)載測試工作。(3)嵌入式系統(tǒng)常出現(xiàn)內(nèi)存的問題。嵌入式軟件測試需要對內(nèi)存泄漏、內(nèi)存碎片等問題進(jìn)行充分測試,并且盡早的測試。防患于未然。
1.2 嵌入式軟件測試的環(huán)境分析。嵌入式軟件開發(fā)環(huán)境與運行環(huán)境是不同的。嵌入式軟件開發(fā)環(huán)境稱為主機環(huán)境,軟件的實際運行環(huán)境稱為目標(biāo)環(huán)境。針對目標(biāo)環(huán)境的測試比針對主機環(huán)境的測試工作內(nèi)容要多很多,需要投入較多經(jīng)濟費用。而針對主機環(huán)境的測試不能充分完全的模擬目標(biāo)環(huán)境。因此在嵌入式軟件測試中充分地利用了高級語言的可移植性,將與目標(biāo)環(huán)境無關(guān)的測試比如邏輯測試、界面測試等工作轉(zhuǎn)移到主機環(huán)境中完成。這樣可以加快測試的進(jìn)展。系統(tǒng)中與硬件密切相關(guān)部分比如硬件接口測試、中斷測試、實時性測試等收到調(diào)試環(huán)境制約的測試工作選擇在目標(biāo)環(huán)境中進(jìn)行。這時所用到的測試工具需要支持目標(biāo)環(huán)境的要求。系統(tǒng)的驗證確認(rèn)需要在目標(biāo)環(huán)境中進(jìn)行。
2 嵌入式軟件測試策略
嵌入是軟件測試策略與一般軟件測試策略相同,各個階段分別為:單元測試、集成測試、系統(tǒng)測試、確認(rèn)測試和驗收測試。
2.1 單元測試。主要用白盒測試技術(shù)對軟件模塊進(jìn)行的測試。模塊可以是一個函數(shù),可以是類或類的實例,也可以是網(wǎng)頁中的一個按鈕。單元測試可以發(fā)現(xiàn)編碼問題或詳細(xì)設(shè)計中的錯誤,保證單元的最大覆蓋率。嵌入式軟件系統(tǒng)的單元測試通常在主機環(huán)境中進(jìn)行,主機環(huán)境中的運行測試速度明顯快于目標(biāo)環(huán)境。
2.2 集成測試。按照軟件系統(tǒng)結(jié)構(gòu)通過單元測試的模塊集成起來進(jìn)行的測試。使用白盒技術(shù)和黑盒技術(shù)。集成測試可以發(fā)現(xiàn)系統(tǒng)架構(gòu)和系統(tǒng)結(jié)構(gòu)設(shè)計的缺陷。嵌入式軟件的集成測試通常也在主機環(huán)境中進(jìn)行。
2.3 系統(tǒng)測試和確認(rèn)測試。系統(tǒng)測試是對集成的軟、硬件系統(tǒng)進(jìn)行的測試。檢驗系統(tǒng)是否符合需求規(guī)格說明書的要求。包括對系統(tǒng)功能、性能、接口、系統(tǒng)界面、可靠性、安全性等的全面測試。使用黑盒技術(shù)進(jìn)行測試。確認(rèn)測試是對系統(tǒng)的有效性測試,使用黑盒技術(shù)。嵌入式軟件的系統(tǒng)測試和確認(rèn)測試依賴目標(biāo)環(huán)境,需要在目標(biāo)環(huán)境中真實有效的反應(yīng)嵌入式系統(tǒng)的功能,所以需要在目標(biāo)環(huán)境中進(jìn)行測試。
3 嵌入式軟件測試技術(shù)
3.1 嵌入式軟件白盒測試技術(shù)。白盒測試指從程序內(nèi)部的邏輯結(jié)構(gòu)出發(fā)來設(shè)計測試用例的方法。又被稱為結(jié)構(gòu)測試、邏輯驅(qū)動測試。嵌入式軟件的白盒測試的關(guān)鍵技術(shù)主要包括:詞法語法分析、靜態(tài)結(jié)構(gòu)分析、插樁分析等。
語義分析和靜態(tài)結(jié)構(gòu)分析屬于靜態(tài)測試技術(shù),靜態(tài)測試技術(shù)指被測系統(tǒng)并不運行,而是從軟件的編程格式以及代碼結(jié)構(gòu)等方面對進(jìn)行程序特性的分析。程序插樁則屬于動態(tài)測試技術(shù),所謂動態(tài)測試指實際運行被測程序,通過測試用例的輸入,對軟件運行情況進(jìn)行的分析,主要是分析軟件輸入與輸出的對應(yīng)關(guān)系。
(1)語義分析。語義分析之前首先要進(jìn)行詞法、語法分析。詞法語法分析主要是分析程序的結(jié)構(gòu)。一般和程序設(shè)計語言有關(guān)。詞法分析的主要目的是識別程序中的單詞,這個階段需要對源程序進(jìn)行由左到右、由上到下逐個字符的讀入操作,用來根據(jù)構(gòu)詞規(guī)則識別單詞符號。語法分析要在詞法分析的基礎(chǔ)上進(jìn)行,主要目的是識別程序中的關(guān)鍵字、表達(dá)式、語句、函數(shù)等,用來判斷程序的邏輯結(jié)構(gòu)是否正確。經(jīng)過語法分析后源程序在結(jié)構(gòu)上應(yīng)該是一個規(guī)范的,這時要進(jìn)行有關(guān)上下文性質(zhì)的檢查,這就是語義分析,也就是源程序的類型審查。通常我們可以借助工具進(jìn)行語義分析。比如:Yacc工具。
(2)靜態(tài)結(jié)構(gòu)分析。靜態(tài)結(jié)構(gòu)分析通常借助測試工具來進(jìn)行,是以圖形的表現(xiàn)形式來表示程序的內(nèi)部結(jié)構(gòu)的方法。包括源程序的數(shù)據(jù)結(jié)構(gòu)、控制邏輯、系統(tǒng)結(jié)構(gòu)等內(nèi)部結(jié)構(gòu)。使測試人員對程序結(jié)構(gòu)的分析更加直觀。
(3)程序插樁技術(shù)。程序插樁屬于動態(tài)測試。程序插樁技術(shù)是借助向被測程序中插入探針操作,通過驗證探針返回的數(shù)據(jù)來實現(xiàn)測試目的的方法。通過程序插樁技術(shù)可以獲得程序邏輯覆蓋等動態(tài)信息。最常用的插樁方法是在程序中插入一些打印或輸出語句,來獲得程序的控制流、數(shù)據(jù)流等信息。
程序插樁測試的流程如圖1所示。編譯通過的代碼進(jìn)行程序插樁,在宿主機上編譯。如果編譯通過則轉(zhuǎn)到目標(biāo)機中執(zhí)行,目標(biāo)機將程序執(zhí)行后的數(shù)據(jù)返回到宿主機,并由宿主機處理數(shù)據(jù)。
圖1 程序插樁測試流程
(4)覆蓋率分析。代碼的覆蓋率是衡量代碼可靠性的重要指標(biāo)。 覆蓋率分析是能夠消除測試套件中縫隙的結(jié)構(gòu)化測試技術(shù)。覆蓋率分析可以通過程序插樁來實現(xiàn)。嵌入式軟件的覆蓋率分析通常借助工具來實現(xiàn)。
3.2 嵌入式軟件黑盒測試技術(shù)。通常,對嵌入式軟件進(jìn)行白盒測試完畢,需要對其進(jìn)行黑盒測試,主要包括功能測試、接口測試和性能測試等方面。常用的黑盒測試技術(shù)包括常用的等價類劃分法、邊界值分析法、因果圖與決策表法、功能圖法等等,這些黑盒測試方法所關(guān)注的重點是如何設(shè)計出合理、有效的測試用例。通過執(zhí)行測試用例,分析預(yù)期結(jié)果與實際結(jié)果的異同來發(fā)現(xiàn)軟件系統(tǒng)的缺陷。
4 結(jié)束語
嵌入式系統(tǒng)的多樣性和復(fù)雜性,使得了嵌入式軟件的測試尤為重要,也使得對軟件測試人員的技術(shù)要求越來越高。為了滿足人們對嵌入式軟件系統(tǒng)的要求,針對嵌入式軟件的測試的研究也勢在必行。針對嵌入式軟件特點合理運用軟件測試技術(shù),選擇合適的測試工具,提高軟件質(zhì)量,推進(jìn)嵌入式軟件的發(fā)展。
參考文獻(xiàn):
[1]劉利枚,石彪.嵌入式軟件測試系統(tǒng)的研究與實現(xiàn)[J].國為電子測量技術(shù),2009(01).
[2]王學(xué)東,汪文勇.匯編程序覆蓋測試中的虛擬插樁的實現(xiàn)[J].計算機工程,2007(07):87-88.
[3]康一梅,張永革.嵌入式軟件測試[M].北京:機械工業(yè)出版社,2008.
作者單位:承德石油高等專科學(xué)校 計算機與信息工程系,河北承德 067000