王麗芹,林曉欲
(中國空空導(dǎo)彈研究院,洛陽 471009)
隨著數(shù)字化技術(shù)的大量應(yīng)用,軟件在產(chǎn)品中的重要性越來越大,其規(guī)模和復(fù)雜性急劇增加,軟件已逐步成為獨(dú)立的產(chǎn)品。為保證軟件可靠性,需要對(duì)軟件進(jìn)行可靠性測試和評(píng)估工作,從而可以盡早發(fā)現(xiàn)并改正軟件中影響質(zhì)量的缺陷,有效提高軟件可靠性,縮短產(chǎn)品的研制周期,降低軟件研制成本。
軟件可靠性是指在規(guī)定環(huán)境下,規(guī)定時(shí)間內(nèi)軟件不引起系統(tǒng)失效的概率[1]。軟件可靠性是衡量軟件質(zhì)量的重要指標(biāo)之一,不但與軟件存在的差錯(cuò)有關(guān),而且與系統(tǒng)輸入和系統(tǒng)使用有關(guān)。通常來說,軟件發(fā)生失效的次數(shù)越多或時(shí)間間隔越短,軟件可靠性越低。
軟件可靠性測試是指為了保證和驗(yàn)證軟件的可靠性而對(duì)軟件進(jìn)行的測試。它是隨機(jī)測試的一種,其主要特征是按照用戶實(shí)際使用軟件的方式來測試軟件[2-3]。通常軟件可靠性測試分為軟件可靠性增長測試和軟件可靠性驗(yàn)證測試,如果沒有可靠性指標(biāo)要求而需要評(píng)估當(dāng)前的可靠性水平,還有軟件可靠性摸底測試。
軟件可靠性測試與一般軟件測試(如單元測試、集成測試、功能測試、性能測試、邊界測試等)在測試目的、測試方法、測試對(duì)象等方面都存在差異。其中軟件可靠性驗(yàn)證測試與一般軟件測試的比較如表1 所示。
軟件可靠性測試一般采用黑盒測試,因?yàn)樗敲嫦蚴褂玫臏y試,它不需要了解程序的結(jié)構(gòu)以及如何實(shí)現(xiàn)等問題。軟件可靠性測試的主要流程如圖1所示。
表1 軟件可靠性驗(yàn)證測試與一般測試比較
圖1 軟件可靠性測試流程
軟件可靠性測試的主要思想就是按照用戶對(duì)軟件實(shí)際使用的統(tǒng)計(jì)規(guī)律進(jìn)行隨機(jī)測試,目前通常采用操作剖面的形式對(duì)軟件的使用情況進(jìn)行建模。操作剖面的構(gòu)造可以采用自頂向下逐層細(xì)化的方法。操作剖面的開發(fā)過程如圖2 所示。
(1)客戶剖面由獨(dú)立的客戶類型序列構(gòu)成??蛻纛愋褪侨后w中以相近的方式使用系統(tǒng)的一個(gè)或多個(gè)客戶,這些客戶在使用軟件的方式上與其他客戶存在顯著區(qū)別??蛻羝拭嬷行枰獮槊恳环N客戶類型確定發(fā)生概率。在軟件客戶比較單一的情況下,不需要建立客戶剖面。
(2)用戶剖面是用戶組及其發(fā)生概率的集合,通常在客戶剖面的基礎(chǔ)上建立。
(3)系統(tǒng)模式剖面是系統(tǒng)模式及其相應(yīng)發(fā)生概率的一個(gè)集合。系統(tǒng)模式可以來源于軟件的需求或使用情況分析。
(4)功能剖面是在系統(tǒng)模式下分解系統(tǒng)所需的功能,并確定每個(gè)功能的發(fā)生概率。功能剖面的構(gòu)造通常需要依據(jù)軟件的研制任務(wù)書或軟件的需求文檔,再結(jié)合運(yùn)行環(huán)境的各種情況得到功能列表,并為每個(gè)功能分配發(fā)生概率。
圖2 操作剖面開發(fā)流程
(5)操作剖面是操作及其發(fā)生概率的集合,確定操作剖面的主要步驟是列出操作并確定每個(gè)操作的發(fā)生概率。一個(gè)功能可以映射成一個(gè)或多個(gè)操作,一組功能也可以重新合并成一組不同的操作,因此能夠根據(jù)功能剖面獲取操作列表。
軟件可靠性測試環(huán)境是指為被測軟件提供測試輸入并采集測試輸出的軟硬件環(huán)境。對(duì)于實(shí)時(shí)嵌入式軟件進(jìn)行可靠性測試,可以采用全數(shù)字仿真技術(shù)、半實(shí)物仿真平臺(tái)和系統(tǒng)聯(lián)試等幾種模式的測試環(huán)境。為了得到盡可能真實(shí)的可靠性測試結(jié)果,可靠性測試應(yīng)盡量在真實(shí)的環(huán)境下進(jìn)行。但是在許多情況下,在真實(shí)環(huán)境下進(jìn)行軟件的可靠性測試很不現(xiàn)實(shí),因此軟件可靠性測試通常采用半實(shí)物仿真環(huán)境。通常對(duì)半實(shí)物仿真(或全數(shù)字仿真)的測試環(huán)境有如下要求:
(1)操作剖面中涉及到的操作可以在測試環(huán)境中執(zhí)行。
(2)滿足測試激勵(lì)的實(shí)時(shí)性要求,即激勵(lì)輸入滿足真實(shí)交聯(lián)環(huán)境的輸入接口、數(shù)據(jù)格式和輸入時(shí)序的要求,與真實(shí)使用的交聯(lián)環(huán)境的輸入邏輯相同。
(3)能夠采集用于軟件可靠性測試分析的測試結(jié)果數(shù)據(jù)。
軟件失效數(shù)據(jù)是進(jìn)行軟件可靠性測試和評(píng)估的基礎(chǔ)。在可靠性測試執(zhí)行過程中,需要按要求記錄每個(gè)測試用例的實(shí)際結(jié)果,并根據(jù)每個(gè)用例的期望測試結(jié)果和用例的通過準(zhǔn)則判斷該用例是否通過。若不通過,則記錄下來。
對(duì)于軟件可靠性測試中發(fā)現(xiàn)的問題應(yīng)該根據(jù)問題的類型加以分析和處理,對(duì)于由被測軟件本身的缺陷引起的軟件問題計(jì)入被測軟件失效,由被測軟件以外的測試環(huán)境、測試方法、測試用例設(shè)計(jì)不當(dāng)引起的軟件問題不計(jì)入軟件失效。
此外,還要對(duì)每個(gè)軟件問題的類別和嚴(yán)重性等級(jí)進(jìn)行描述。軟件問題的類別包括設(shè)計(jì)問題、文檔問題、程序問題和其它問題,問題的嚴(yán)重性等級(jí)可采用4 級(jí)進(jìn)行描述。
可靠性驗(yàn)證測試是一種統(tǒng)計(jì)試驗(yàn),測試策劃階段應(yīng)選定可靠性測試統(tǒng)計(jì)方案。選擇統(tǒng)計(jì)測試方案時(shí)應(yīng)考慮驗(yàn)證指標(biāo)的類別、軟件的質(zhì)量要求、可承受的最大測試時(shí)間、可承受的最大失效數(shù)、測試經(jīng)費(fèi)、費(fèi)用與時(shí)間的權(quán)衡等諸多因素。針對(duì)采用成功率表示產(chǎn)品可靠性的驗(yàn)證測試,通常采用成功率的驗(yàn)證測試方案[4]。所規(guī)定的成功率是一個(gè)產(chǎn)品將完成所要求的功能的概率或是產(chǎn)品在規(guī)定條件下試驗(yàn)成功的概率。觀測成功率可以定義為在試驗(yàn)結(jié)束時(shí)未失效的產(chǎn)品數(shù)對(duì)試驗(yàn)產(chǎn)品總數(shù)的比值或成功的試驗(yàn)次數(shù)對(duì)試驗(yàn)總次數(shù)的比值。成功率驗(yàn)證測試方案的主要參數(shù)有:
R:成功率真值;
R0:可接收的成功率;
R1:不可接收的成功率;
d:成功率鑒別比(1-R1)/(1-R0);
n:接收所要求的固定試驗(yàn)數(shù);
r:積累失效數(shù);
rRE:拒收失效數(shù);
α:生產(chǎn)方風(fēng)險(xiǎn),即當(dāng)R=R0的拒收概率;
β:使用方風(fēng)險(xiǎn),即當(dāng)R=R1的接收概率。
成功率的驗(yàn)證測試方案包括截尾序貫統(tǒng)計(jì)方案和定數(shù)試驗(yàn)統(tǒng)計(jì)方案。
截尾序貫統(tǒng)計(jì)方案示意圖如圖3 所示。
圖3 截尾序貫統(tǒng)計(jì)方案示意圖
當(dāng)r≤s.ns-h(huán)時(shí),接收;
r≥s.ns+h時(shí),拒收;
s.ns-h(huán)≤r≤s.ns+h時(shí),繼續(xù)試驗(yàn)。
序貫試驗(yàn)到截尾線截止,接收或拒收判斷準(zhǔn)則需按下述條件:
在ns=nt時(shí),當(dāng)r <rt,接收;
當(dāng)r >rt,拒收;
其中,ns為序貫試驗(yàn)方案中積累的試驗(yàn)數(shù),s為接收和拒收線的斜率,h為接收和拒收線在垂線上的截距,nt為截尾試驗(yàn)數(shù),rt為截尾失效數(shù)。
定數(shù)試驗(yàn)統(tǒng)計(jì)方案是在給定R0、d、α、β 后通過查表方式得到接收判決時(shí)所要求的試驗(yàn)數(shù)n 和作出拒收判決時(shí)所要求的失效數(shù)rRE。
截尾序貫統(tǒng)計(jì)和定數(shù)試驗(yàn)統(tǒng)計(jì)方案的比較如表2 所示。
表2 兩種統(tǒng)計(jì)方案的比較
針對(duì)某型機(jī)載武器產(chǎn)品的一個(gè)配置項(xiàng)軟件,首先根據(jù)軟件需求文檔和實(shí)際運(yùn)行情況,構(gòu)造出涵蓋該軟件整個(gè)工作過程的操作剖面,抽取出具體的系統(tǒng)執(zhí)行任務(wù)場景,分別對(duì)每一個(gè)場景設(shè)計(jì)測試用例,并對(duì)測試用例進(jìn)行詳細(xì)描述。
軟件可靠性測試環(huán)境采用通用系統(tǒng)測試平臺(tái)GESTE 來構(gòu)建完成。其中,通用嵌入式軟件仿真測試平臺(tái)由三臺(tái)測試主機(jī)、兩臺(tái)測試目標(biāo)機(jī)、相關(guān)I/O以及信號(hào)轉(zhuǎn)換裝置構(gòu)成。平臺(tái)中所有設(shè)備由以太網(wǎng)連接,兩臺(tái)測試目標(biāo)機(jī)通過內(nèi)存反射式實(shí)時(shí)光纖網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)數(shù)據(jù)通訊。其組成示意圖如圖4 所示。
該軟件在規(guī)定條件和時(shí)間內(nèi)失效的次數(shù)為離散型的隨機(jī)變量,可靠度可以用成功率來給出,因此采用成功率驗(yàn)證定數(shù)測試統(tǒng)計(jì)方案。經(jīng)過分析,確定該軟件可靠性統(tǒng)計(jì)方案參數(shù)中α=10%,β=10%,R0=0.9701,R1=0.91。
圖4 通用系統(tǒng)測試平臺(tái)GESTE 結(jié)構(gòu)示意圖
鑒別比d=(1-R1)/(1-R0)=3.01
根據(jù)α=10%,β=10%,R0=0.9701,d=3.01,通過查表得出參數(shù)n 和rRE的值:n=101,rRE=6。
因此,需設(shè)計(jì)101個(gè)可靠性測試用例執(zhí)行。在測試過程中軟件失效數(shù)小于等于6,則接收該軟件,否則拒收。
在軟件可靠性測試中共發(fā)生失效4 次,小于最大軟件失效數(shù)6,滿足可靠性測試方案要求。
通過對(duì)軟件可靠性測試和評(píng)估技術(shù)進(jìn)行研究和應(yīng)用,驗(yàn)證了軟件可靠性測試和評(píng)估工作的可行性,為后續(xù)產(chǎn)品開展軟件可靠性測試和評(píng)估工作提供技術(shù)和范例支持,對(duì)機(jī)載武器系統(tǒng)的嵌入式軟件可靠性測試和評(píng)估工作有較大的指導(dǎo)意義。
[1]王自力,陸民燕.軟件可靠性工程[M].北京:國防工業(yè)出版社,2011.
[2]劉斌.軟件驗(yàn)證與確認(rèn)[M].北京:國防工業(yè)出版社,2011.
[3]劉斌,高小鵬.嵌入式軟件可靠性仿真測試系統(tǒng)研究[J].北京航空航天大學(xué)學(xué)報(bào),2000(4):490-493.
[4]李鑫平.軟件可靠性模型應(yīng)用方法研究[D].哈爾濱:哈爾濱工程大學(xué),2010.