姜 蘋 梁海波,2 楊 彬 李 想
1.北京航天自動控制研究所,北京 100854 2.宇航智能控制技術(shù)國家級重點實驗室,北京 100854
故障診斷軟件實現(xiàn)對控制系統(tǒng)有關(guān)設(shè)備接口的在線狀態(tài)監(jiān)測,對測量信息進(jìn)行解析和推理,完成數(shù)據(jù)的診斷和故障隔離定位。故障診斷軟件代碼量大、推理規(guī)則多,測試工作量大和測試時間長。因此在測試進(jìn)度緊張的情況下,有必要研究一種方法以縮短測試時間,盡快完成測試,同時保證測試充分性。
文獻(xiàn)[1]采用搜索尋優(yōu)算法進(jìn)行路徑覆蓋的方式來生成測試數(shù)據(jù)。文獻(xiàn)[2]通過注入一定數(shù)量故障的方法驗證測試性水平。文獻(xiàn)[3]基于靜態(tài)測試中的指針分析方法,通過分析源代碼發(fā)現(xiàn)程序運行時可能產(chǎn)生的故障。文獻(xiàn)[4]提出運用故障數(shù)最小割集技術(shù)作為輔助手段指導(dǎo)軟件測試,確定軟件故障的各種組合方法,提高軟件測試針對性,發(fā)現(xiàn)軟件潛在缺陷。然而,這些方法都不能從實質(zhì)上減少規(guī)則數(shù)目多的故障診斷軟件的測試工作量。
本文對故障診斷軟件的推理規(guī)則特征進(jìn)行了深入的需求分析,提出采用正交試驗法開展軟件測試工作,大大提高了軟件測試效率,使軟件中存在的問題得以充分地暴露出來,測試效果顯著。
故障診斷軟件的主要功能包括:實時監(jiān)測各種電源電壓、開關(guān)量狀態(tài)、1553B總線信息及網(wǎng)絡(luò)信息等;提取測試流程信息,對接收的數(shù)據(jù)進(jìn)行識別,生成征兆號;根據(jù)測試流程信息,在每個子流程結(jié)束后,啟動推理機軟件,通過預(yù)裝的診斷規(guī)則對故障進(jìn)行匹配,得出診斷結(jié)果。
故障診斷軟件中有上千條推理規(guī)則,每條推理規(guī)則進(jìn)行基本條件判讀或復(fù)雜條件判讀。
基本條件判讀包括:模擬量判讀和開關(guān)量判讀。
復(fù)雜條件判讀包括多類型數(shù)據(jù)范圍判讀、多類型數(shù)據(jù)時間序列特征判讀、未監(jiān)聽到總線消息、當(dāng)前消息與上一拍消息比對判讀、消息狀態(tài)字判讀、消息一致性判讀、等差判讀、多類型消息滿足消息序列特征、多個消息多個數(shù)據(jù)范圍判讀、算法處理后范圍判讀及指定消息的有無判讀。
復(fù)雜條件判讀有全局條件和局部條件,全局條件有判讀開始時間、判讀結(jié)束時間和判斷成功次數(shù),局部條件是針對一次判斷而言,包括一次判斷需要數(shù)據(jù)信息應(yīng)滿足的時間范圍、數(shù)據(jù)個數(shù)和判斷方法。
每一種判讀,邏輯處理均可能為與、或、非和直推4種之一。
因此,對于上千條推理規(guī)則,開展基本條件判讀、復(fù)雜條件判讀,包含4種邏輯處理,所需的測試用例數(shù)量非常多。
正交試驗設(shè)計方法是從大量的試驗數(shù)據(jù)中挑選適量的、有代表性的點,從而合理地安排測試的一種科學(xué)的試驗設(shè)計方法[5]。正交試驗法就是使用已經(jīng)造好了的表格-正交表來安排試驗并進(jìn)行數(shù)據(jù)分析的一種方法。這簡單易行,計算表格化,應(yīng)用性較好。
一般用L代表正交表,常用的有L8(27)、L9(34)和L8(4*24)等。此符號各數(shù)字的意義如下:
例如:L8(27),其中,7為此表列的數(shù)目(最多可安排的因子數(shù));2為因子的水平數(shù);8為此表行的數(shù)目(測試用例數(shù));又例如:L9(3*26),有6列是2水平的,有1列是3水平的,L9(3*26)的數(shù)字告訴我們,用它來設(shè)計用例,設(shè)計9個測試用例可以考察1個3水平因子和6個2水平因子。
在行數(shù)為mn型的正交表中(m,n是整數(shù)),測試用例數(shù)=因子數(shù)*∑(每列水平數(shù)-1)+1,如L9(34),9=4*(3-1)+1。利用上述關(guān)系式可以從所要考察的因子水平數(shù)來決定最少的測試用例數(shù),進(jìn)而選擇合適的正交表。
采用正交試驗法設(shè)計測試用例,一般按照如下步驟實施:
1)提取功能說明,構(gòu)造因子狀態(tài)表。把影響實驗指標(biāo)的條件稱為因子,而影響實驗因子的條件叫做因子的狀態(tài)。利用正交試驗設(shè)計方法設(shè)計測試用例時,首先要根據(jù)被測試軟件的規(guī)格說明書找出影響其功能實現(xiàn)的操作對象和外部因素,把它們當(dāng)作因子,而把各個因子的取值當(dāng)作狀態(tài)。確定因子與狀態(tài)設(shè)計測試用例的關(guān)鍵。因此,要盡可能全面、正確地確定取值,以確保測試用例的設(shè)計完整、有效;
2)加權(quán)篩選,生成因素分析表。對因子與狀態(tài)的選擇可按其重要程度分別加權(quán);
3)利用正交表構(gòu)造測試數(shù)據(jù)集。
由于2個或多個復(fù)雜條件的邏輯處理與2個或多個基本條件的邏輯處理相同,所以在基本判讀中驗證與、或和非的邏輯關(guān)系,復(fù)雜條件判讀中不再驗證邏輯關(guān)系的正確性。復(fù)雜條件判讀類型及對應(yīng)屬性見圖1。
圖1 復(fù)雜條件判讀類型及屬性
1)構(gòu)造因子狀態(tài)表
多類型數(shù)據(jù)時間序列特征判讀這一類的屬性包括:判讀開始時間、判讀結(jié)束時間、是否連續(xù)判讀、依賴消息、依賴數(shù)據(jù)、判讀次數(shù)及通道要求。有的規(guī)則對推理的開始時間有要求,有的對結(jié)束時間有要求,有的需要消息是連續(xù)的,有的需要依賴1553B消息,有的需要對消息多次判讀,有的對1553B的A/B通道有要求。所以,該類判讀有7大因子,每個因子的狀態(tài)見表1。
2)加權(quán)篩選,生成因素分析表
判讀一次、連續(xù)判讀、依賴1553B消息處理、對通道不進(jìn)行判讀的規(guī)則使用的數(shù)據(jù)量偏大些,在正交表設(shè)計時可適當(dāng)增加這些水平值。
3)構(gòu)造測試用例集
利用正交表構(gòu)造測試用例集,正交表內(nèi)容見表2。
表2中列號代表了各個因子,列號與因子名稱的對應(yīng)關(guān)系見表3。
多類型數(shù)據(jù)時間序列特征判讀這一判讀類型使用正交試驗法分析,包含3個2水平因子、3個3水平因子、1個4水平因子,若所有的排列組合中的規(guī)則都要提取,需要提取23*33*4=864個規(guī)則,而采用正交分析法,使用L13(23*33*4)后,最少需要提取出13個有代表的規(guī)則即可,本文中提取了15個規(guī)則,減少了849個規(guī)則的動態(tài)測試。
這只是對其中一種復(fù)雜條件判讀進(jìn)行正交試驗法分析,若對所有的復(fù)雜條件判讀均采用正交試驗法分析,將減少96.87%的工作量,具體情況如表4所示。
表1 因子狀態(tài)表
表2 正交表
續(xù)表2 正交表
表3 列號與因子對應(yīng)關(guān)系表
使用正交試驗法前需要對3483種規(guī)則進(jìn)行驗證,而使用正交試驗法后僅需選取109種規(guī)則代表這3483種規(guī)則,理論上測試工作量減少了96.87%。
使用正交試驗法提取規(guī)則后,還要對規(guī)則設(shè)計用例。
按照表2中第1行的方法提取規(guī)則,該規(guī)則中的故障原因和根據(jù)該原因產(chǎn)生的故障提示信息如表5所示。該規(guī)則無開始時間要求、無結(jié)束時間要求、判讀多次、消息無連續(xù)要求、依賴1553B消息、依賴消息中的時序類型碼及不判A/B通道。
表4 正交試驗法前后的比對情況
表5 規(guī)則描述
該規(guī)則的3個時間點中有1個不符合要求,即報出故障信息。由于3個時間段的分析方法相同,這里僅以開始時間49010ms、時序?qū)挾?0ms為例進(jìn)行分析,采用等價類劃分方法和邊界值分析法,設(shè)計用例如表6所示。
通過引入正交試驗法對故障診斷軟件進(jìn)行測試,原預(yù)計24人月才能完成的測試任務(wù),由2人在近1個月的時間內(nèi)完成,測試效率提高約91.67%,考慮到測試過程受測試環(huán)境搭建與變更、以及人為因素等影響,實際測試效率與理論計算值量級相當(dāng)。更為重要的是,在測試過程中發(fā)現(xiàn)了20余個功能問題,這些問題并不孤立,而是極具代表性的。在判讀類型相同的情況下,若被選取的規(guī)則有問題,代表著與此相同配置的所有規(guī)則均可能存在問題。在此基礎(chǔ)上,軟件開發(fā)方與軟件測試方共同就上述20余個功能問題進(jìn)行了舉一反三,累計發(fā)現(xiàn)同類型問題147項,確保了軟件測試工作的測試充分性和測試覆蓋性。如果這些問題沒有被及時發(fā)現(xiàn),故障診斷軟件可能在故障出現(xiàn)時未能準(zhǔn)確報出故障信息,或者在無故障出現(xiàn)時錯誤地提示故障內(nèi)容,造成現(xiàn)場監(jiān)控人員無法及時發(fā)現(xiàn)故障或誤判故障,帶來較為嚴(yán)重的后果。此外,故障診斷軟件應(yīng)用方試驗人員將更改后的軟件投入系統(tǒng)綜合試驗、預(yù)案驗證試驗、故障模擬試驗等大型試驗進(jìn)行驗證,故障診斷軟件功能正常,所有規(guī)則執(zhí)行正確,進(jìn)一步驗證了采用正交試驗法對故障診斷軟件進(jìn)行測試的有效性。
表6 設(shè)計測試用例
針對故障診斷軟件代碼量大、規(guī)則多,無法在測試進(jìn)度緊張的情況下進(jìn)行充分測試的問題,本文提出了基于正交試驗法提取有代表性規(guī)則的故障診斷軟件測試方法。在某型號故障診斷軟件的測試工作中,驗證了該方法的正確性和有效性,為提高故障診斷軟件測試效率,減少測試人員工作量有很大幫助。