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