魏雪卉
(航空工業(yè)雷華電子技術(shù)研究所 江蘇 無(wú)錫 214063)
隨著嵌入式軟件的規(guī)模越來(lái)越大,嵌入式軟件也需要進(jìn)行系統(tǒng)化測(cè)試。由于嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中,軟件和硬件始終相互依賴,其開(kāi)發(fā)模式、調(diào)試方法都有所不同,因此嵌入式軟件不僅遵循軟件測(cè)試的基本原則,也有其自己的特點(diǎn)[1]。
配置項(xiàng)測(cè)試就是其中必不可少的環(huán)節(jié)。配置項(xiàng)測(cè)試可以有效的發(fā)現(xiàn)配置項(xiàng)范圍內(nèi)存在的缺陷和問(wèn)題,同時(shí)驗(yàn)證配置項(xiàng)能否實(shí)現(xiàn)需求規(guī)格說(shuō)明中的功能、性能、質(zhì)量屬性、約束及安全性等技術(shù)要求,檢驗(yàn)配置項(xiàng)接口的正確性和互操作性。
配置項(xiàng)測(cè)試采用黑盒測(cè)試。軟件黑盒測(cè)試要在軟件的接口處進(jìn)行,利用軟件的用途和外部特征查找軟件缺陷,對(duì)于某些代碼段可用白盒測(cè)試進(jìn)行補(bǔ)充[1]。
嵌入式軟件配置項(xiàng)測(cè)試時(shí),要把系統(tǒng)預(yù)期用途作為重要依據(jù),判斷軟件是否滿足需求規(guī)格說(shuō)明。
以下簡(jiǎn)單介紹嵌入式軟件配置項(xiàng)測(cè)試的技術(shù)要求和測(cè)試類別,并針對(duì)不同的測(cè)試類型,分析幾種基本測(cè)試技術(shù)。
配置項(xiàng)測(cè)試一般要符合以下技術(shù)要求[2]:
1)應(yīng)覆蓋需求規(guī)格說(shuō)明所有功能、性能等特性;
2)配置項(xiàng)的每個(gè)特性應(yīng)至少被一個(gè)正常測(cè)試用例和一個(gè)被認(rèn)可的異常測(cè)試用例所覆蓋;
3)測(cè)試用例的輸入應(yīng)至少包括有效等價(jià)類值、無(wú)效等價(jià)類值和邊界數(shù)據(jù)值;
4)應(yīng)測(cè)試人機(jī)交互界面提供的操作和顯示界面,包括用非常規(guī)操作、誤操作、快速操作測(cè)試界面的可靠性;
5)應(yīng)測(cè)試運(yùn)行條件在邊界狀態(tài)和異常狀態(tài)下,或在人為設(shè)定的狀態(tài)下,配置項(xiàng)的功能和性能;
6)應(yīng)測(cè)試配置項(xiàng)的安全性和數(shù)據(jù)的安全保密性;
7)應(yīng)測(cè)試配置項(xiàng)的所有外部輸入、輸出接口及其格式(包括和硬件之間的接口),及要人為設(shè)定接口異常值和邊界值;
8)應(yīng)測(cè)試配置項(xiàng)的全部存儲(chǔ)量、輸入/輸出通道的吞吐能力和處理時(shí)間余量;
9)應(yīng)對(duì)配置項(xiàng)的功能、性能進(jìn)行強(qiáng)度測(cè)試;
10)應(yīng)測(cè)試用于提高配置項(xiàng)的安全性和可靠性的方案,如結(jié)構(gòu)、算法、容錯(cuò)、冗余、中斷處理等;
11)對(duì)安全性關(guān)鍵的配置項(xiàng),應(yīng)對(duì)其進(jìn)行安全性分析,明確每一個(gè)危險(xiǎn)狀態(tài)和導(dǎo)致危險(xiǎn)的可能原因,并對(duì)此進(jìn)行針對(duì)性的測(cè)試;
12)對(duì)有恢復(fù)或重置功能需求的配置項(xiàng),應(yīng)測(cè)試其恢復(fù)或重置功能和平均恢復(fù)時(shí)間,并且對(duì)每一類導(dǎo)致恢復(fù)或重置的情況進(jìn)行測(cè)試。
1.2.1 等價(jià)類劃分
等價(jià)類劃分是選擇有限子集“代表”所有可能的輸入全集,將被測(cè)試軟件的輸入和輸出分成許多區(qū)域,對(duì)于一個(gè)區(qū)中的任何值,軟件的行為是等價(jià)的。
設(shè)計(jì)正常測(cè)試用例和異常測(cè)試用例時(shí),即激勵(lì)類型為有效等價(jià)類和無(wú)效等價(jià)類,即使用等價(jià)類劃分。
其中無(wú)效類比有效類更能夠發(fā)現(xiàn)問(wèn)題,故無(wú)效類應(yīng)盡量做到全覆蓋。

