楊麗波
(淮安信息職業技術學院,江蘇 淮安 223003)
軟件可靠性測試技術研究
楊麗波
(淮安信息職業技術學院,江蘇 淮安 223003)
文章分析了軟件可靠性測試的過程、可靠性測試中涉及的基本參數及計算方法、軟件運行剖面的概念和獲取運行剖面的步驟、測試用例的選擇方法、軟件可靠性測試模型的作用和建立方法。
軟件可靠性測試;軟件運行剖面;軟件可靠性測試模型
軟件的可靠性是評價軟件質量的一個重要指標,是在軟件驗收階段進行的軟件測試工作,通過測試可以計算出具體的軟件可靠性R的值。對于安全第一和具有可靠性驗收指標的軟件產品來說,軟件可靠性測試是必不可少的。
軟件可靠性測試的過程如圖1所示。

圖1 軟件可靠性測試的過程
為了具體的描述出軟件產品的可靠性,可以采用故障率、維修率、平均無故障時間、平均維護時間、有效度和可靠性R來描述,計算方法如下:假設在測試系統A的過程中,經過時間t1以后,軟件出現錯誤停止運行,經過時間T1排除故障,然后繼續測試。如圖2所示,t1,t2,…,tn是系統正常工作的時間,T1,T2,…,Tn是出現故障后的維護時間。

圖2 系統測試過程狀態
的單位是FIT,1 FIT=10-9/小時。
(6)可靠性:軟件的運行剖面
2.1 軟件運行剖面的概念
軟件運行剖面的概念描述的是軟件的輸入域中的各點取值的分布。
假設X是軟件產品A的定義域,即X={x1,x2,…,xn},用P(xi)表示xi出現的概率,那么X的運行剖面為:{(x1,P(x1)),(x2,P(x2)),…,(xn,P(xn))}。
2.2 獲取運行剖面的步驟
構建軟件產品的運行剖面通常要經過以下步驟實現。
(1)客戶剖面:客戶通常指用同一種方式使用系統的用戶。客戶剖面被定義客戶及客戶出現概率的集合,具體形式如下:
客戶剖面={客戶1:P(客戶1),客戶2:P(客戶2),…,客戶n:P(客戶n)}
(2)用戶剖面:我們將用同一種方法使用系統的用戶稱為一個用戶組。用戶剖面就是用戶及其用戶出現概率的集合。因為在不同客戶的用戶組中,有些以相同的方式使用系統,有些則不同。因此,在計算用戶剖面時,要將不同客戶剖面中包括的相同用戶組合并。用戶剖面的具體形式如下:
用戶剖面={用戶1:P(用戶1),用戶2:P(用戶2),…,用戶n:P(用戶n)}
(3)系統模式剖面:系統模式是為便于分析系統的執行行為以及更好的管理系統,將系統劃分成一組功能或者操作的集合。通常一個軟件產品都有多種系統模式,系統模式剖面就是每一種系統模式及其發生概率的一個集合,具體形式如下:
系統模式剖面={模式1:P(模式1),模式2:P(模式2),…,模式n:P(模式n)}
(4)功能剖面:根據上述步驟產生的多個系統模式,將每種模式進一步分解為功能的集合,并確定每個功能發生的概率,就構成了功能剖面。功能剖面的形式如下:
功能剖面={功能1:P(功能1),功能2:P(功能2),…,功能n:P(功能n)}
(5)運行剖面:將系統的每一個具體實現功能及其發生概率的集合定義為運行剖面。因為在軟件開發過程中,一個功能可能有多個不同的實現方法,而多個不同的功能又可能使用相同的實現方法,我們在測試時所采用的測試用例是根據具體實現功能的方法選擇的,因此要將功能轉化為具體的實現功能,構建軟件的運行剖面,其形式如下:
運行剖面={實現功能1:P(實現功能1),實現功能2:P(實現功能2),…,實現功能n:P(實現功能n)}
任何一個軟件產品在使用過程中,各個功能部件的使用頻率是不同的,軟件運行剖面詳細地刻畫了軟件系統實際的使用情況。
在軟件可靠性測試過程中,測試用例集是測試的基礎。測試人員可以基于軟件的運行剖面確定測試用例集,具體步驟如下:
(1)最小測試用例集。首先按照測試用例公平選擇原則和功能的100 %覆蓋原則,建立最小測試用例集。
(2)如果最小測試用例集所包括的測試用例不能滿足可靠性測試的需求,則繼續從輸入域中選取新的測試用例加入到測試用例集中,從而建立新的用例集合。
(3)不斷重復以上過程,直到測試用例集能夠滿足測試的要求。
軟件可靠性模型就是利用軟件測試過程中的失效數據,在一定的假設的基礎上,采用某一種數學模型進行軟件可靠性建模,對系統未來的可靠性進行預測。目前已建立的可靠性模型有Weibull和Gamma分布失效時間模型、Bayes模型、非均勻泊松過程模型、Musa模型等等。
4.1 軟件可靠性建模的基本假設
軟件的運行剖面與測試剖面具有一致性;測試過程中發現錯誤以后立刻修正,修正過程不引入新的錯誤;測試過程中發現錯誤和錯誤失效是彼此獨立的;測試過程中,每個錯誤被發現的概率是相等的。
4.2 建立軟件可靠性模型的方法
(1)根據現有的模型和經驗等其他因素,對M(t),u(t),F(t),f(t),Z(t)等之一進行假設。(2)根據上述假設,推導出其他函數形式。(3)根據假設和推導出的模型的形式,估計其中參數。(4)應用可靠性數據,檢驗所估計參數的正確度。
軟件可靠性測試是軟件開發過程中的一個重要環節,其目的是對軟件的可靠性進行驗證,判斷其可靠性是否滿足用戶的需求,如果通過測試計算得到的可靠性R的值滿足需求,可以停止可靠性測試,否則,還需要對軟件中的缺陷進行糾正,提高軟件產品的可靠性。本文分析了在軟件可靠性測試中使用的相關技術理論,希望對軟件測試工作者有啟發作用。
[1]何國偉,王緯.軟件可靠性[M].北京:國防大學出版社,1998.
[2]蔡開元.可靠性工程基礎[M].北京:清華大學出版社,1995.
[3]杜文潔,王占軍,高芳.軟件測試基礎教程.[M].北京:中國水利水電出版社,2016.
[4]帕頓.軟件測試[M].周予濱,姚靜,譯.北京:機械工業出版社,2002.
[5]PODGURSKI A, MASRI W, MCCLEESE Y. Estimation of software reliability by strati fi ed ampling[J].ACM Transactions on Software Engineering and Methodology, 1999(3):263-289.
[6]古樂,史九林.軟件測試案例和實踐教程[M].北京:清華大學出版社,2008.
Analysis on software reliability testing technology
Yang Libo
(Huai’an College of Information Technology, Huai’an 223003, China)
This paper analyzes the process of software reliability testing, the basic parameters and the calculation method involved in the reliability test, the concept of the software operational pro fi le and steps of obtaining operational pro fi le, selection method of test cases, the role of testing model of software reliability and establishing method.
software reliability testing; software operational pro fi le; software reliability testing model
楊麗波(1977— ),女,黑龍江牡丹江,碩士,講師;研究方向:軟件技術。