王麗芹,林曉欲
(中國空空導彈研究院,洛陽 471009)
隨著數字化技術的大量應用,軟件在產品中的重要性越來越大,其規模和復雜性急劇增加,軟件已逐步成為獨立的產品。為保證軟件可靠性,需要對軟件進行可靠性測試和評估工作,從而可以盡早發現并改正軟件中影響質量的缺陷,有效提高軟件可靠性,縮短產品的研制周期,降低軟件研制成本。
軟件可靠性是指在規定環境下,規定時間內軟件不引起系統失效的概率[1]。軟件可靠性是衡量軟件質量的重要指標之一,不但與軟件存在的差錯有關,而且與系統輸入和系統使用有關。通常來說,軟件發生失效的次數越多或時間間隔越短,軟件可靠性越低。
軟件可靠性測試是指為了保證和驗證軟件的可靠性而對軟件進行的測試。它是隨機測試的一種,其主要特征是按照用戶實際使用軟件的方式來測試軟件[2-3]。通常軟件可靠性測試分為軟件可靠性增長測試和軟件可靠性驗證測試,如果沒有可靠性指標要求而需要評估當前的可靠性水平,還有軟件可靠性摸底測試。
軟件可靠性測試與一般軟件測試(如單元測試、集成測試、功能測試、性能測試、邊界測試等)在測試目的、測試方法、測試對象等方面都存在差異。其中軟件可靠性驗證測試與一般軟件測試的比較如表1 所示。
軟件可靠性測試一般采用黑盒測試,因為它是面向使用的測試,它不需要了解程序的結構以及如何實現等問題。軟件可靠性測試的主要流程如圖1所示。

表1 軟件可靠性驗證測試與一般測試比較

圖1 軟件可靠性測試流程
軟件可靠性測試的主要思想就是按照用戶對軟件實際使用的統計規律進行隨機測試,目前通常采用操作剖面的形式對軟件的使用情況進行建模。操作剖面的構造可以采用自頂向下逐層細化的方法。操作剖面的開發過程如圖2 所示。
(1)客戶剖面由獨立的客戶類型序列構成??蛻纛愋褪侨后w中以相近的方式使用系統的一個或多個客戶,這些客戶在使用軟件的方式上與其他客戶存在顯著區別??蛻羝拭嬷行枰獮槊恳环N客戶類型確定發生概率。在軟件客戶比較單一的情況下,不需要建立客戶剖面。
(2)用戶剖面是用戶組及其發生概率的集合,通常在客戶剖面的基礎上建立。
(3)系統模式剖面是系統模式及其相應發生概率的一個集合。系統模式可以來源于軟件的需求或使用情況分析。
(4)功能剖面是在系統模式下分解系統所需的功能,并確定每個功能的發生概率。功能剖面的構造通常需要依據軟件的研制任務書或軟件的需求文檔,再結合運行環境的各種情況得到功能列表,并為每個功能分配發生概率。

圖2 操作剖面開發流程
(5)操作剖面是操作及其發生概率的集合,確定操作剖面的主要步驟是列出操作并確定每個操作的發生概率。一個功能可以映射成一個或多個操作,一組功能也可以重新合并成一組不同的操作,因此能夠根據功能剖面獲取操作列表。
軟件可靠性測試環境是指為被測軟件提供測試輸入并采集測試輸出的軟硬件環境。對于實時嵌入式軟件進行可靠性測試,可以采用全數字仿真技術、半實物仿真平臺和系統聯試等幾種模式的測試環境。為了得到盡可能真實的可靠性測試結果,可靠性測試應盡量在真實的環境下進行。但是在許多情況下,在真實環境下進行軟件的可靠性測試很不現實,因此軟件可靠性測試通常采用半實物仿真環境。通常對半實物仿真(或全數字仿真)的測試環境有如下要求:
(1)操作剖面中涉及到的操作可以在測試環境中執行。
(2)滿足測試激勵的實時性要求,即激勵輸入滿足真實交聯環境的輸入接口、數據格式和輸入時序的要求,與真實使用的交聯環境的輸入邏輯相同。
(3)能夠采集用于軟件可靠性測試分析的測試結果數據。
軟件失效數據是進行軟件可靠性測試和評估的基礎。在可靠性測試執行過程中,需要按要求記錄每個測試用例的實際結果,并根據每個用例的期望測試結果和用例的通過準則判斷該用例是否通過。若不通過,則記錄下來。
對于軟件可靠性測試中發現的問題應該根據問題的類型加以分析和處理,對于由被測軟件本身的缺陷引起的軟件問題計入被測軟件失效,由被測軟件以外的測試環境、測試方法、測試用例設計不當引起的軟件問題不計入軟件失效。
此外,還要對每個軟件問題的類別和嚴重性等級進行描述。軟件問題的類別包括設計問題、文檔問題、程序問題和其它問題,問題的嚴重性等級可采用4 級進行描述。
可靠性驗證測試是一種統計試驗,測試策劃階段應選定可靠性測試統計方案。選擇統計測試方案時應考慮驗證指標的類別、軟件的質量要求、可承受的最大測試時間、可承受的最大失效數、測試經費、費用與時間的權衡等諸多因素。針對采用成功率表示產品可靠性的驗證測試,通常采用成功率的驗證測試方案[4]。所規定的成功率是一個產品將完成所要求的功能的概率或是產品在規定條件下試驗成功的概率。觀測成功率可以定義為在試驗結束時未失效的產品數對試驗產品總數的比值或成功的試驗次數對試驗總次數的比值。成功率驗證測試方案的主要參數有:
R:成功率真值;
R0:可接收的成功率;
R1:不可接收的成功率;
d:成功率鑒別比(1-R1)/(1-R0);
n:接收所要求的固定試驗數;
r:積累失效數;
rRE:拒收失效數;
α:生產方風險,即當R=R0的拒收概率;
β:使用方風險,即當R=R1的接收概率。
成功率的驗證測試方案包括截尾序貫統計方案和定數試驗統計方案。
截尾序貫統計方案示意圖如圖3 所示。

