摘要:結合邊界值和等價類的方法對輸入域的提取和輸入點的選取作了詳細分析。在考慮軟件復雜性、缺陷后果嚴重性和信息不足等因素的基礎上,提出了基于測試用例的軟件可靠性模型,并結合EM算法和數理統(tǒng)計知識對該模型進行了相應的理論證明。實驗表明,新模型具有較好的適用性。
關鍵詞:測試準則;期望最大化算法;測試用例復雜性;軟件可靠性模型
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2008)01-0148-03
0引言
隨著軟件應用的日益廣泛及重要性的不斷增強,人們對軟件質量的要求也越來越高。可靠性作為衡量軟件質量的重要特性,其定量評估和預測已成為人們關注和研究的焦點。軟件可靠性模型作為可靠性評測的核心和關鍵,可用于軟件生命周期的不同階段,定量地估計和預測軟件可靠性行為。一個好的可靠性模型可以準確評估和預測軟件可靠性行為,這對于軟件資源分配、軟件市場決策有著重要的意義。
軟件可靠性模型這一領域的研究在 20 世紀 70 年代獲得較大發(fā)展后,很多可靠性模型已經投入實用。可以說,軟件可靠性模型已經從研究階段發(fā)展到了工程階段。但是,面對軟件自身及其開發(fā)過程日益復雜的情形,它仍然呈現出其自身的不足:a)在軟件可靠性建模方面,傳統(tǒng)的軟件可靠性模型大多是從時間域或輸入域來考慮軟件缺陷發(fā)生的概率或缺陷總數,很少從缺陷自身的因素論述;b)在軟件可靠性建模過程中,基本上是根據測試結果直接來推導模型,很少關注軟件測試的設計過程;c)在軟件可靠性模型應用方面,存在嚴重的應用不一致性。所謂不一致性,就是這些模型只是有時非常精確,換一個環(huán)境,應用到其他工程項目中,其精度就不能滿足要求了。
目前看來,要建立比較適用的軟件可靠性模型,必須改變傳統(tǒng)可靠性建模思路,采用新的觀點、方法和新的數學工具來研究軟件故障過程。鑒于此,筆者對此進行了相關的研究,將測試用例的設計融入到軟件可靠性建模過程中,在充分考慮軟件缺陷影響因子和復雜性等因素的基礎上,采取合適的數學處理方法構建出一個基于測試用例的軟件可靠性模型,并結合EM算法對該模型的可靠性作了驗證。該模型不但考慮了失效出現的概率,還考慮到失效后可能產生后果的嚴重性。
1測試用例模型的構建
測試用例的設計是軟件測試過程中最為關鍵的一個環(huán)節(jié),一個軟件測試成功與否與其測試用例設計成功與否有很大的關系。所謂測試用例,也就是為特定目標開發(fā)的測試輸入、執(zhí)行條件和預期結果的集合。也可以說是對軟件運行過程中所有可能存在的目標、運動、行動、環(huán)境和結果的描述,這些特定目標可以是驗證一個特定的程序路徑或核實是否符合特定需求。而測試活動要建立必要的前提條件,提供測試用例輸入、觀察輸出,然后將這些輸入與輸出進行比較,以確定測試是否通過測試某個程序路徑或何時滿足軟件規(guī)定的要求。簡言之,測試用例就是設定輸入數據,運行被測試函數,然后判斷實際輸出是否符合預期結果。
通常造成軟件缺陷的主要原因有:軟件設計文檔規(guī)范不一;測試用例設計過程中引入了人為的錯誤;測試執(zhí)行后,復雜的決策條件、循環(huán)和分支的覆蓋率目標并沒有達到等。而一個完整的測試應該包含正面測試(positive testing)和負面測試(negative testing)。正面測試是驗證程序應該執(zhí)行的工作,而負面測試是驗證程序不應該執(zhí)行的工作。只有面面俱到,才能保證測試的充分性。要保證測試用例設計質量,必須遵循四個原則:a)測試準則,每個測試用例應當有一組有限可枚舉的待測目標的判定準則;b)測試用例輸入域的劃分和輸入點集的提取;c)測試目標的復雜性問題,應盡量化復雜為簡單;d)對測試用例進行測試的力度,就是在特定輸入條件下進行測試的細分程度和測試的次數。在黑盒測試中,不可能采取窮舉式測試,只能選取輸入域中有代表性樣本點來運行程序,然后通過程序運行的結果(成功率或失效率)來推斷出軟件可靠性。綜上可知,一個好的測試用例既要有完善的輸入域,也要有代表性的輸入點集。
輸入域主要來源于需求規(guī)格說明、程序觀察和額外的屬性規(guī)約。假設D表示輸入域,S表示規(guī)格說明,P表示程序觀察,T表示額外的屬性規(guī)約,則輸入域可表示為D=S∪P∪T。其中:額外的屬性規(guī)約主要是指規(guī)格說明中沒有但滿足負面測試或可能用到的那部分數據。
2測試用例可靠性評估
2.1基本概念
軟件可靠性模型通常分為三種,即時間域、輸入域和混合可靠性模型。實際上,軟件黑盒測試的過程是從輸入域著手,反復有選擇性地隨機抽取輸入點集,通過觀察其輸入與輸出之間的映射關系得出其可靠性。下面給出一些測試過程中常用到的概念和度量。
定義1測試準則。它是關于一組有限可枚舉的待測試目標(待測試的軟件部分)的判定規(guī)則,如果測試通過了判定規(guī)則的判定,則認為達到了測試準則;否則就沒有。假設i表示輸入數據,且i∈D,output表示輸出數據,也就是說如果輸入數據i滿足output=f(i)(i∈D),就認為達到了判定準則;否則就沒有。
5結束語
本文將測試設計過程中各個環(huán)節(jié)融入到軟件可靠性模型的構建過程中,從測試用例的輸入域和測試點集著手,在充分考慮了軟件復雜性和缺陷影響因子等因素前提下,結合數學方法構建了基于測試用例的可靠性模型。為了確保模型的可靠性,采用EM算法對該模型進行可靠性檢驗。通過理論和實驗表明,該模型具有一定的優(yōu)勢,其結果更加符合測試人員和使用人員的期望值,在精度和適應性方面均有一定的提高。但是,其中仍有些問題需要進一步研究,如將新模型應用于更多的工程數據,對新模型的適用性作進一步分析等。總之,基于測試用例的可靠性模型很值得作進一步的研究。
參考文獻:
[1]GARDINER S.Testing safety related software:a practical handbook[K]. New York : Springer Verlag, 1999:143 154.
[2]HOWDEN W E. System testing and statistical test data coverage[J].IEEE/ IEE Electronic Library,1997:500-504.
[3]XU L,JORDAN M I.On convergence properties of the EM algorithm for Gaussian mixtures[J].Neural Computation,1996(8):129 151.
[4]BILMES J A,GENTLE A.Tutorial of the EM algorithm and its application to parameter estimation for Gaussian mixture and hidden Mar kov models[R].Berkeley U C:Department of Electrical Engineering and Computer Science.1998:1 13.
[5]KAPUR P K,SINGH O,MITTAL R.Software reliability growth and innovation diffusion models:an interface[J]. Int’l Journal of Reliability, Quality and Safety Engineering,2004,11(4).
[6]GOODENOUGH J B,GERHART S L.Toward a theory of test data selection[J].IEEE Transactions on Software Engineering,1975,1(2): 156 173.
[7]LYU M R,LIU X C,ZHONG W Y,et al.Trans handbook of software reliability engineering[K]. Beijing: Publishing House of Electronics Industry,1997.
[8]房祥忠,陳家鼎.EM算法在假設檢驗中的應用[J].中國科學:A輯,2003,33(2):180 184.
[9]張永強,孫勝娟.基于未確知理論的軟件可靠性建模[J].軟件學報,2006,17(8):1681 1687.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”