呂俊巧,邢立偉,孫文靖,劉耀文
(1.北京京航計算通訊研究所,北京 100074;2.北京機(jī)電工程研究所,北京 100074)
為了實現(xiàn)靈活機(jī)動的飛行,制導(dǎo)控制系統(tǒng)功能日益復(fù)雜,建模和算法也更加復(fù)雜,相應(yīng)的軟件質(zhì)量直接關(guān)系到性能指標(biāo)的實現(xiàn)和試驗任務(wù)的成敗,而基于系統(tǒng)工作原理進(jìn)行故障模式分析和測試,能夠發(fā)現(xiàn)較深層次的設(shè)計問題,是保障軟件質(zhì)量的重要技術(shù)手段。
對于機(jī)動飛行控制的實現(xiàn),目前在縱向通道或者側(cè)向通道的單一的機(jī)動變軌策略已經(jīng)較為成熟,例如縱向通道的躍起或者下滑、側(cè)向通道的扇面轉(zhuǎn)彎或者“S”形機(jī)動等,相應(yīng)的制導(dǎo)控制律主要解決各自通道的軌跡切換時序和姿態(tài)穩(wěn)定控制,功能較簡單,軟件可靠性較高。
但某些少數(shù)情況下需要采用縱向和側(cè)向雙通道耦合控制的機(jī)動策略,目前這方面的工程應(yīng)用經(jīng)驗較少,相應(yīng)的故障模式和檢測測試技術(shù)也較少,本文結(jié)合實際應(yīng)用進(jìn)行深入研究,通過在縱向和側(cè)向通道分別進(jìn)行運動學(xué)、動力學(xué)建模,引入控制律,得到全空間的仿真軌跡。通過分析縱向和側(cè)向通道的控制律之間的耦合關(guān)系,在機(jī)動區(qū)間內(nèi)引入風(fēng)干擾影響分析,建立風(fēng)干擾模型,在機(jī)動結(jié)束的關(guān)鍵狀態(tài)切換點充分考慮可能的邏輯分支和流程時序,提取可能的故障模式,設(shè)計相應(yīng)的測試用例,進(jìn)行故障注入,全面覆蓋路徑分支,避免遺漏可能的錯誤狀態(tài),從而實現(xiàn)將算法分析與軟件測試方法相結(jié)合的目的,檢測出軟件缺陷,達(dá)到從系統(tǒng)設(shè)計和程序?qū)崿F(xiàn)兩方面保障軟件質(zhì)量的效果[1-2]。
某機(jī)動飛行區(qū)間的縱向和側(cè)向通道理論軌跡分別如圖1、圖2所示。
圖1 縱向通道理論軌跡示意圖
圖2 側(cè)向通道理論軌跡示意圖
飛行初始狀態(tài)為平飛,到達(dá)導(dǎo)航點A開始縱向爬升,到達(dá)導(dǎo)航點B開始側(cè)向轉(zhuǎn)彎,而后到達(dá)導(dǎo)航點C縱向轉(zhuǎn)為平飛,同時側(cè)向轉(zhuǎn)彎結(jié)束并返回直飛狀態(tài)。從點B到點C是縱向和側(cè)向同時進(jìn)行機(jī)動變軌飛行的區(qū)間,縱向先爬升再轉(zhuǎn)平飛,側(cè)向轉(zhuǎn)彎再恢復(fù)直線飛行,相當(dāng)于在躍起過程中進(jìn)行扇面轉(zhuǎn)彎機(jī)動,是一種比較復(fù)雜的機(jī)動飛行狀態(tài),需要縱向俯仰和側(cè)向滾動兩個通道同時啟動控制時序并協(xié)調(diào)切換控制律,容易產(chǎn)生邏輯交聯(lián)和耦合關(guān)系,造成控制效果不穩(wěn)定或者達(dá)不到期望值。所以在測試中要重點關(guān)注控制狀態(tài)切換點及其時序組合的影響因素,從分析算法及其干擾因素入手發(fā)現(xiàn)程序中潛在的邏輯風(fēng)險[3-4]。
在圖1、圖2的理論軌跡中,從點B到點C是縱向和側(cè)向同時進(jìn)行機(jī)動變軌飛行的區(qū)間,縱向先爬升再轉(zhuǎn)平飛,側(cè)向連續(xù)進(jìn)行入彎和出彎控制,相當(dāng)于在躍起過程中進(jìn)行扇面轉(zhuǎn)彎機(jī)動,是一種比較復(fù)雜的機(jī)動飛行狀態(tài)。在制導(dǎo)控制律的設(shè)計中,當(dāng)縱向通道中爬升轉(zhuǎn)平飛條件滿足時,會將側(cè)向通道控制模式置為“恢復(fù)直線飛行”狀態(tài),這樣點C既是縱向爬升轉(zhuǎn)平飛點,又是側(cè)向轉(zhuǎn)彎結(jié)束點。
實際中,多種干擾因素會導(dǎo)致飛行偏離理論軌跡,影響狀態(tài)切換和飛行時序的準(zhǔn)確實現(xiàn),其中風(fēng)干擾是最為常見的重要影響因素。由于陣風(fēng)等實際干擾因素的影響,當(dāng)縱向通道中爬升轉(zhuǎn)平飛條件滿足時,側(cè)向通道的實際狀態(tài)有可能是轉(zhuǎn)彎結(jié)束的“直線飛行狀態(tài)”,也可能還處于“出彎過程中(恢復(fù)直飛狀態(tài)前)”[5]。
在機(jī)動飛行區(qū)間內(nèi),俯仰通道控制律主要采用俯仰角和高度控制,同時受到滾轉(zhuǎn)角的修正作用,如式(1)所示;側(cè)向通道控制規(guī)律主要采用滾動角和側(cè)向位置控制,如式(2)所示。俯仰和滾動兩個通道同時啟動控制時序并協(xié)調(diào)切換控制律,容易產(chǎn)生邏輯交聯(lián)和耦合關(guān)系,造成控制效果不穩(wěn)定或者達(dá)不到期望值。
(1)
(2)
另外,此處采用工程應(yīng)用中簡化的縱向通道和側(cè)向通道的運動和控制模型,分別如式(3)和式(4)所示。
(3)
(4)
機(jī)動區(qū)間內(nèi),縱向通道和側(cè)向通道的控制流程如圖3、圖4所示。
圖3 縱向通道控制流程示意圖
圖4 側(cè)向通道控制流程示意圖
圖3中,縱向在機(jī)動開始后,首先按照飛行參數(shù)和爬升控制律進(jìn)行彈道積分計算,判斷彈道實際狀態(tài)是否到達(dá)轉(zhuǎn)平飛條件,如果不滿足條件就繼續(xù)采用爬升控制律并返回到彈道積分計算的步驟,如果滿足條件則將縱向轉(zhuǎn)平飛標(biāo)志和側(cè)向轉(zhuǎn)直線飛行標(biāo)志同時置為有效并切換為直線平飛階段的控制律,縱向機(jī)動結(jié)束。
圖4中,側(cè)向在機(jī)動開始后,首先按照飛行參數(shù)和側(cè)向轉(zhuǎn)彎控制律進(jìn)行彈道積分計算,判斷側(cè)向直線飛行標(biāo)志是否有效(注意此處沒有判斷彈道的實際狀態(tài)是否到達(dá)轉(zhuǎn)彎結(jié)束點),如果不滿足條件就繼續(xù)采用轉(zhuǎn)彎控制律并返回到彈道積分計算的步驟,如果滿足條件則切換為直線平飛階段的控制律,側(cè)向機(jī)動結(jié)束。
按照上述控制流程進(jìn)行正常模式和故障模式分析如下。
模式1:如果縱向通道中爬升轉(zhuǎn)平飛條件滿足時,側(cè)向通道的實際狀態(tài)已經(jīng)是“直線飛行”,兩通道各自正常飛行,為理論彈道的期望設(shè)計狀態(tài),對整體飛行無異常影響。
模式2:如果由于某些干擾影響,縱向通道中爬升轉(zhuǎn)平飛條件滿足時,側(cè)向通道的實際狀態(tài)是“出彎過程中”,而此時控制量卻轉(zhuǎn)為按照直線控制狀態(tài)進(jìn)行小幅度糾偏控制。由于并沒有完成期望的側(cè)向轉(zhuǎn)彎過程,此時的側(cè)向速度偏差、位置偏差較大,很快使舵面達(dá)到限幅值,因控制能力不足開始滾動,滾轉(zhuǎn)角經(jīng)反饋控制后穩(wěn)定在某個較大值,側(cè)向位置偏差極易超出安控邊界,如圖5所示。
圖5 側(cè)向偏移示意圖
同時當(dāng)側(cè)向滾動角突然變?yōu)檩^大值時,依據(jù)縱向信號計算公式修正程序俯仰角,使俯仰控制信號突然增加,開始抬頭爬升,在縱向平面處于一個穩(wěn)定的爬升過程,偏離理論設(shè)計彈道,直到安控邊界,如圖6所示。
圖6 縱向高度示意圖
模式3:如果由于某些干擾影響,縱向通道中爬升轉(zhuǎn)平飛條件滿足時,側(cè)向通道的實際狀態(tài)是“轉(zhuǎn)彎結(jié)束越過原航向進(jìn)入反向轉(zhuǎn)彎”,而此時控制量卻轉(zhuǎn)為按照原航向直線控制狀態(tài)進(jìn)行小幅度糾偏控制。對側(cè)向和縱向彈道的影響與模式2中類似。
對于狀態(tài)較為復(fù)雜的飛行,軟件測試中要重點關(guān)注控制狀態(tài)切換點及其時序組合,從算法和系統(tǒng)工作流程入手,全面分析各判斷分支的觸發(fā)條件,發(fā)現(xiàn)程序中潛在的邏輯風(fēng)險,避免漏測,增加覆蓋率[5-6]。
針對縱向和側(cè)向同時機(jī)動帶來的雙通道耦合控制的潛在風(fēng)險,在各自通道內(nèi)引入風(fēng)干擾拉偏,并分析對控制實現(xiàn)的影響,在縱向機(jī)動結(jié)束轉(zhuǎn)平飛的切換點,應(yīng)該對實際的滾動通道狀態(tài)和對應(yīng)標(biāo)志位進(jìn)行驗證和確認(rèn),若有交聯(lián)耦合關(guān)系要充分列舉可能的狀態(tài)并設(shè)計測試用例。主要從邏輯測試、邊界測試和安全性測試等方面加強(qiáng)分析,軟件的動態(tài)測試用例要正確且覆蓋全面[7-8]。
① 對控制律切換的時序進(jìn)行嚴(yán)密的邏輯分析,覆蓋相關(guān)的流程分支,并設(shè)計測試用例,以免遺漏可能的錯誤狀態(tài)。本文中的理論彈道設(shè)計意圖是:在爬升轉(zhuǎn)平飛的切換點將側(cè)向通道的滾動控制標(biāo)志位切換為直線控制狀態(tài),這種設(shè)計未考慮干擾和建模不確定性等因素的影響,隱藏著風(fēng)險,所以測試中需要在合適的節(jié)點加入風(fēng)干擾模型(見圖3、圖4中的風(fēng)干擾模塊),以驗證算法的準(zhǔn)確性[9]。
② 在縱向機(jī)動和側(cè)向機(jī)動區(qū)間的端點,要進(jìn)行邊界測試,驗證狀態(tài)切換邊界實現(xiàn)的安全可靠性。
③ 安全性測試應(yīng)關(guān)注對故障情況的容錯或者避錯設(shè)計,在故障變?yōu)槭坝枰宰R別并處理,驗證飛行控制程序的安全性能。
根據(jù)上述分析,基于機(jī)動區(qū)間的狀態(tài)切換流程,利用邏輯覆蓋法、邊界值分析和錯誤推測法等測試技術(shù)進(jìn)行測試用例設(shè)計,驗證機(jī)動后的滾動通道直線控制狀態(tài)的判定處理是否正確[10]。
對軟件功能進(jìn)行邏輯覆蓋測試,執(zhí)行正常功能的測試用例,再通過程序插樁增加風(fēng)干擾,設(shè)計異常情況下的測試用例,驗證軟件的異常處理功能。具體是在縱向和側(cè)向分別增加垂直風(fēng)干擾和側(cè)風(fēng)干擾(合理范圍為0~40 m/s),使實際彈道的機(jī)動結(jié)束點與設(shè)計點不一致。設(shè)計具體用例如表1所示。
表1 邏輯覆蓋測試用例設(shè)計
f1為縱向機(jī)動狀態(tài)的標(biāo)志位。f1=0:縱向風(fēng)干擾為0(縱向機(jī)動按照設(shè)計點完成并轉(zhuǎn)平飛);f1=-1:縱向增加垂直逆風(fēng)30 m/s(縱向機(jī)動比設(shè)計點延遲完成);f1=1:縱向增加垂直順風(fēng)30 m/s(縱向機(jī)動比設(shè)計點提前完成)。
f2為側(cè)向機(jī)動狀態(tài)的標(biāo)志位。f2=0:側(cè)向風(fēng)干擾為0(側(cè)向機(jī)動按照設(shè)計點完成并轉(zhuǎn)直飛);f2=-1:側(cè)向增加逆風(fēng)30 m/s(側(cè)向機(jī)動比設(shè)計點延遲完成);f2=1:側(cè)向增加順風(fēng)30 m/s(側(cè)向機(jī)動比設(shè)計點提前完成)。
f3為機(jī)動結(jié)束設(shè)計點的縱向控制的標(biāo)志位,f3=0:縱向轉(zhuǎn)平飛控制 ;f3=-1:縱向爬升控制;f3=1:縱向降高控制。
f4為機(jī)動結(jié)束設(shè)計點的側(cè)向控制的標(biāo)志位。f4=0:側(cè)向機(jī)動轉(zhuǎn)直飛控制;f4=-1:側(cè)向轉(zhuǎn)彎控制;f4=1:側(cè)向反向轉(zhuǎn)彎控制。
從實際執(zhí)行結(jié)果可以看出,當(dāng)縱向與側(cè)向的機(jī)動結(jié)束狀態(tài)一致時,實際測試結(jié)果與期望結(jié)果是一致的;當(dāng)縱向與側(cè)向的機(jī)動結(jié)束狀態(tài)不一致時,實際測試結(jié)果與期望結(jié)果是不一致的。
由于控制流程中將縱向機(jī)動結(jié)束點作為側(cè)向機(jī)動結(jié)束標(biāo)志位的同步觸發(fā)條件,所以通過邊界測試重點對機(jī)動結(jié)束的設(shè)計點的雙通道狀態(tài)匹配情況進(jìn)行驗證。
以縱向機(jī)動的正常結(jié)束點和對應(yīng)的側(cè)向機(jī)動實際狀態(tài)作為測試輸入,通過程序插樁增加側(cè)向的逆風(fēng)或者順風(fēng)干擾,設(shè)計測試用例如表2所示。
表2 機(jī)動區(qū)間右端點的邊界測試用例設(shè)計
從實際執(zhí)行結(jié)果可以看出,當(dāng)縱向與側(cè)向的機(jī)動狀態(tài)一致時,實際測試結(jié)果與期望結(jié)果是一致的;當(dāng)縱向與側(cè)向的機(jī)動狀態(tài)不一致時,實際測試結(jié)果與期望結(jié)果是不一致的,測試未通過。
分析軟件實現(xiàn)所依據(jù)的飛行控制策略和流程,縱向通道切換控制模式的同時也觸發(fā)側(cè)向通道控制模式的切換(見圖3中的紅色虛線框),而外界干擾的不確定性會導(dǎo)致實際兩通道控制模式的不一致,屬于軟件設(shè)計缺陷。
根據(jù)經(jīng)驗對關(guān)鍵切換點進(jìn)行錯誤推測以驗證安全性,復(fù)用3.2節(jié)中表2的測試用例2和測試用例3,在邊界上的側(cè)向增加逆風(fēng)30 m/s(側(cè)向延遲到達(dá))和順風(fēng)30 m/s(側(cè)向提前到達(dá)),形成安全性測試類型的測試用例??梢钥闯觯谑艿斤L(fēng)干擾影響后,機(jī)動結(jié)束點的雙通道控制仍然沿用理論設(shè)計值,沒有根據(jù)實際飛行狀態(tài)切換到所需的控制流程,說明算法設(shè)計中沒有考慮對關(guān)鍵切換點異常的容錯設(shè)計。
筆者研究了一類機(jī)動飛行模式的算法,并進(jìn)行了故障注入、檢測,提取了相應(yīng)的測試方法和軟件設(shè)計準(zhǔn)則。
① 基于系統(tǒng)工作原理和流程分析進(jìn)行建模分析和測試場景設(shè)計,包括正常的和異常的,關(guān)注對異常分支的容錯和避錯設(shè)計,有利于檢查系統(tǒng)和軟件的可靠性和正確性。
② 在測試方法研究中,測試用例設(shè)計要結(jié)合真實有效的數(shù)據(jù)模擬進(jìn)行,對數(shù)據(jù)的形式和注入方式、故障模式的覆蓋都要充分考慮,避免漏測。
① 關(guān)鍵狀態(tài)點切換的條件和流程分支判斷標(biāo)準(zhǔn)要充分準(zhǔn)確,在雙通道耦合控制的設(shè)計中要充分考慮干擾等建模不確定性的影響,增加控制律的魯棒性設(shè)計。
② 針對算法較為復(fù)雜的軟件,應(yīng)該采用故障樹分析(FTA)、失效模式影響及危害分析(FMECA)等方法,找出影響安全性的關(guān)鍵功能或者潛在的失效隱患,例如時序錯誤、量值超限、環(huán)境干擾等,制定相應(yīng)的安全響應(yīng)措施或者容錯設(shè)計。
綜上,通過軟件的算法分析加強(qiáng)對程序邏輯結(jié)構(gòu)的深入了解,進(jìn)而定位相應(yīng)的設(shè)計風(fēng)險和邏輯隱患,設(shè)計有針對性的故障注入或測試用例,保障測試的功能覆蓋的充分性和安全可靠性,對于實現(xiàn)機(jī)動、靈活、快速的控制能力有重要保障意義,是對關(guān)鍵復(fù)雜軟件開展測試工作的重要研究方向。