張蕾
摘 要:如今,嵌入式軟件在越來(lái)越多的場(chǎng)合應(yīng)用,嵌入式軟件測(cè)試工作是保證軟件質(zhì)量必不可少的重要一環(huán),也必將會(huì)得到更多的重視。本文介紹了嵌入式軟件的特點(diǎn)和測(cè)試方法,并針對(duì)不同的測(cè)試方法討論了流行的測(cè)試工具。
關(guān)鍵詞:嵌入式軟件;軟件測(cè)試;測(cè)試方法;測(cè)試工具
中圖分類號(hào):TP317 文獻(xiàn)標(biāo)識(shí)碼:A
0.引言
由于嵌入式軟件設(shè)計(jì)開(kāi)發(fā)的方法、技術(shù)、過(guò)程以及工具都與通用計(jì)算機(jī)軟件不同,所以需要使用更先進(jìn)的測(cè)試方法和工具對(duì)嵌入式系統(tǒng)進(jìn)行測(cè)試。隨著越來(lái)越多的領(lǐng)域使用軟件來(lái)控制各種嵌入式設(shè)備,如何對(duì)嵌入式軟件進(jìn)行測(cè)試和驗(yàn)證,如何保證軟件能夠滿足系統(tǒng)要求,就顯得尤為重要。
1.嵌入式軟件測(cè)試特點(diǎn)
嵌入式軟件測(cè)試與通用軟件不同,它是一種特殊的軟件測(cè)試,具備自身的一些特點(diǎn)(特別是對(duì)于沒(méi)有操作系統(tǒng)的嵌入式應(yīng)用軟件而言):
(1)特定的硬件環(huán)境。
(2)更加關(guān)注可靠性、實(shí)時(shí)性。
(3)對(duì)進(jìn)行性能測(cè)試和功能測(cè)試外,還需要對(duì)內(nèi)存進(jìn)行測(cè)試。
(4)在嵌入式軟件和硬件集成測(cè)試完成之后,并不代表測(cè)試全部完成,需要對(duì)其進(jìn)行產(chǎn)品測(cè)試。
2.嵌入式軟件測(cè)試方法
本文重點(diǎn)介紹了針對(duì)嵌入式軟件的幾種測(cè)試方法:靜態(tài)分析、軟件質(zhì)量度量、性能分析、內(nèi)存分析、覆蓋率分析、單元/集成測(cè)試、系統(tǒng)測(cè)試。
2.1靜態(tài)分析
靜態(tài)分析是一種利用測(cè)試工具對(duì)代碼進(jìn)行的機(jī)械性和程序化的分析方法。靜態(tài)分析是直接對(duì)源代碼進(jìn)行代碼走讀、靜態(tài)掃描和分析,不需要編譯或運(yùn)行代碼,也不會(huì)受到其他缺陷和其他模塊的影響。
工具舉例:PolySpace工具是一種嵌入式軟件的靜態(tài)分析工具。它包括PolySpace Bug Finder和PolySpace Code Prover兩個(gè)模塊。PolySpace Bug Finder是靜態(tài)代碼分析軟件,可以發(fā)現(xiàn)C/C++代碼中的各類缺陷,包括運(yùn)行時(shí)錯(cuò)誤,數(shù)據(jù)流問(wèn)題,編程問(wèn)題等各類代碼缺陷。PolySpace Code Prover使用抽象解釋和靜態(tài)分析方法來(lái)證明,識(shí)別和分析運(yùn)行時(shí)錯(cuò)誤,例如溢出,除零和指針的越界。
2.2軟件質(zhì)量度量
軟件質(zhì)量度量是衡量軟件是否符合需求、標(biāo)準(zhǔn)的重要體現(xiàn),它的目的在于利用度量來(lái)改進(jìn)軟件過(guò)程。要確保軟件的整體質(zhì)量,就需要在各個(gè)環(huán)節(jié)嚴(yán)格控制。
工具舉例:很多嵌入式軟件是用C或C++語(yǔ)言編寫(xiě),但編程語(yǔ)言本身并不安全,QAC/QAC++是一種代碼靜態(tài)分析工具,它的靜態(tài)分析能力包括:質(zhì)量度量和軟件結(jié)構(gòu)分析。
2.3性能分析
近年來(lái),嵌入式系統(tǒng)被廣泛應(yīng)用于汽車、家電、通信、制造等各個(gè)領(lǐng)域,領(lǐng)域間的競(jìng)爭(zhēng)也激發(fā)了嵌入式技術(shù)的快速發(fā)展,對(duì)軟件性能分析是嵌入式開(kāi)發(fā)過(guò)程中至關(guān)重要的一部分,嵌入軟件的性能分析是嵌入式環(huán)境下重要的測(cè)試方法。
工具舉例:RapiTime是一種軟件運(yùn)行時(shí)間評(píng)估工具:它能夠進(jìn)行軟件時(shí)間性能的測(cè)量,通過(guò)分析得出最差執(zhí)行時(shí)間數(shù)據(jù),并為代碼優(yōu)化提供指導(dǎo)。它的特點(diǎn)包括檢查不同的函數(shù)對(duì)于最差、最優(yōu)以及平均執(zhí)行時(shí)間的影響;通過(guò)大量調(diào)用來(lái)查看執(zhí)行時(shí)間的變化;對(duì)于函數(shù)自身的上下文、循環(huán)以及數(shù)據(jù)塊進(jìn)行分析等。
2.4內(nèi)存分析
嵌入式系統(tǒng)的內(nèi)存是有限的,但對(duì)實(shí)時(shí)性要求又很高。內(nèi)存問(wèn)題主要包括內(nèi)存泄露、內(nèi)存崩潰、內(nèi)存碎片。其中內(nèi)存泄露問(wèn)題尤為嚴(yán)重,它會(huì)導(dǎo)致系統(tǒng)可用內(nèi)存減少,甚至導(dǎo)致系統(tǒng)崩潰。
現(xiàn)在已經(jīng)有許多工具來(lái)解決內(nèi)存泄露問(wèn)題,如Mtrace、 Memwatch、Purify等。這些工具使用庫(kù)跟蹤、動(dòng)態(tài)檢測(cè)、程序插樁等技術(shù)來(lái)發(fā)現(xiàn)和定位內(nèi)存泄露的問(wèn)題。
2.5覆蓋率分析
覆蓋率測(cè)試(也成邏輯測(cè)試)是度量測(cè)試完整性和查找軟件問(wèn)題的必要手段,是測(cè)試有效性的度量。覆蓋率測(cè)試的目的是確保軟件所有的程序至少被執(zhí)行一次,盡可能全的覆蓋軟件程序的各個(gè)語(yǔ)句及其分支結(jié)構(gòu),以便發(fā)現(xiàn)軟件中的錯(cuò)誤和問(wèn)題。
工具舉例:RapiCover 是一款基于目標(biāo)硬件的嵌入式軟件的測(cè)試覆蓋率分析工具, 針對(duì)所使用的測(cè)試用例給出對(duì)應(yīng)的現(xiàn)場(chǎng)測(cè)試覆蓋率信息,其插樁點(diǎn)的開(kāi)銷極小,并能針對(duì)目標(biāo)板的實(shí)際情況提供靈活的支持方式。它的特點(diǎn)包括:支持C、C++、Ada編程語(yǔ)言;極小的時(shí)間開(kāi)銷;語(yǔ)句覆蓋,變量定義、條件判斷或循環(huán)等。
2.6單元/集成測(cè)試
嵌入式軟件的單元測(cè)試大多是在宿主機(jī)環(huán)境下進(jìn)行的,只有少數(shù)情況下需要在目標(biāo)機(jī)環(huán)境下進(jìn)行。單元測(cè)試主要是進(jìn)行白盒測(cè)試,應(yīng)盡可能地測(cè)試每一個(gè)函數(shù),每一個(gè)條件分支、每一個(gè)程序語(yǔ)句,提高代碼的測(cè)試覆蓋率。
在單元測(cè)試完成后,接下來(lái)需要進(jìn)行集成測(cè)試。集成測(cè)試又稱為組裝測(cè)試,是將各模塊合成一個(gè)組件,并測(cè)試它們間的接口。
工具舉例:Tessy軟件是一款專門(mén)針對(duì)嵌入式軟件動(dòng)態(tài)測(cè)試的工具。它可以對(duì)C/C++代碼進(jìn)行單元測(cè)試和集成測(cè)試。
2.7 系統(tǒng)測(cè)試
嵌入式軟件系統(tǒng)測(cè)試的目的與通用軟件類似,都是通過(guò)與需求做比較來(lái)發(fā)現(xiàn)軟件缺陷。嵌入式軟件的系統(tǒng)測(cè)試應(yīng)綜合運(yùn)行各種測(cè)試用例設(shè)計(jì)方法,并根據(jù)需求規(guī)格說(shuō)明書(shū)來(lái)設(shè)計(jì),在目標(biāo)機(jī)環(huán)境下運(yùn)行。
系統(tǒng)測(cè)試階段除了功能測(cè)試外,還應(yīng)該包括意外測(cè)試、破壞性測(cè)試、性能測(cè)試等。
在系統(tǒng)測(cè)試中,隨機(jī)測(cè)試是比較經(jīng)濟(jì)有效的一種測(cè)試方法。將隨機(jī)測(cè)試結(jié)果和操作規(guī)范的要求作比較,還可以得到軟件可靠性的估計(jì)。有效地將隨機(jī)抽樣測(cè)試與其他測(cè)試技術(shù)結(jié)合可以產(chǎn)生更強(qiáng)大和更高效的測(cè)試策略。
結(jié)語(yǔ)
本文歸納總結(jié)了嵌入式軟件的測(cè)試方法,并在不同的測(cè)試方法中列舉了當(dāng)前市場(chǎng)上的適用于嵌入式軟件的測(cè)試工具,希望能夠?qū)V大從業(yè)者有所參考。
參考文獻(xiàn)
[1]康一梅.嵌入式軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2010:39-40.
[2]MathWorks引入兩款Polyspace代碼驗(yàn)證新產(chǎn)品[J]. Microcontrollers & Embedded Systems,2013:86-87.
[3]梁倩.一種基于QAC和Klocwork軟件的靜態(tài)測(cè)試方法[J].計(jì)算機(jī)與網(wǎng)絡(luò),2012(10):58-60.
[4]張鵬.嵌入式軟件內(nèi)存泄露檢測(cè)方法研究[J].計(jì)算機(jī)工程與應(yīng)用, 2013(14):56-59.
[5]孫韜敏.基于隱馬爾可夫模型的內(nèi)存碎片檢測(cè)機(jī)制[J].計(jì)算機(jī)應(yīng)用,2014(S2):224-226.
[6]孫隴平.嵌入式軟件覆蓋率測(cè)試的研究與應(yīng)用[J].現(xiàn)代電子技術(shù),2014(18):67-69.endprint