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