圖1 弱等價(jià)類劃分
圖1中,有效等價(jià)類取值2個(gè),無(wú)效等價(jià)類取值1個(gè),取值個(gè)數(shù)過(guò)少,取值范圍狹窄,所以測(cè)試用例設(shè)計(jì)非常不充分。

圖2 強(qiáng)一般等價(jià)類劃分
圖2中,有效等價(jià)類取值4個(gè),無(wú)效等價(jià)類取值2個(gè),有效類和無(wú)效類設(shè)置依然不能滿足測(cè)試充分性,無(wú)效類驗(yàn)證不充分。

圖3 健壯強(qiáng)等價(jià)類劃分
圖3中,有效等價(jià)類和無(wú)效等價(jià)類做到全覆蓋,測(cè)試能得到充分驗(yàn)證。
適用的測(cè)試類別:
1)功能測(cè)試(FN):又稱正確性測(cè)試,檢查軟件的功能是否符合需求規(guī)格說(shuō)明[1]。其中包括:
正常功能測(cè)試(FN-N):正常條件或正常數(shù)據(jù)的情況下,對(duì)軟件功能進(jìn)行的測(cè)試,輸入為有效等價(jià)類。
異常功能測(cè)試(FN-A):驗(yàn)證系統(tǒng)自身異常處理的能力,輸入為無(wú)效等價(jià)類。
2)性能測(cè)試(PF):對(duì)軟件需求規(guī)格說(shuō)明文檔中明確或隱含的的性能需求逐項(xiàng)輸入有效等價(jià)類,驗(yàn)證其性能滿足要求;
3)接口測(cè)試(IF):輸入無(wú)效等價(jià)類,驗(yàn)證當(dāng)輸入錯(cuò)誤接口數(shù)據(jù)時(shí),軟件處理是否出錯(cuò);
4)安全性、可靠性測(cè)試(SAF):設(shè)置無(wú)效等價(jià)類來(lái)驗(yàn)證,一般有看門(mén)狗檢測(cè)、數(shù)據(jù)發(fā)送異常、設(shè)置其它配置項(xiàng)故障測(cè)試報(bào)錯(cuò)機(jī)制、通信異常檢測(cè)等手段;
1.2.2 邊界值分析
邊界區(qū)域是錯(cuò)誤高發(fā)區(qū),如存在邊界值,邊界值測(cè)試是必須的。
應(yīng)將邊界周圍的點(diǎn)覆蓋,以達(dá)到良好的健壯性。

圖4 一般邊界值分析
圖4中,邊界點(diǎn)覆蓋不充分,缺少“頂點(diǎn)”處的邊界值設(shè)置。

