?

基于控制流的軟件樹生成及其應用

2021-01-28 03:35何斌
微型電腦應用 2021年1期
關鍵詞:控制流軟件測試煙霧

何斌

(91404部隊, 河北 秦皇島 066000)

0 引言

軟件故障樹分析(Software Fault Tree Analysis,SFTA)主要用于軟件的可靠性與安全性分析,也應用于軟件測試的測試設計。軟件故障樹分析利用原因關系查找所有軟件可能的失效點并畫出故障樹圖,再定性、定量、重要度分析尋找可靠性安全性的薄弱環節,是指導設計改進、軟件測試、裝備維護的有效方法。故障樹分析的成敗取決于故障樹圖的完整性與準確性。然而在實施過程中軟件故障樹分析往往依賴于個人經驗,沒有一種全面定量的軟件失效點分析方法,這導致了對軟件系統進行分析時,會有很大的工作難度與強度,而結果卻不近人意。當軟件測試人員使用SFTA來進行測試設計時這一問題更加突顯,原因是軟件測試人員很難在測試周期內對被系統的失效點有全面的掌握。

為解決SFTA這一問題,研究采用基于控制流分析結果的軟件故障樹自動化分析技術,實現SFTA基于客觀分析結果(控制流分析結果),并可達到分析過程短周期及計算機自動化的目的。

1 軟件故障樹分析的基本理論

故障樹分析(FTA)是產品(系統)可靠性和安全性分析的工具之一,用來尋找導致不希望的系統故障或災難性危險事件(頂事件)發生的所在原因和原因組合,在具有基礎數據時求出頂事件發生的概率及其他定量指標。FTA也是分析已經發生的事故的一種基本方法,在裝備研發、維護等領域有廣泛的應用。故障樹分析也用在軟件工程稱之這軟件故障樹分析(SFTA),在偵錯時使用,和消除錯誤原因的技術很有關系。

故障樹分析法是把系統不希望發生的故障狀態定義為“頂事件”,通過分析尋找出導致頂事件故障發生的所有可能的直接原因,這些原因稱之為“中間事件”。接著分析尋找一個中間事件發生的所在可能原因,經此類推,直到追蹤到最后一級的原因事件,稱之為“底事件”。

故障樹分析就是從具體的故障出發,由上往下逐層尋找失效原因,分析結果采用圖形化形式進行表示。故障樹圖是一種邏輯因果關系圖,構圖的元素是事件和邏輯門。事件用來描述系統和元、部件故障的狀態,邏輯門把事件聯系起來,表示事件之間的邏輯關系。

故障樹圖的具體構成,如圖1所示。

對于一個稍微復雜的系統,將有數量較多的底事件,這不利于對系統可靠性、安全性定性、定量地分析。所以在確定故障樹圖后必須尋找最小割集。割集是故障樹中一些底事件的集合,當這些同時發生時,頂事必然發生;最小割集就是若將割集中的含的底事件含意去掉一個就不再成為割集了,這樣的割集就是最小算法。

圖1 串口通信故障樹圖

求最小割集的方法有行列法、結構法、布爾代數法等,其中行列法最為常用。行列法是1972年福塞爾提出的方法,所以也稱其福塞爾法。其理論依據是:“與門”使割集容量增,而不增加割集的數量;“或門”使割集的數量增,而不增加割集的容量。這種方法是從頂上事件開,用下一層事件代替上一層事件,把“與門”連接事件,按行橫向排列;把“或門”連接的事件,按縱橫向擺開。這樣,逐層向下,直至各基本事件,出若干行,最后利用布爾代數化簡?;喗Y果,就出若干最小割集。

2 基于控制流分析的軟件故障樹的實現原理

2.1 軟件控制流分析

軟件控制流分析是軟件靜態分析的主要內容,分析結果以控制流圖表示。軟件控制流圖就是代碼邏輯的圖形化表示形式,圖形圓繪制的代碼,如圖2所示。

圖2 圖形圓繪制的代碼

圖形圓繪制控制流圖,如圖3所示。

