姜 蘋 梁海波,2 楊 彬 李 想
1.北京航天自動控制研究所,北京 100854 2.宇航智能控制技術國家級重點實驗室,北京 100854
故障診斷軟件實現對控制系統有關設備接口的在線狀態監測,對測量信息進行解析和推理,完成數據的診斷和故障隔離定位。故障診斷軟件代碼量大、推理規則多,測試工作量大和測試時間長。因此在測試進度緊張的情況下,有必要研究一種方法以縮短測試時間,盡快完成測試,同時保證測試充分性。
文獻[1]采用搜索尋優算法進行路徑覆蓋的方式來生成測試數據。文獻[2]通過注入一定數量故障的方法驗證測試性水平。文獻[3]基于靜態測試中的指針分析方法,通過分析源代碼發現程序運行時可能產生的故障。文獻[4]提出運用故障數最小割集技術作為輔助手段指導軟件測試,確定軟件故障的各種組合方法,提高軟件測試針對性,發現軟件潛在缺陷。然而,這些方法都不能從實質上減少規則數目多的故障診斷軟件的測試工作量。
本文對故障診斷軟件的推理規則特征進行了深入的需求分析,提出采用正交試驗法開展軟件測試工作,大大提高了軟件測試效率,使軟件中存在的問題得以充分地暴露出來,測試效果顯著。
故障診斷軟件的主要功能包括:實時監測各種電源電壓、開關量狀態、1553B總線信息及網絡信息等;提取測試流程信息,對接收的數據進行識別,生成征兆號;根據測試流程信息,在每個子流程結束后,啟動推理機軟件,通過預裝的診斷規則對故障進行匹配,得出診斷結果。
故障診斷軟件中有上千條推理規則,每條推理規則進行基本條件判讀或復雜條件判讀。
基本條件判讀包括:模擬量判讀和開關量判讀。
復雜條件判讀包括多類型數據范圍判讀、多類型數據時間序列特征判讀、未監聽到總線消息、當前消息與上一拍消息比對判讀、消息狀態字判讀、消息一致性判讀、等差判讀、多類型消息滿足消息序列特征、多個消息多個數據范圍判讀、算法處理后范圍判讀及指定消息的有無判讀。
復雜條件判讀有全局條件和局部條件,全局條件有判讀開始時間、判讀結束時間和判斷成功次數,局部條件是針對一次判斷而言,包括一次判斷需要數據信息應滿足的時間范圍、數據個數和判斷方法。
每一種判讀,邏輯處理均可能為與、或、非和直推4種之一。
因此,對于上千條推理規則,開展基本條件判讀、復雜條件判讀,包含4種邏輯處理,所需的測試用例數量非常多。
正交試驗設計方法是從大量的試驗數據中挑選適量的、有代表性的點,從而合理地安排測試的一種科學的試驗設計方法[5]。正交試驗法就是使用已經造好了的表格-正交表來安排試驗并進行數據分析的一種方法。這簡單易行,計算表格化,應用性較好。
一般用L代表正交表,常用的有L8(27)、L9(34)和L8(4*24)等。此符號各數字的意義如下:
例如:L8(27),其中,7為此表列的數目(最多可安排的因子數);2為因子的水平數;8為此表行的數目(測試用例數);又例如:L9(3*26),有6列是2水平的,有1列是3水平的,L9(3*26)的數字告訴我們,用它來設計用例,設計9個測試用例可以考察1個3水平因子和6個2水平因子。
在行數為mn型的正交表中(m,n是整數),測試用例數=因子數*∑(每列水平數-1)+1,如L9(34),9=4*(3-1)+1。利用上述關系式可以從所要考察的因子水平數來決定最少的測試用例數,進而選擇合適的正交表。
采用正交試驗法設計測試用例,一般按照如下步驟實施:
1)提取功能說明,構造因子狀態表。把影響實驗指標的條件稱為因子,而影響實驗因子的條件叫做因子的狀態。利用正交試驗設計方法設計測試用例時,首先要根據被測試軟件的規格說明書找出影響其功能實現的操作對象和外部因素,把它們當作因子,而把各個因子的取值當作狀態。確定因子與狀態設計測試用例的關鍵。因此,要盡可能全面、正確地確定取值,以確保測試用例的設計完整、有效;
2)加權篩選,生成因素分析表。對因子與狀態的選擇可按其重要程度分別加權;
3)利用正交表構造測試數據集。
由于2個或多個復雜條件的邏輯處理與2個或多個基本條件的邏輯處理相同,所以在基本判讀中驗證與、或和非的邏輯關系,復雜條件判讀中不再驗證邏輯關系的正確性。復雜條件判讀類型及對應屬性見圖1。

