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