陳蘇
摘要
本文闡述了嵌入式軟件可靠性測(cè)試的目的與影響軟件可靠性的因素,并針對(duì)電子計(jì)量器具嵌入式軟件的特點(diǎn),提出對(duì)其進(jìn)行可靠性測(cè)試應(yīng)考慮的問(wèn)題與測(cè)試用例分析設(shè)計(jì),旨在提高電子計(jì)量器具嵌入式軟件可靠性,為保證軟件的質(zhì)量與計(jì)量工作的順利開(kāi)展提供參考。
【關(guān)鍵詞】計(jì)量 嵌入式軟件 可靠性測(cè)試
1 引言
隨著嵌入式系統(tǒng)應(yīng)用的不斷發(fā)展,越來(lái)越多的電子計(jì)量器具也通過(guò)搭載嵌入式系統(tǒng),把用于檢定或校準(zhǔn)的軟件程序直接嵌入到計(jì)量器具中,使得電子計(jì)量器具更加地智能化,也大大提高了檢定校準(zhǔn)工作的效率。在極大的方便了檢定人員的同時(shí),電子計(jì)量器具的嵌入式軟件可靠性則關(guān)系到其檢定校準(zhǔn)工作的質(zhì)量。因此對(duì)電子計(jì)量器具嵌入式軟件可靠性測(cè)試,是保證其軟件與計(jì)量工作質(zhì)量的關(guān)鍵因素。
2 嵌入式軟件可靠性測(cè)試概述
軟件可靠性是度量被測(cè)軟件安裝用戶的要求和設(shè)計(jì)的目標(biāo),執(zhí)行其功能的正確程度。嵌入式系統(tǒng)是由硬件與軟件組合而成,其軟件可靠性問(wèn)題近年越來(lái)越受到業(yè)內(nèi)關(guān)注。嵌入式軟件測(cè)試的目的是為了保證高質(zhì)量、高可靠性的軟件。電子計(jì)量器具嵌入式軟件由于其應(yīng)用在計(jì)量基礎(chǔ)領(lǐng)域,還關(guān)系到民生問(wèn)題,對(duì)軟件運(yùn)行的可靠性和正確性就有著較高的要求。如果軟件出現(xiàn)失效或者精度降低等問(wèn)題,那么將影響所出具報(bào)告數(shù)據(jù)的準(zhǔn)確度,嚴(yán)重的還會(huì)影響到檢定人員的人身安全。因此形成一套規(guī)范有效,以發(fā)現(xiàn)軟件可靠性缺陷的測(cè)試方法的重要性不言而喻。
與硬件可靠性技術(shù)相比,有關(guān)軟件的可靠性測(cè)試還并不成熟且應(yīng)用范圍也較為有限。嵌入式軟件可靠性受多種因素的影響,從技術(shù)的角度來(lái)看主要包括:
2.1 運(yùn)行剖面,即運(yùn)行環(huán)境
相同的軟件在不同的運(yùn)行剖面下,其可靠性表現(xiàn)可能是不一樣的。如電子計(jì)量器具的使用環(huán)境可能存在復(fù)雜多變的情況,如檢定校準(zhǔn)工作可能安排在室內(nèi),也可能是在室外;相同的一項(xiàng)檢定校準(zhǔn)工作可能需要在-10℃至40℃的溫度條件下進(jìn)行;軟件可能需要在沖擊、振動(dòng)、電磁場(chǎng)等惡劣環(huán)境下運(yùn)行。
2.2 軟件規(guī)模,也就是軟件的大小
數(shù)千萬(wàn)行代碼的軟件和數(shù)萬(wàn)行代碼的軟件相比,編碼錯(cuò)誤,如語(yǔ)法錯(cuò)誤、變量初始化錯(cuò)誤、邊界值錯(cuò)誤等發(fā)生的概率顯然要大得多。
2.3 軟件內(nèi)部結(jié)構(gòu)
內(nèi)部結(jié)構(gòu)先進(jìn)而優(yōu)良的軟件,即使較為復(fù)雜,所包含的缺陷也可能比內(nèi)部結(jié)構(gòu)混亂的軟件要少得多。
3 可靠性測(cè)試目標(biāo)確定與測(cè)試場(chǎng)景設(shè)計(jì)
我們要對(duì)一款軟件做可靠性測(cè)試,首先要做的就是確定可靠性目標(biāo)。在軟件運(yùn)行過(guò)程中,由于不同的軟件缺陷而引發(fā)的軟件失效,其所帶來(lái)影響的嚴(yán)重程度也是不同的。一般按照對(duì)系統(tǒng)能力的影響和對(duì)成本的影響來(lái)劃分軟件失效嚴(yán)重程度類,相比一般嵌入式軟件,根據(jù)電子計(jì)量器具嵌入式軟件的特點(diǎn),我們主要按對(duì)系統(tǒng)能力的影響來(lái)設(shè)計(jì)失效嚴(yán)重程度類。劃分好失效嚴(yán)重程度后,結(jié)合可靠度要求等指標(biāo),設(shè)計(jì)可靠性目標(biāo),舉例參考如表1所示。
可靠性目標(biāo)確定后,可以進(jìn)行測(cè)試場(chǎng)景的設(shè)計(jì)工作。首先要為軟件的使用行為建模,可以根據(jù)所測(cè)試計(jì)量器具的使用特點(diǎn)與軟件實(shí)際運(yùn)行情況,確定能覆蓋該器具的使用情況的操作模式,可能需要同時(shí)包含多種操作模式。接著確定操作的發(fā)起者,包括用戶、外部條件、嵌入式系統(tǒng)自身等。軟件的行為可能是由用戶的操作引發(fā)的,也可能來(lái)自外部條件如接收到消息而引起的數(shù)據(jù)處理行為;最后還有可能來(lái)自嵌入式系統(tǒng)自身,如中斷信號(hào)、內(nèi)存溢出引發(fā)的異常等。
4 可靠性測(cè)試用例設(shè)計(jì)分析
在測(cè)試場(chǎng)景設(shè)計(jì)完成并做好其他準(zhǔn)備之后,可以設(shè)計(jì)測(cè)試用例,來(lái)對(duì)軟件可靠性進(jìn)行測(cè)試。設(shè)計(jì)測(cè)試用例就是針對(duì)特定功能或組合功能制定測(cè)試方案,在設(shè)計(jì)用例是應(yīng)考慮哪些是易于發(fā)現(xiàn)缺陷的用例和數(shù)據(jù)。以下簡(jiǎn)單介紹幾種較為常用的測(cè)試用例設(shè)計(jì)實(shí)例。
4.1 內(nèi)存過(guò)載測(cè)試
當(dāng)一個(gè)嵌入式系統(tǒng)的內(nèi)存占用率達(dá)到80%以上時(shí),則可以認(rèn)為內(nèi)存過(guò)載。內(nèi)存過(guò)載有可能是由于軟件運(yùn)行過(guò)程中數(shù)據(jù)大量的讀寫(xiě)操作及對(duì)存儲(chǔ)資源的申請(qǐng)與釋放不及時(shí)造成內(nèi)存泄露而引發(fā)。一般來(lái)說(shuō)代碼編寫(xiě)嚴(yán)謹(jǐn)?shù)能浖陂L(zhǎng)時(shí)間、大數(shù)據(jù)量情況下運(yùn)行,內(nèi)存占用不應(yīng)有太大的變化。內(nèi)存過(guò)載可能會(huì)引起系統(tǒng)崩潰、芯片復(fù)位等問(wèn)題,我們進(jìn)行內(nèi)存過(guò)載測(cè)試的目的就是為了觀察系統(tǒng)能否在內(nèi)存過(guò)載的情況下繼續(xù)穩(wěn)定運(yùn)行,同時(shí)該測(cè)試也能發(fā)現(xiàn)軟件是否存在內(nèi)存泄露問(wèn)題。我們可以采用內(nèi)存丟失的方法來(lái)實(shí)現(xiàn)測(cè)試,可以編寫(xiě)一個(gè)申請(qǐng)內(nèi)存且一直占用的程序使得系統(tǒng)內(nèi)存占用達(dá)到80%,運(yùn)行一段時(shí)間觀察被測(cè)軟件運(yùn)行狀態(tài)。如果軟件運(yùn)行正常,可以在此基礎(chǔ)上再占用掉10%的內(nèi)存,繼續(xù)運(yùn)行一段時(shí)間觀察被測(cè)軟件運(yùn)行狀態(tài)。為了達(dá)到極端測(cè)試的效果,我們還可以把內(nèi)存全部申請(qǐng)出來(lái),觀察被測(cè)軟件是否還能正常運(yùn)作。
4.2 CPU過(guò)載測(cè)試
當(dāng)一個(gè)嵌入式系統(tǒng)的CPU占用率達(dá)到80%以上時(shí),則可以認(rèn)為CPU過(guò)載。CPU過(guò)載可能造成系統(tǒng)響應(yīng)變慢,無(wú)法實(shí)時(shí)處理事務(wù)。我們可以編寫(xiě)一個(gè)程序采用無(wú)限循環(huán)的方式強(qiáng)制消耗掉一定的CPU.通過(guò)調(diào)整消耗CPU資源程序與被測(cè)軟件在系統(tǒng)中的優(yōu)先級(jí),觀察被測(cè)軟件運(yùn)行狀態(tài)。
5 結(jié)論與建議
本文主要是針對(duì)電子計(jì)量器具嵌入式軟件可靠性測(cè)試提出的一些思路和方法。從可靠性測(cè)試目標(biāo)的確定、測(cè)試場(chǎng)景設(shè)計(jì)、測(cè)試用例設(shè)計(jì)等方面做了分析并給出了實(shí)例作為參考。電子計(jì)量器具嵌入式軟件可靠性作為保證軟件質(zhì)量與計(jì)量服務(wù)的一項(xiàng)關(guān)鍵工作,要把可靠性測(cè)試過(guò)程進(jìn)行規(guī)范化,在測(cè)試過(guò)程文檔的編寫(xiě)與管理、測(cè)試場(chǎng)景及測(cè)試用例設(shè)計(jì)方面,還需在今后的工作中不斷的改進(jìn)和完善。使得測(cè)試能更好的發(fā)現(xiàn)軟件缺陷、所獲得的測(cè)試數(shù)據(jù)更加真實(shí)有效,才能更好的為保障計(jì)量事業(yè)的蓬勃發(fā)展盡一份力。
參考文獻(xiàn)
[1]GB/T 28171-2011嵌入式軟件可靠性測(cè)試方法[S].
[2]John D.Musa.軟件可靠性工程[M].韓柯,譯.北京:機(jī)械工業(yè)出版社,2003.