摘 要:本文主要針對動態(tài)故障樹分析方法在測試用例設計中的應用問題進行了分析,初步探討了基于軟件故障信息的測試用例設計流程,對動態(tài)故障樹分析方法進行了討論,最后提出了基于動態(tài)故障樹的測試用例設計步驟,希望對于今后的軟件測試工作具有一定幫助。
關鍵詞:軟件測試;動態(tài)故障樹;測試用例;設計步驟
中圖分類號:TP311.56
軟件測試是軟件生命周期中十分重要的環(huán)節(jié),也是決定軟件質量好壞的最后環(huán)節(jié),而測試用例設計的是否合理有效直接決定著測試效果,因此在軟件測試活動中較為重要的環(huán)節(jié)就是進行測試用例設計,其中,軟件缺陷是可以通過一定的測試用例設計標準能夠得以體現(xiàn),因此,對于那些易于發(fā)現(xiàn)軟件缺陷的測試數(shù)據(jù)則是在進行測試用例設計或測試用例選擇時優(yōu)先要采用的,測試用例則是在所有輸入輸出條件中進行確定的,其目的是為了使得更多的軟件故障得以暴露[2]。
1 基于軟件故障信息的測試用例設計流程分析
在一般軟件測試用例設計方法和流程的基礎上,提出基于軟件故障信息的測試用例設計方法。比如,對于裝備在使用過程中出現(xiàn)的故障類別和模式進行統(tǒng)計分析,分類、整理和匯總已經(jīng)掌握相關的故障信息,在用戶使用的操作層面上對于相關的故障信息進行一定的追溯,然后對于用戶故障以及使用操作的關聯(lián)性進行分析,在考慮相關的數(shù)據(jù)范圍以及相應環(huán)境的基礎上,充分利用相關性影響域分析結果和用戶相關使用操作流程,就能夠進行針對于對于外場故障的典型測試用例設計[2,3]。
基于軟件故障信息的測試用例設計分析具體過程如下:首先,進行軟件故障分析,激活被測軟件系統(tǒng)的故障模式。這是基于軟件故障信息進行測試用例設計的關鍵所在。在進行測試用例設計之前,應根據(jù)收集的軟件相關故障信息對軟件在故障模式下的行為反應進行分析,整理、歸納出軟件的故障模式集合,為基于軟件故障信息的測試用例設計奠定基礎。其次,深度分析挖掘軟件操作使用或輸入與軟件故障的關聯(lián)性,定量描述軟件故障發(fā)生時軟件的操作使用方式或輸入方式。定量描述軟件操作使用方式或輸入方式是可以通過分析用戶操作剖面或輸入剖面得以實現(xiàn),是能夠把軟件的真實使用狀況反映出來。根據(jù)還原出來的操作使用情況和輸入方式進行測試用例設計是極具針對性的設計,它能夠體現(xiàn)出基于故障信息的測試用例的主要特征,則能夠有效進行測試用例設計,減少無效測試用例數(shù)量。第三,基于軟件故障模式生成測試用例?;诓僮魇褂闷拭婧洼斎敕绞?,利用軟件測試用例生成策略,參考上述得到的軟件故障模式集合,則可以通過一定的測試用例生成方法獲得高效且有效的測試用例。
2 動態(tài)故障樹分析技術探討
2.1 動態(tài)故障樹基本理論分析。在基于軟件故障信息的測試用例設計過程中最關鍵的是進行軟件故障模式分析,而進行故障診斷以及可靠性分析的傳統(tǒng)技術就是故障樹分析方法,在這種技術方法中,利用圖形演繹的方法,通過特殊的倒立樹狀邏輯因果關系樹形圖對系統(tǒng)失效問題進行說明。而包含靜態(tài)故障邏輯門的故障樹則被稱為靜態(tài)故障樹,如果其中至少包括一項專用動態(tài)邏輯門,此時的故障樹則成為動態(tài)故障樹,可以看作為靜態(tài)故障樹的擴展形式,能夠擴大傳統(tǒng)故障樹的分析過程,主要強調其動態(tài)系統(tǒng)的相關性能問題,往往具有一定的公用資源庫、順序相關性、冷、熱備件以及各種可修復系統(tǒng)等的相關特性。
2.2 動態(tài)邏輯門探討。在故障樹模型中,傳統(tǒng)的邏輯門則包括相關的“表決門”、“或門”、“與門”、“非門”等,在考慮當今計算機系統(tǒng)的復雜特性基礎上,為了使得故障樹模型能夠更好體現(xiàn)出動態(tài)性特點,這里主要引入相應的幾種典型動態(tài)邏輯門,現(xiàn)分析如下:(1)功能相關門。在功能相關門中,系統(tǒng)中某個軟件功能模塊如果發(fā)生故障,則可能會影響其他功能模塊發(fā)生故障或者無法進入工作狀態(tài)的情況,這種故障事件成為激發(fā)事件。其中,系統(tǒng)則是由一個輸入的激發(fā)事件C,以及一個以上的相關基本事件組成,對于激發(fā)事件來說,其可能是故障樹中某一個門的輸出事件或者一個基本事件,此僅僅表示一種功能模塊間的相互關系,并沒有實際的輸出在該門中。(2)順序相關門。在順序相關門中,事件以特定的順序依次發(fā)生則是要求的重點,在相應的順序相關門要求下,對于輸入事件按照從左到右的排列方式進行發(fā)生,簡言之,相比于右邊的事件來說,左邊的事件必然要在之前就發(fā)生,這樣在一定的順序下才會產(chǎn)生順序相關門的輸出事件,否則則不發(fā)生。(3)優(yōu)先與門。在優(yōu)先與門中,基本事件組合在軟件故障分子中影響著系統(tǒng)的故障模式,但是,也和基本事件發(fā)生的順序相關,這就是利用“優(yōu)先與門”來進行表征的目的所在,其在邏輯上僅僅相當于“與門”的作用。按照指定的順序發(fā)生的事件則是相應的附加條件。0表示正常,A的狀態(tài)通過狀態(tài)的第一個數(shù)字來表示,右側則是進行馬爾可夫鏈轉化的結果,B的狀態(tài)則是第二數(shù)字表示,該部件故障則是通過轉移上的符號來表示。
2.3 動態(tài)故障樹定性分析與思考。故障模式存在順序問題在動態(tài)故障樹中是一個值得關注的問題,不同順序發(fā)生的事件,能夠導致不同系統(tǒng)的最后狀態(tài)。利用傳統(tǒng)分析方法求解動態(tài)故障樹存在一定困難,考慮到引入的動態(tài)邏輯門特點,應該加以用馬爾科夫過程進行探討和分析,相應的傳播途徑和故障模式都可以利用動態(tài)故障樹中的狀態(tài)轉移圖,經(jīng)過一定的分析方法而獲得。在分析馬爾可夫狀態(tài)轉移圖過程中,為了能夠使動態(tài)故障樹對應的所有故障模式方便得以找到,起點則是系統(tǒng)故障狀態(tài),進行馬爾可夫鏈的向前回溯狀態(tài)求解。
馬爾可夫狀態(tài)轉移圖的大小和動態(tài)故障樹的規(guī)模呈現(xiàn)指數(shù)關系,在這樣的關系影響下,狀態(tài)轉移圖則會隨著不斷增大的動態(tài)故障樹規(guī)模下而變得非常復雜,造成了現(xiàn)有條件下的求解困難。所以,對于動態(tài)故障樹模塊進行一定的劃分,這在實際應用過程中較為常見,比如可以劃分為獨立的靜態(tài)子樹和動態(tài)子樹,其中,利用傳統(tǒng)故障樹的方法可以用來求解靜態(tài)子樹,利用馬爾可夫鏈進行求解相應的動態(tài)子樹。
3 基于動態(tài)故障樹的測試用例設計步驟
在軟件故障模式集合的基礎上,進行動態(tài)故障樹的測試用例設計,確定出動態(tài)故障樹,這就是測試用例設計樹,對于動態(tài)故障樹的分析則是依據(jù)馬爾可夫過程進行。具體提出進行軟件測試用例設計的主要步驟如下:第一,分析軟件故障模式,能夠準確理解故障模式;第二,動態(tài)故障樹的簡歷則是依據(jù)把故障模式作為樹的開始;第三,在轉換動態(tài)故障樹過程中,把其進行一定的劃分,分為靜態(tài)子樹和動態(tài)子樹;第四,定性分析靜態(tài)子樹和動態(tài)子樹,這樣能夠有效獲得最小割集,這樣就完成了測試用例的生成。
4 結束語
為了能夠使在設計較少測試用例的情況下,發(fā)現(xiàn)更多的軟件缺陷,本文提出了基于軟件動態(tài)故障樹的測試用例設計方法,對于動態(tài)故障樹的分析可以利用馬爾可夫方法進行,從而最終建立相應的測試用例設計指導原則,大大提高測試用例設計的有效性和測試執(zhí)行的高效性,但考慮到實際軟件系統(tǒng)的復雜性,以及應用故障樹分析方法還存在一定的局限性,導致針對整個軟件系統(tǒng)的動態(tài)故障樹建立具有一定的難度,因此在實際應用過程中,可以優(yōu)先針對系統(tǒng)的關鍵軟件模塊的故障進行動態(tài)故障樹分析。
參考文獻:
[1]馮文祥,劉萬軍,鄧月.故障樹分析技術在軟件測試中的研究[J].計算機測量與控制,2010(08).
[2]朱云鵬.基于故障樹分析法的軟件測試技術研究[J].計算機工程與設計,2008(13).
[3]強生杰,任恩恩.基于Petri網(wǎng)的聯(lián)鎖軟件測試用例動態(tài)生成[J].計算機工程,2013(01).
作者單位:中國兵器工業(yè)信息中心,北京 100089