圖3 截尾序貫統計方案示意圖
當r≤s.ns-h時,接收;
r≥s.ns+h時,拒收;
s.ns-h≤r≤s.ns+h時,繼續試驗。
序貫試驗到截尾線截止,接收或拒收判斷準則需按下述條件:
在ns=nt時,當r <rt,接收;
當r >rt,拒收;
其中,ns為序貫試驗方案中積累的試驗數,s為接收和拒收線的斜率,h為接收和拒收線在垂線上的截距,nt為截尾試驗數,rt為截尾失效數。
定數試驗統計方案是在給定R0、d、α、β 后通過查表方式得到接收判決時所要求的試驗數n 和作出拒收判決時所要求的失效數rRE。
截尾序貫統計和定數試驗統計方案的比較如表2 所示。

表2 兩種統計方案的比較
針對某型機載武器產品的一個配置項軟件,首先根據軟件需求文檔和實際運行情況,構造出涵蓋該軟件整個工作過程的操作剖面,抽取出具體的系統執行任務場景,分別對每一個場景設計測試用例,并對測試用例進行詳細描述。
軟件可靠性測試環境采用通用系統測試平臺GESTE 來構建完成。其中,通用嵌入式軟件仿真測試平臺由三臺測試主機、兩臺測試目標機、相關I/O以及信號轉換裝置構成。平臺中所有設備由以太網連接,兩臺測試目標機通過內存反射式實時光纖網絡進行實時數據通訊。其組成示意圖如圖4 所示。
該軟件在規定條件和時間內失效的次數為離散型的隨機變量,可靠度可以用成功率來給出,因此采用成功率驗證定數測試統計方案。經過分析,確定該軟件可靠性統計方案參數中α=10%,β=10%,R0=0.9701,R1=0.91。

圖4 通用系統測試平臺GESTE 結構示意圖
鑒別比d=(1-R1)/(1-R0)=3.01
根據α=10%,β=10%,R0=0.9701,d=3.01,通過查表得出參數n 和rRE的值:n=101,rRE=6。
因此,需設計101個可靠性測試用例執行。在測試過程中軟件失效數小于等于6,則接收該軟件,否則拒收。
在軟件可靠性測試中共發生失效4 次,小于最大軟件失效數6,滿足可靠性測試方案要求。
通過對軟件可靠性測試和評估技術進行研究和應用,驗證了軟件可靠性測試和評估工作的可行性,為后續產品開展軟件可靠性測試和評估工作提供技術和范例支持,對機載武器系統的嵌入式軟件可靠性測試和評估工作有較大的指導意義。
[1]王自力,陸民燕.軟件可靠性工程[M].北京:國防工業出版社,2011.
[2]劉斌.軟件驗證與確認[M].北京:國防工業出版社,2011.
[3]劉斌,高小鵬.嵌入式軟件可靠性仿真測試系統研究[J].北京航空航天大學學報,2000(4):490-493.
[4]李鑫平.軟件可靠性模型應用方法研究[D].哈爾濱:哈爾濱工程大學,2010.