控制流圖能表示一個過程內所有基本塊執行的可能流向,也能反映一個過程的實時執行過程??刂屏鞣治鲈谲浖y試中有助于測試人員尋找程序中的控制邏輯錯誤。有控制流圖以后,可定量地獲取程序的圈復雜度,而圈復雜度做一種為程序邏輯復雜性度量可有效指導進行編程質量改進,進而降低軟件的故障風險。在軟件測試中控制流分析一般由軟件靜態測試工具自動完成,常用測試工具有McCabe、Klocwork、LDRA_Testbed等。由于控制流圖是由測試工具自動化完成,所以得到的控制圖可以完整、準確地反應程序的內部邏輯結構。

圖3 圖形圓繪制控制流圖

2.2 軟件控制流到故障樹圖的實現原理

軟件的故障樹分析可沿軟件控制流圖的執行邏輯進行分析。軟件控制流圖中的執行單元可認為是一個中間事件,而引起這一的執行單元失效的所有可能就是底事件,所有底事件由“或門”連接而成。整個故障樹的邏輯依從更高一層的控制流圖邏輯結構。

依據控制流圖的故障樹圖對應關系,如表1所示。

表1 故障樹圖與軟件控制流圖主要對應關系

3 “X型煙霧報警系統”從控制流圖到故障樹的分析過程

為進一步詳述軟件控制流圖到故障樹的分析過程,同時也為證明這一方法的可行性,本文以“X型煙霧報警系統”為例演繹這一過程。

“X型煙霧報警系統”主要用于封閉環境火災的自動報警。系統通過溫感與煙霧傳感器對環境的溫度和煙霧濃度進行實時監測,以超過設置溫度、煙霧濃度判定是否發生火災。當系統監測到超過預設溫度、煙霧濃度時發出聲光等形式的告警。開發方給出的系統流程圖,如圖4所示。

圖4 “X型煙霧報警系統”流程圖

很顯然僅憑這一流程圖進行故障分析將十分困難?;诳刂屏鞣治龅能浖收蠘浞治龇椒ㄊ紫葘ο到y源碼進行控制流分析,得控制流圖,如圖5所示。

圖5 “X型煙霧報警系統”控制流圖

依從控制流圖執行邏輯進行故障樹分析,以控制流圖邏輯結構為故障樹圖的結構,并充分考慮控制流圖邏輯外的軟件失效可能作為故障樹的主要事件,具體步驟如下。

(1) 按流程圖的基本塊確定中間事件或底事件,同時根據軟件實際功能補充可能的事件;

(2) 根據流程圖的分支邏輯確定故障圖樹的邏輯門;

(3) 重復上述兩個步驟直到整個流程圖解讀完成。

通過以上步驟構建“X型煙霧報警系統”的故障樹圖結構,如圖6所示。

4 總結

通過演繹基于控制流分析的軟件故障樹分析是可行的??偨Y這一方法主要有以下幾個優點。

(1) 故障樹分析依賴于由工具軟件獲得的控制流圖,分析過程更加客觀、全面、高效。

圖6 “X型煙霧報警系統”故障樹圖

(2) 基于控制流圖的故障樹分析不完全依賴于個人經驗,有固定規律可循,工作難度將大大降低。

(3) 由于控制流圖由工具軟件自動生成且到故障樹圖的轉換有模式可利于故障樹分析計算機自動化的實現。

當然這一方法也有不足之處,如方法適合較為簡小的嵌入式軟件,不適應控制流圖龐繁的系統軟件;方法依賴代碼的正確性,對設計、軟件模式等故障無法觸及。雖然這一方法有諸多局限性,但應用于周期要求短、覆蓋率要求高的嵌入式軟件測試的用例設計有較強的適用性。

猜你喜歡
控制流軟件測試煙霧
抵御控制流分析的Python 程序混淆算法
薄如蟬翼輕若煙霧
抵御控制流分析的程序混淆算法
基于OBE的軟件測試課程教學改革探索
航天軟件測試模型構建與應用
基于控制流的盒圖動態建模與測試
影視劇“煙霧繚繞”就該取消評優
EXCEL和VBA實現軟件測試記錄管理
基于Petri網數據流約束下的業務流程變化域分析
咸陽鎖緊煙霧與塵土
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合