圖1 復雜條件判讀類型及屬性
1)構造因子狀態表
多類型數據時間序列特征判讀這一類的屬性包括:判讀開始時間、判讀結束時間、是否連續判讀、依賴消息、依賴數據、判讀次數及通道要求。有的規則對推理的開始時間有要求,有的對結束時間有要求,有的需要消息是連續的,有的需要依賴1553B消息,有的需要對消息多次判讀,有的對1553B的A/B通道有要求。所以,該類判讀有7大因子,每個因子的狀態見表1。
2)加權篩選,生成因素分析表
判讀一次、連續判讀、依賴1553B消息處理、對通道不進行判讀的規則使用的數據量偏大些,在正交表設計時可適當增加這些水平值。
3)構造測試用例集
利用正交表構造測試用例集,正交表內容見表2。
表2中列號代表了各個因子,列號與因子名稱的對應關系見表3。
多類型數據時間序列特征判讀這一判讀類型使用正交試驗法分析,包含3個2水平因子、3個3水平因子、1個4水平因子,若所有的排列組合中的規則都要提取,需要提取23*33*4=864個規則,而采用正交分析法,使用L13(23*33*4)后,最少需要提取出13個有代表的規則即可,本文中提取了15個規則,減少了849個規則的動態測試。
這只是對其中一種復雜條件判讀進行正交試驗法分析,若對所有的復雜條件判讀均采用正交試驗法分析,將減少96.87%的工作量,具體情況如表4所示。

表1 因子狀態表

表2 正交表

續表2 正交表

表3 列號與因子對應關系表
使用正交試驗法前需要對3483種規則進行驗證,而使用正交試驗法后僅需選取109種規則代表這3483種規則,理論上測試工作量減少了96.87%。
使用正交試驗法提取規則后,還要對規則設計用例。
按照表2中第1行的方法提取規則,該規則中的故障原因和根據該原因產生的故障提示信息如表5所示。該規則無開始時間要求、無結束時間要求、判讀多次、消息無連續要求、依賴1553B消息、依賴消息中的時序類型碼及不判A/B通道。

表4 正交試驗法前后的比對情況

表5 規則描述
該規則的3個時間點中有1個不符合要求,即報出故障信息。由于3個時間段的分析方法相同,這里僅以開始時間49010ms、時序寬度80ms為例進行分析,采用等價類劃分方法和邊界值分析法,設計用例如表6所示。
通過引入正交試驗法對故障診斷軟件進行測試,原預計24人月才能完成的測試任務,由2人在近1個月的時間內完成,測試效率提高約91.67%,考慮到測試過程受測試環境搭建與變更、以及人為因素等影響,實際測試效率與理論計算值量級相當。更為重要的是,在測試過程中發現了20余個功能問題,這些問題并不孤立,而是極具代表性的。在判讀類型相同的情況下,若被選取的規則有問題,代表著與此相同配置的所有規則均可能存在問題。在此基礎上,軟件開發方與軟件測試方共同就上述20余個功能問題進行了舉一反三,累計發現同類型問題147項,確保了軟件測試工作的測試充分性和測試覆蓋性。如果這些問題沒有被及時發現,故障診斷軟件可能在故障出現時未能準確報出故障信息,或者在無故障出現時錯誤地提示故障內容,造成現場監控人員無法及時發現故障或誤判故障,帶來較為嚴重的后果。此外,故障診斷軟件應用方試驗人員將更改后的軟件投入系統綜合試驗、預案驗證試驗、故障模擬試驗等大型試驗進行驗證,故障診斷軟件功能正常,所有規則執行正確,進一步驗證了采用正交試驗法對故障診斷軟件進行測試的有效性。

表6 設計測試用例
針對故障診斷軟件代碼量大、規則多,無法在測試進度緊張的情況下進行充分測試的問題,本文提出了基于正交試驗法提取有代表性規則的故障診斷軟件測試方法。在某型號故障診斷軟件的測試工作中,驗證了該方法的正確性和有效性,為提高故障診斷軟件測試效率,減少測試人員工作量有很大幫助。