基于SFTA和等價(jià)類的軟件測(cè)試用例設(shè)計(jì)方法研究與應(yīng)用

時(shí)間:2023-04-30 16:48:01 資料 我要投稿
  • 相關(guān)推薦

基于SFTA和等價(jià)類的軟件測(cè)試用例設(shè)計(jì)方法研究與應(yīng)用

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

基于SFTA和等價(jià)類的軟件測(cè)試用例設(shè)計(jì)方法研究與應(yīng)用

【基于SFTA和等價(jià)類的軟件測(cè)試用例設(shè)計(jì)方法研究與應(yīng)用】相關(guān)文章:

基于區(qū)間灰數(shù)的α-PROMETHEE方法研究及應(yīng)用04-27

基于歐拉方程的機(jī)翼設(shè)計(jì)方法及應(yīng)用05-03

基于伴隨方程的翼型數(shù)值優(yōu)化設(shè)計(jì)方法研究04-30

基于遞歸輔助變量的時(shí)變譜估計(jì)方法研究與應(yīng)用04-30

基于類的教學(xué)設(shè)計(jì)04-25

基于位移的方鋼管混凝土柱抗震設(shè)計(jì)方法研究04-29

基于多目標(biāo)多學(xué)科設(shè)計(jì)優(yōu)化方法的再入彈道設(shè)計(jì)研究04-30

基于蟻群算法的交通出行生成預(yù)測(cè)方法的研究及應(yīng)用04-27

降水空間插值方法應(yīng)用研究-以黃河源區(qū)為例04-27

測(cè)年方法在地下水中的應(yīng)用05-02