- 相關推薦
基于SFTA和等價類的軟件測試用例設計方法研究與應用
摘 要: 為了解決軟件測試時高可靠性安全性要求,測試用例設計的充分性和有效性不足的問題,軟件故障樹分析結合等價類原則解決了測試用例設計的充分性和有效性問題。通過對軟件的故障模式進行分析,在建立軟件故障樹的基礎上獲得了軟件故障樹的最小割集。以最小割集為模型,結合等價類劃分方法實現了測試用例設計,并根據該方法開發了測試用例自動生成工具。通過測試項目實際應用表明,采用該方法進行測試用例設計可以滿足測試的充分性和有效性要求。 關鍵詞: 軟件測試; 測試用例; 故障樹; 等價類 中圖分類號: TN06?34; TP311.5 文獻標識碼: A 文章編號: 1004?373X(2013)21?0128?04 0 引 言 隨著計算機科學技術的不斷發展,軟件在各個行業中發揮著越來越重要的作用,在許多領域中軟件實現的功能已達到整個系統功能的80%。因此,軟件系統的質量往往決定著系統的質量,有時由軟件缺陷引發的故障造成的后果會非常嚴重。例如文獻[1]中20世紀80年代美國發生的放射治療機軟件錯誤,導致五名患者受到超計量輻射死亡的嚴重事故。隨著軟件應用的深入和廣泛,特別是,應用于高鐵、銀行、醫療、軍事和航天航空領域的軟件,其軟件的質量更加需要關注,如果這些系統中發生由軟件缺陷引發的事故,其后果將是無法預料的。 目前,軟件測試仍是保證軟件質量的重要手段之一,而軟件測試最關鍵的環節之一就是測試用例設計,測試用例設計的充分性決定著測試的有效性。采用何種測試用例設計方法滿足測試的有效性和充分性要求是軟件測試領域不斷深入探索研究的課題。 軟件故障樹分析[2](SFTA)是一種自頂向下的軟件可靠性和安全性分析方法,即從軟件系統不希望發生的事件(頂事件),特別是對人員和設備的安全產生重大影響的事件開始,向下逐步追查導致頂事件發生的原因,直至基本事件(底事件)。利用SFTA分析的結果可以確定軟件測試的重點和內容。 等價類劃分方法是一種黑盒測試方法[3],它將軟件的輸入劃分為若干個數據類,從中得到測試用例的輸入。等價類劃分的測試用例設計是基于對輸入條件的等價類進行評估,是軟件黑盒測試中最常采用的方法之一。 本文將SFTA和等價類劃分方法相結合提出了一種有效的測試用例設計方法,并實現了測試用例的自動生成。 1 軟件故障樹及最小割集 SFTA技術是應用較為廣泛的軟件安全性分析方法,將此方法用于軟件測試時,主要應用于軟件黑盒測試的測試用例設計。對于那些高可靠安全要求的軟件應在進行安全性分析的基礎上,進行測試用例的設計以便實現測試用例的有效覆蓋。 1.1 建立軟件故障樹 軟件故障樹的建立是軟件故障樹分析中最基本同時也是最關鍵的一項工作。軟件故障樹簡單地說是由一些邏輯和事件符號構建而成的。由于軟件故障樹的準確性直接影響到對軟件的分析,因此,在建立軟件故障樹時需要開展必要的準備工作。軟件故障樹的建立通常包括:收集并分析有關技術資料,選擇要分析的頂事件和構建故障樹。 1.1.1 收集并分析有關技術資料 軟件故障樹建立的完善程度直接影響基于最小割集的測試用例集合的有效性,因而需要軟件故障樹的建立者廣泛地掌握并使用有關方面的知識和經驗。這些知識和經驗獲取主要依靠對相關資料的學習和對軟件的熟悉,需要掌握的內容主要應包括:軟件系統的體系結構設計、軟件的功能、系統的范圍、軟件之間的接口關系和運行環境等;識別人為因素對軟件系統的影響;識別軟件在不同的運行模式下的狀態,以及不同模式之間的相互轉換關系。 另外,在建立故障樹時應征求有經驗的設計人員、用戶等的意見,以便保證軟件故障樹的正確性。 對于軟件關鍵等級較高的軟件,一般情況下,軟件研制人員已完成了軟件安全性分析。測試人員可以在此基礎上開展進一步的分析。 1.1.2 選擇要分析的頂事件 利用故障樹進行軟件分析常遇到的問題就是構建的故障樹過于復雜,很難利用其進行有效的測試用例設計。為了避免這一難題,在構建故障樹時可以將軟件故障樹分層構建,先按照軟件單個功能項為單位進行構建,在逐漸延伸至頂事件。 這種頂事件確定方法也符合確認測試對所有功能進行測試的實際要求。頂事件的確定可以與確認測試的測試項的確定一起完成。當一個測試項有多個子測試項時,可以將子測試項做為頂事件。 采用這種方法不僅避免了軟件故障樹過于復雜的問題,也更符合測試工作的需要與流程。將軟件故障樹分析與測試項的分解、測試用例的設計緊密結合,更有利于測試用例的自動生成。 1.1.3 構建故障樹 軟件故障樹中使用的符號包括事件符號和邏輯門符號兩類。事件符號用以表示故障事件,邏輯門符號用以表示故障事件之間的邏輯關系。 建立軟件故障樹通常采用演繹法。所謂演繹法是指首先選擇要分析的頂事件(即不希望發生的故障事件)作為故障樹的“根”。然后分析導致頂事件發生的直接原因(包括所有事件或條件),并用適當的邏輯門與頂事件相連,作為故障樹的“節”(中間事件)。按照這個方法逐步深入,一直追溯到導致頂事件發生的全部原因(底層的基本事件)為止。這些底層的基本事件稱為底事件,構成故障樹的“葉”。 在故障樹最底層的底事件是導致頂事件發生的根本原因。有些底事件可以獨立地引發頂事件,有些底事件按照一定的邏輯關系共同引發頂事件。在分析故障發生原因過程中,要充分發揮分析者、軟件開發組以及軟件測試機構的經驗。 1.2 故障樹的數學描述 有[n]個底事件構成的故障樹,故障樹的頂事件為[T,][xi]是底事件的狀態變量,[xi]的值為1或0,[Φ]表示頂事件的狀態,則有如下定義: [xi=1,底事件i發生0,底事件i不發生] [Φ=1,頂事件發生0,頂事件不發生] 由于[Φ]由底事件的狀態確定,即[Φ=Φ(X),]其中[X={x1,x2,…,xi}。]因此,[Φ=Φ(X)]就是故障樹數學表述的結構函數[4]。 對于頂事件和底事件之間全部為邏輯與門結構的故障樹,結構函數可以表述為: [Φx=i=1nxii=1,2,…,n] 對于頂事件和底事件之間全部為邏輯或門結構的故障樹,結構函數可以表述為: [Φx=i=1nxii=1,2,…,n] 根據上述定義就可以表示出任意一棵故障樹的結構函數。圖1所示的軟件故障樹的結構函數就可以表示為: [Φ=x1x2x3x1x3x4] 1.3 最小割集的數學描述 割集為能引起頂事件發生的底事件集合。最小割集為不包含任何冗余因素的割集。如果去掉最小割集中的任何事件,它就不再成為割集。 根據上述的定義,在軟件故障樹中,由于最小割集發生時,頂事件必然發生,因此,一棵故障樹的全部最小割集的完整集合代表了頂事件發生的所有可能性。因此,若軟件故障樹有[m]個最小割集[C=(C1,C2,…,Cm),]任意一個最小割集中的全部底事件發生時,故障樹的頂事件必定發生,最小割集可以表示為: [Cj=i=1xi] 在[m]個最小割集集合中只要有一個最小割集發生,頂事件就發生,所以軟件故障樹可以表示為: [Φ=j=1mi=1nxi] 根據故障樹最小割集的定義,利用Fuseell?Vesely算法,可以獲得圖1的最小割集為:[x1,][x2,x3,x4,]其軟件故障樹也可表示為: [Φ=x1x2x3x4] 根據上述表達式,圖1的等價軟件故障樹如圖2所示。 2 生成測試用例集 利用軟件故障樹最小割集建立了進行測試用例設計模型,每個底事件就是測試用例的輸入,而每個輸入的取值應根據等價類劃分的原則設置典型值。 2.1 確定輸入條件的等價類 在進行輸入的典型值選取時,應根據等價類劃分的方法進行確定。等價類的確定應遵循如下原則[3]: (1)若輸入條件指定一個范圍,則可以定義一個有效等價類和兩個無效等價類; (2)若輸入條件需要特定的值,則可以定義一個有效等價類和兩個無效等價類; 。3)若輸入條件指定集合的某個元素,則可以定義一個有效等價類和一個無效等價類; (4)若輸入條件為布爾值,則可以定義一個有效等價類和一個無效等價類。 以最小割集[{x2,x3,x4}]為例,其典型取值分別為下[x2:a1,a2,a3;x3:b1,b2,b3;x4:c1,c2。] 2.2 生成測試用例集 在進行測試用例設計時,以每一個最小割集為一組測試用例。以最小割集[{x2,x3,x4}]為例,根據在2.1節中確定的[x2,x3,x4]各自的等價類取值,可得到測試用例為:[{a1,b1,c1},][{a1,b1,c2},][{a1,b2,c1},][{a1,b2,c2},][{a1,b3,c1},][{a1,b3,c2},][{a2,b1,c1},][{a2,b1,c2},][{a2,b2,c1},][{a2,b2,c2},][{a2,b3,c1},][{a2,b3,c2},][{a3,b1,c1},][{a3,b1,c2},][{a3,b2,c1},][{a3,b2,c2},][{a3,b3,c1},][{a3,b3,c2}。]這樣就得到[C13×C13×C12=3×3×2=18]個測試用例。 軟件的算法流程圖如圖3所示。 3 應用實例 。1)獲取軟件故障樹 在實際應用中獲得了如圖4所示的軟件故障樹,其中中間事件“游機未關機”的發生是由Ggjx1,Ggjx2,Ggjx3中的任意兩個以上發生時導致的。根據這種情況,可將圖4改造為如圖5所示的等效故障樹。 。2)求出割集 {T2fc1,T2fc2,T2fc3},{Ggjx1,Ggjx2},{Ggjx1,Ggjx3},{Ggjx2,Ggjx3},{Luwo},{Ggjx1,Ggjx2,Ggjx3},{Luwo,T2fc1 },{Luwo,T2fc2},{Luwo,T2fc3}。 (3)求出最小割集 {Ggjx1,Ggjx2},{Ggjx1,Ggjx3},{Ggjx2,Ggjx3},{Luwo},{T2fc1,T2fc2,T2fc3}。 (4)設置典型值 根據輸入條件的等價類原則設置的典型值見表1。 (5)生成測試用例 基于割集生成的測試用例有63個,而基于最小割集生成的測試用例只有25個;谧钚「罴瘂T2fc1,T2fc2,T2fc3}生成的一個測試用例集合如圖6所示。 4 結 語 本文利用故障樹的原理和方法,將故障樹的最小割集作為生成測試用例的模型,測試用例的輸入采用等價類劃分的方法選取,提出了基于故障樹最小割集和等價類劃分的測試用例生成方法,并開發了測試用例自動生成工具。該方法在逃逸軟件測試項目中得到了應用,實際結果表明它有效地提高了測試測試用例設計的充分性和高可靠軟件測試的自動化程度。 參考文獻 [1] 黃錫滋.軟件可靠性、安全性與質量保證[M].北京:電子工業出版社,2002. [2] 陸廷孝,鄭鵬洲,何國偉,等.可靠性設計與分析[M].北京:國防工業出版社,1995. [3] PRESSMAN R S. Software engineering: a practitioner′s approach [M]. 7th ed. [S.l.]. McGraw?Hill Companies,Inc, 2009. [4] 孫志安,裴曉黎,宋昕,等.軟件可靠性工程[M].北京:北京航空航天大學出版社,2009. [5] 練峰海,石啟亮,陳方濤.基于GUI方法的故障樹運算軟件實現[J].現代電子技術,2012,35(18):83?85. [6] 姜興杰,楊峰輝.軟件可靠性分析與設計[J].現代電子技術,2011,34(7):135?137.
【基于SFTA和等價類的軟件測試用例設計方法研究與應用】相關文章:
基于區間灰數的α-PROMETHEE方法研究及應用04-27
基于歐拉方程的機翼設計方法及應用05-03
基于伴隨方程的翼型數值優化設計方法研究04-30
基于類的教學設計04-25
基于位移的方鋼管混凝土柱抗震設計方法研究04-29
降水空間插值方法應用研究-以黃河源區為例04-27
測年方法在地下水中的應用05-02