圖5 健壯邊界值分析
圖5中,邊界點(diǎn)覆蓋非常充分,每個(gè)“頂點(diǎn)”處邊界周圍也都有覆蓋,健壯性好。
適用的測(cè)試類別:
1)邊界測(cè)試(BD):使軟件處于邊界或端點(diǎn)情況下,觀測(cè)軟件運(yùn)行是否出錯(cuò);
2)接口測(cè)試(IF):針對(duì)軟件需求規(guī)格說(shuō)明中外部接口的極限值,利用邊界值分析,驗(yàn)證接口接收極限數(shù)據(jù)時(shí),軟件處理是否出錯(cuò)。
1.2.3 正交設(shè)計(jì)法
在配置項(xiàng)測(cè)試中,當(dāng)輸入條件為兩個(gè)或更多時(shí),且存在組合配對(duì)關(guān)系時(shí),正交設(shè)計(jì)法是設(shè)計(jì)測(cè)試用例時(shí)必須考慮的方法之一。
正交設(shè)計(jì)法是基于配對(duì)組合的算法,選擇滿足覆蓋要求的配對(duì),列出正交設(shè)計(jì)表,直觀的看到該處理所涉及的所有組合條件,但要篩除效率低下的組合。
適用的測(cè)試類別:
功能測(cè)試(FN):當(dāng)輸入條件為兩個(gè)或更多時(shí),且一個(gè)功能改變會(huì)影響其它功能時(shí),利用正交設(shè)計(jì)法設(shè)置輸入不同且大量組合數(shù)據(jù),驗(yàn)證功能在多種條件下都能正確實(shí)現(xiàn)。
1.2.4 狀態(tài)轉(zhuǎn)換法
嵌入式軟件系統(tǒng)全部或部分表現(xiàn)出基于狀態(tài)的行為[1],狀態(tài)轉(zhuǎn)換通過(guò)建立導(dǎo)致轉(zhuǎn)換事件的方法來(lái)設(shè)計(jì)測(cè)試用例,測(cè)試狀態(tài)之間連續(xù)的轉(zhuǎn)換,保證所有轉(zhuǎn)換至少遍歷一次,所有的事件至少觸發(fā)一次。
適用的測(cè)試類別:
1)功能測(cè)試(FN):存在多個(gè)工作狀態(tài)及子模式時(shí),可以采取這種方法來(lái)測(cè)試各個(gè)工作狀態(tài)轉(zhuǎn)換是否正確;
2)強(qiáng)度測(cè)試(IS):在軟件多個(gè)工作狀態(tài)或子模式間任意連續(xù)轉(zhuǎn)換,將所有事件不規(guī)律進(jìn)行觸發(fā)。
1.2.5 隨機(jī)測(cè)試法
在所有輸入數(shù)據(jù)中隨機(jī)選取輸入,可在超長(zhǎng)時(shí)間范圍內(nèi)測(cè)試,這種方能發(fā)現(xiàn)長(zhǎng)而復(fù)雜的操作鏈產(chǎn)生的問(wèn)題,而通過(guò)有計(jì)劃的測(cè)試發(fā)現(xiàn)這些問(wèn)題很困難。
如測(cè)試長(zhǎng)時(shí)間狀態(tài)轉(zhuǎn)換是否正常,可以采用隨機(jī)測(cè)試法中經(jīng)典方法——“猴”測(cè)試,進(jìn)行雜亂無(wú)章的操作。如長(zhǎng)時(shí)間隨機(jī)輸入錯(cuò)誤數(shù)據(jù),驗(yàn)證軟件的可靠性和安全性。
適用的測(cè)試類別:
強(qiáng)度測(cè)試(IS):驗(yàn)證軟件可以正常運(yùn)行到何種程度,不間斷運(yùn)行軟件、大量多次發(fā)送錯(cuò)誤信息、快速雜亂的輸入數(shù)據(jù)等手段來(lái)實(shí)現(xiàn)。
1.2.6 插樁測(cè)試法
軟件插樁是通過(guò)修改軟件代碼,來(lái)手動(dòng)設(shè)置發(fā)送特定數(shù)據(jù)、觀測(cè)特定變量或數(shù)組、觀測(cè)具體數(shù)據(jù)變化趨勢(shì),但插樁語(yǔ)句不能對(duì)配置項(xiàng)功能性能造成影響。
適用的測(cè)試類別:
1)接口測(cè)試(IF):軟件接收區(qū)插樁設(shè)置極限值或錯(cuò)誤數(shù)據(jù),測(cè)試該配置項(xiàng)軟件在異常情況下,功能、時(shí)序是否正確;
2)功能測(cè)試(FN):測(cè)試一組數(shù)據(jù)的變化趨勢(shì)、具體數(shù)值時(shí),利用插樁數(shù)組對(duì)觀測(cè)數(shù)據(jù)進(jìn)行大量連續(xù)的記錄;
3)性能測(cè)試(PN):測(cè)試某個(gè)功能的處理性能時(shí),在處理的起點(diǎn)和終點(diǎn)插樁跟蹤語(yǔ)句,讀出跟蹤的總時(shí)長(zhǎng)即為性能;
4)余量測(cè)試(RC):插樁占存儲(chǔ)余量20%~30%的數(shù)組,達(dá)到存儲(chǔ)邊界的軟件運(yùn)行是否正常;
5)可靠性測(cè)試:插樁設(shè)置死循環(huán)等超時(shí)語(yǔ)句,觀測(cè)軟件看門(mén)狗能否起效。插樁設(shè)置發(fā)送多個(gè)異常數(shù)據(jù),觀測(cè)軟件的容錯(cuò)性。
由于嵌入式軟件的特殊性,在測(cè)試過(guò)程中不僅要融入普通的測(cè)試技術(shù),還需要輔助以儀器和特殊策略才能更有效的對(duì)功能、性能、接口、安全性進(jìn)行驗(yàn)證。
以下將嵌入式軟件在實(shí)際測(cè)試中出現(xiàn)的代表性問(wèn)題及測(cè)試策略進(jìn)行深入分析。
文檔類問(wèn)題主要表現(xiàn)為由于代碼員脫離需求規(guī)格說(shuō)明的約束,會(huì)出現(xiàn)缺少或增加功能點(diǎn)、功能處理流程改變、接口傳送格式描述不清晰、接口數(shù)據(jù)極限值精確度等信息不清晰。
在進(jìn)入動(dòng)態(tài)測(cè)試前,必須對(duì)軟件需求規(guī)格說(shuō)明的功能、性能、外部接口、安全性等描述進(jìn)行文檔審查:
1)檢查功能點(diǎn)描述是否完整準(zhǔn)確,處理過(guò)程是否清晰,有明確的輸入和輸出作為黑盒測(cè)試的測(cè)試依據(jù);
2)輔助白盒測(cè)試方法,利用代碼審查,檢查邏輯流程圖和代碼實(shí)現(xiàn)是否一致;
3)性能、安全性指標(biāo)是否清晰;
4)外部接口的數(shù)據(jù)格式、個(gè)數(shù)、長(zhǎng)度、值域、精確度等接口必要信息是否完整清晰。
通過(guò)文檔審查,基本可以達(dá)到軟件配置項(xiàng)測(cè)試的入口條件。
功能性能類問(wèn)題主要表現(xiàn)為功能實(shí)現(xiàn)和需求不符、性能不達(dá)標(biāo)。
2.2.1 信號(hào)類、離散量的功能測(cè)試策略
此類功能測(cè)試首先應(yīng)了解各個(gè)信號(hào)對(duì)應(yīng)的硬件管腳,再將硬件輸出的信號(hào)波形用示波器讀出,來(lái)驗(yàn)證功能、性能的正確性,有時(shí)還需要信號(hào)源輸入脈沖信號(hào)作為激發(fā)信號(hào):
1)測(cè)試硬件的收發(fā)控制功能:采用信號(hào)源輸入脈沖信號(hào),用示波器觀測(cè)輸出電平波形與信號(hào)源輸入是否一致,驗(yàn)證收發(fā)控制是否正確;
2)測(cè)試時(shí)分控制功能:采用信號(hào)源輸入脈沖信號(hào),利用示波器觀測(cè)時(shí)分通道高低電平來(lái)判斷選通情況,一般選通通道呈現(xiàn)高電平;
3)測(cè)試某硬件板信號(hào)控制功能:輸入單端脈沖信號(hào),用示波器觀測(cè)輸出信號(hào)與輸入信波形號(hào)是否一致,一致則信號(hào)控制功能正常。
可利用示波器輔助的功能測(cè)試一般有:
1)示波器觀測(cè)復(fù)位信號(hào)產(chǎn)生的復(fù)位高電平,驗(yàn)證復(fù)位功能正確性;
2)示波器測(cè)量單片機(jī)離散量對(duì)應(yīng)管腳顯示高低電平,驗(yàn)證離散量置位的正確性;
3)軟件插樁設(shè)置該配置項(xiàng)軟件運(yùn)行超時(shí),利用示波器觀測(cè)超時(shí)后是否有復(fù)位高電平,驗(yàn)證看門(mén)狗能否起效,滿足安全性要求;
4)在處理流程起始插樁設(shè)置高低電平變化,示波器觀測(cè)對(duì)應(yīng)管腳上的信號(hào)高低電平變化,計(jì)算高低電平間隔時(shí)間即可驗(yàn)證性能;
5)切換不同工作狀態(tài),示波器連接硬件管腳測(cè)量脈沖寬度,可間接驗(yàn)證該工作狀態(tài)下的采樣率、工作頻率是否正確。
2.2.2 串口通信、線性調(diào)頻信號(hào)的功能測(cè)試策略
此類功能測(cè)試需借助頻譜儀觀測(cè)輸出頻率、帶寬、波形等信息:
1)測(cè)試模塊是否工作正常,可通過(guò)頻譜儀測(cè)試該模塊輸出頻率是否正確;
2)用頻譜儀測(cè)試輸出連續(xù)波頻率,驗(yàn)證模塊產(chǎn)生連續(xù)波信號(hào)功能是否正常;
3)用頻譜儀測(cè)試輸出帶寬,驗(yàn)證模塊產(chǎn)生線性調(diào)頻信號(hào)功能是否正常;
4)設(shè)置正確串口通信命令和錯(cuò)誤通信命令,用頻譜儀觀測(cè)模塊的信號(hào)頻率,驗(yàn)證串口通信是否正常;
5)不同工作狀態(tài)下,頻譜儀測(cè)試工作頻率是否設(shè)置正確;
6)通過(guò)串口多次大量發(fā)送錯(cuò)誤指令,利用頻譜儀監(jiān)控輸出波形是否穩(wěn)定,可以直觀驗(yàn)證該模塊的健壯性。
2.2.3 變量值、時(shí)序類、趨勢(shì)類、處理時(shí)間類的測(cè)試策略
當(dāng)需要觀測(cè)軟件的具體變量數(shù)據(jù)、處理時(shí)序、數(shù)據(jù)趨勢(shì)、數(shù)據(jù)幅度等信息,可借助該嵌入式軟件專用的調(diào)試工具實(shí)現(xiàn):
1)測(cè)試軟件控制信息、狀態(tài)信息及波形,在調(diào)試工具中直接輸入變量地址,查看該地址中控制參數(shù)、波形數(shù)值是否正確;
2)需要觀測(cè)一組數(shù)據(jù)的變化趨勢(shì)時(shí),可軟件插樁對(duì)數(shù)據(jù)進(jìn)行連續(xù)記錄,利用調(diào)試工具對(duì)記錄數(shù)據(jù)畫(huà)圖,選擇需要觀測(cè)的數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)步進(jìn)后,可清晰看到數(shù)據(jù)變化趨勢(shì)、變化范圍,驗(yàn)證了該功能是否達(dá)到預(yù)期效果;
3)測(cè)試軟件處理時(shí)序是否正確,軟件插樁跟蹤語(yǔ)句在處理流程的起始處,調(diào)試工具即可畫(huà)出各個(gè)處理模塊的調(diào)用時(shí)序圖;
4)測(cè)試軟件處理的吞吐時(shí)間、響應(yīng)時(shí)間等性能時(shí),將關(guān)心的處理流程用插樁跟蹤語(yǔ)句,調(diào)試工具可測(cè)量處理時(shí)長(zhǎng),即可分析處理時(shí)間性能能否達(dá)標(biāo)。
這類測(cè)試需要插樁輸入無(wú)效類輸入和邊界類數(shù)據(jù),用調(diào)試工具監(jiān)控變量數(shù)值、時(shí)序圖、運(yùn)行情況,驗(yàn)證該軟件是否進(jìn)行了異常保護(hù),防止了時(shí)序混亂和死機(jī)等嚴(yán)重錯(cuò)誤的發(fā)生。
1)設(shè)置單個(gè)或多個(gè)條件參數(shù)組合后達(dá)到臨界值時(shí),觀測(cè)軟件能否正常運(yùn)行;
2)軟件插樁讓該模塊重要參數(shù)發(fā)生錯(cuò)誤,觀測(cè)軟件的健壯性,是否出現(xiàn)死機(jī)或功能失效;
3)接口測(cè)試中著重觀測(cè)異常值、邊界值是否做了保護(hù),插樁使軟件接收邊界值或異常值,觀測(cè)軟件能否正常運(yùn)行。
很多嵌入式軟件在正常的情況下比較穩(wěn)定,但將軟件置于“惡劣環(huán)境”后還能否正常運(yùn)行、無(wú)功能失效,是軟件安全性和可靠性的關(guān)注重點(diǎn):
1)對(duì)于存在多個(gè)工作狀態(tài)的嵌入式軟件,可人工快速、無(wú)序、5~8小時(shí)的不間斷切換和操作;
2)軟件插樁組合設(shè)置重要參數(shù)為異常/邊界值后,再次進(jìn)行無(wú)序快速的操作,觀測(cè)軟件能否正常運(yùn)行;
3)軟件插樁占存儲(chǔ)空間20%~30%(看具體要求,但至少要20%)的數(shù)組,程序加載后,控制嵌入式軟件進(jìn)入最飽和狀態(tài),觀測(cè)軟件功能運(yùn)行是否正常;
4)控制嵌入式軟件進(jìn)入最飽和工作狀態(tài),讀出每個(gè)工作狀態(tài)下的處理時(shí)間,和預(yù)計(jì)處理時(shí)間相比,觀測(cè)能否留出20%~30%的時(shí)間余量;
5)設(shè)置配置項(xiàng)硬件故障,觀測(cè)該配置項(xiàng)能否向系統(tǒng)上報(bào)故障信息。
本文深入分析了在嵌入式軟件配置項(xiàng)測(cè)試過(guò)程中,在熟練運(yùn)用基本測(cè)試技術(shù)的基礎(chǔ)上,根據(jù)軟件運(yùn)行環(huán)境的特點(diǎn),采用了對(duì)應(yīng)的調(diào)試工具和豐富的輔助手段,制定有效的測(cè)試策略,設(shè)計(jì)充足的正常測(cè)試用例、邊界和異常測(cè)試用例、強(qiáng)度測(cè)試用例、安全性測(cè)試用例,就可達(dá)到良好的配置項(xiàng)測(cè)試效果,大幅度提高發(fā)現(xiàn)軟件缺陷的概率,對(duì)以后測(cè)試工作者有一定的指導(dǎo)意義。
參考文獻(xiàn):
[1] 康一梅,張永革,李志軍,胡江,武偉.嵌入式軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2008.
[2] 朱少民.軟件測(cè)試方法和技術(shù)[M].北京:清華大學(xué)出版社,2005.
[3] GJB/Z141-2004[S].軍用軟件測(cè)試指南.中國(guó)人民解放軍總裝備部,2004.
[4] 石磊,林曉欲.KTFlow在嵌入式軟件測(cè)試過(guò)程管理中的應(yīng)用[J].微處理機(jī),2012(6):44-50.
[5] 王象剛.軟件測(cè)試過(guò)程管理工具的設(shè)計(jì)與實(shí)現(xiàn)[J].SOFTWARE.2014.35(2) :96-97.