熊 波,柏 晗,郝小蕾
(中國(guó)航發(fā)控制系統(tǒng)研究所,江蘇 無錫 214063)
航空發(fā)動(dòng)機(jī)控制系統(tǒng)是航空發(fā)動(dòng)機(jī)的重要組成部分。隨著科學(xué)技術(shù)的進(jìn)步,航空發(fā)動(dòng)機(jī)的控制系統(tǒng)從傳統(tǒng)的液壓機(jī)械控制系統(tǒng)發(fā)展到目前的全權(quán)限數(shù)字電子式控制(FADEC)系統(tǒng)。FADEC軟件級(jí)別依據(jù)系統(tǒng)安全評(píng)估過程中所確定的潛在失效狀態(tài)定義為A級(jí)(Level A),它對(duì)可靠性的要求比普通軟件高,這就要求對(duì)FADEC軟件進(jìn)行嚴(yán)格的測(cè)試,以提高產(chǎn)品的可靠性。發(fā)動(dòng)機(jī)控制軟件(發(fā)控軟件)在國(guó)內(nèi)面臨以下幾個(gè)挑戰(zhàn):研制周期長(zhǎng)、頻繁的需求變更且進(jìn)度緊迫。如何保證發(fā)控軟件能夠應(yīng)對(duì)挑戰(zhàn),重要的一點(diǎn)是每次變更帶來的回歸測(cè)試要完整、全面。本文主要探討針對(duì)發(fā)控軟件的系統(tǒng)測(cè)試自動(dòng)化平臺(tái)的設(shè)計(jì),來滿足發(fā)控軟件的安全性需求。
DO-178C[1]是國(guó)際公認(rèn)的機(jī)載軟件開發(fā)指南,其目的是為航空軟件的生產(chǎn)提供指導(dǎo),使軟件達(dá)到相應(yīng)等級(jí)的安全性。DO-178C中的6.4節(jié)給出了一條說明軟件測(cè)試充分、完整的途徑,它的測(cè)試?yán)砟頪2]是回溯測(cè)試的本源,基于需求進(jìn)行用例設(shè)計(jì),最后通過對(duì)需求的覆蓋率和代碼的結(jié)構(gòu)覆蓋率來評(píng)判測(cè)試的充分性?;谛枨蟮挠布?軟件綜合測(cè)試(DO-178C 6.4.3.a)作為重要一環(huán),本地化后對(duì)應(yīng)為發(fā)控軟件的系統(tǒng)測(cè)試,它的目標(biāo)是確保目標(biāo)機(jī)中的軟件滿足高層需求,它所關(guān)注的輸入輸出均為和外部接口相關(guān)的,直接影響發(fā)動(dòng)機(jī)控制,一旦不能完整驗(yàn)證,將存在很大的泄漏風(fēng)險(xiǎn)。
在發(fā)控軟件的全生命周期過程中,都會(huì)進(jìn)行很多次的軟件升級(jí),需要進(jìn)行回歸測(cè)試。目前通常采取的是手工執(zhí)行的方式,受限于時(shí)間節(jié)點(diǎn),手工執(zhí)行只能采取增量測(cè)試,即對(duì)變更的內(nèi)容進(jìn)行測(cè)試,而發(fā)控軟件是一個(gè)非常復(fù)雜的軟件,其實(shí)現(xiàn)發(fā)動(dòng)機(jī)控制的80%以上功能,數(shù)據(jù)和控制耦合交叉影響,任何更改都可能帶來非預(yù)期的更改,針對(duì)變更的增量測(cè)試也難于保證測(cè)試的全面性。通過分析某所近年外場(chǎng)暴露的軟件缺陷,多個(gè)國(guó)家重點(diǎn)項(xiàng)目均出現(xiàn)關(guān)聯(lián)更改帶來的軟件缺陷,比如某項(xiàng)目因?yàn)楦南δ芟碌狞c(diǎn)火影響到起動(dòng)功能時(shí)的點(diǎn)火,從而導(dǎo)致發(fā)動(dòng)機(jī)起動(dòng)失敗。
自動(dòng)化測(cè)試是針對(duì)手工測(cè)試效率低,覆蓋面不全等問題產(chǎn)生的。自動(dòng)化測(cè)試框架就是用計(jì)算機(jī)按照特定流程或業(yè)務(wù)邏輯來模擬用戶執(zhí)行的操作,比較軟件執(zhí)行結(jié)果與預(yù)期的差別,將執(zhí)行結(jié)果記錄到日志文件中去的過程。由于計(jì)算機(jī)能夠做到執(zhí)行重復(fù)的操作,并且每一次操作都是無差異性的,從而彌補(bǔ)了手工測(cè)試對(duì)單一重復(fù)操作的不足。自動(dòng)化測(cè)試是測(cè)試行業(yè)智能化中很重要的一個(gè)體現(xiàn),這個(gè)轉(zhuǎn)變大大提高了工作效率[3-12]。
自動(dòng)化測(cè)試技術(shù)按照成熟度趨勢(shì)劃分,經(jīng)歷了以下幾個(gè)階段:
1)錄制和回放技術(shù)。把手工測(cè)試過程捕獲下來,形成線性腳本,利用回放功能,重復(fù)執(zhí)行錄制的軟件操作。由于錄制的腳本和對(duì)象及測(cè)試數(shù)據(jù)完全耦合,當(dāng)對(duì)象、測(cè)試數(shù)據(jù)改變時(shí)必須重新錄制,給腳本維護(hù)帶來極大的不便。
2)基于數(shù)據(jù)驅(qū)動(dòng)的測(cè)試。從數(shù)據(jù)文件中讀取輸入數(shù)據(jù),將數(shù)據(jù)與測(cè)試腳本分離,從而可以在不修改測(cè)試腳本的情況下通過更新測(cè)試數(shù)據(jù)完成對(duì)測(cè)試用例的增加、更改和刪除,適應(yīng)于對(duì)相同流程進(jìn)行大數(shù)據(jù)量測(cè)試且測(cè)試結(jié)果可被預(yù)期的情況,但是未提供良好機(jī)制適應(yīng)被測(cè)程序的變動(dòng)。
3)基于關(guān)鍵字驅(qū)動(dòng)的測(cè)試。主要思想是把傳統(tǒng)測(cè)試腳本中變化的與不變的信息進(jìn)行了分離,使得分工更加明確,并且避免了它們相互之間的影響。它需要將具體測(cè)試和自動(dòng)化工具以及應(yīng)用程序本身的變化完全隔離開。但是這種投資是一次性的,一旦開發(fā)結(jié)束并投入使用,它給人們帶來的效益是巨大的,是自動(dòng)化測(cè)試框架中最容易維護(hù)和使用的,而且可以反復(fù)運(yùn)用于各種應(yīng)用中,長(zhǎng)期發(fā)揮作用。
目前,大多數(shù)測(cè)試工具處于數(shù)據(jù)驅(qū)動(dòng)到關(guān)鍵字驅(qū)動(dòng)之間的階段,其中支持?jǐn)?shù)據(jù)驅(qū)動(dòng)的主流測(cè)試工具包括WebKing、Rational Robot、WinRunner、QTP等,支持關(guān)鍵字驅(qū)動(dòng)的主流測(cè)試工具包括SAFS、FitNesse、Certify、UTP、QTP等。
自動(dòng)化測(cè)試框架工具雖然有多種且各有側(cè)重,如針對(duì)GUI、Web等自動(dòng)化測(cè)試,但是對(duì)于發(fā)動(dòng)機(jī)控制軟件系統(tǒng)測(cè)試的特殊性,需要構(gòu)建嵌入式系統(tǒng)的自動(dòng)化測(cè)試框架,將主流測(cè)試工具進(jìn)行本地化改造的工程量巨大,尚未有成功的應(yīng)用實(shí)踐。本文結(jié)合關(guān)鍵字驅(qū)動(dòng)的技術(shù),研究一種以滿足DO-178C需求的覆蓋率目標(biāo)為基礎(chǔ),構(gòu)建測(cè)試用例自動(dòng)化執(zhí)行、結(jié)果自動(dòng)化分析、基于需求追溯的測(cè)試覆蓋率自動(dòng)化顯形,在回歸測(cè)試時(shí)可以快速自動(dòng)執(zhí)行,并最終達(dá)到MC/DC覆蓋率要求,解決以往航空發(fā)控軟件系統(tǒng)回歸測(cè)試過程中驗(yàn)證不完整的問題。最終形成的平臺(tái)架構(gòu)設(shè)計(jì)如圖1所示,拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖1 自動(dòng)化測(cè)試框架
圖2 自動(dòng)化測(cè)試平臺(tái)環(huán)境拓?fù)浣Y(jié)構(gòu)
自動(dòng)化測(cè)試框架的運(yùn)行操作步驟如下:
1)測(cè)試人員編寫測(cè)試用例文件;
2)根據(jù)測(cè)試平臺(tái)定義的規(guī)則軟件解析測(cè)試用例文件,形成測(cè)試執(zhí)行腳本;
3)測(cè)試平臺(tái)軟件按測(cè)試執(zhí)行腳本中的操作步驟,通過網(wǎng)絡(luò)通訊向地檢軟件和上位機(jī)軟件發(fā)送對(duì)應(yīng)的指令;
4)地檢軟件根據(jù)接收到的操作步驟指令,設(shè)置控制器的輸入信號(hào),獲取控制器的輸出信號(hào);
5)上位機(jī)軟件保存來自控制器的數(shù)據(jù),并根據(jù)操作步驟指令與控制器進(jìn)行數(shù)據(jù)交互;
6)所有用例執(zhí)行完成后,數(shù)據(jù)分析軟件對(duì)所有用例對(duì)應(yīng)的數(shù)據(jù)文件進(jìn)行分析,最終輸出測(cè)試結(jié)果報(bào)表,并最終顯形測(cè)試的需求覆蓋情況。
將自動(dòng)化測(cè)試操作運(yùn)用到實(shí)際型號(hào)項(xiàng)目中,最終形成的測(cè)試流程如圖3所示。
圖3 系統(tǒng)測(cè)試自動(dòng)化整體流程圖
基于Doors中的需求開展需求分析,并將所有的需求標(biāo)識(shí)存放到工作環(huán)境中,需求的標(biāo)識(shí)存放形式如圖4所示。
圖4 需求標(biāo)識(shí)全集
項(xiàng)目基于標(biāo)準(zhǔn)工作項(xiàng),通過工具自動(dòng)化產(chǎn)生測(cè)試設(shè)計(jì)的工作目錄,如圖5所示。
圖5 標(biāo)準(zhǔn)工作目錄
基于標(biāo)準(zhǔn)工作目錄分配任務(wù),不同的測(cè)試人員在統(tǒng)一的工作目錄下開展測(cè)試規(guī)程設(shè)計(jì)并更新上傳到配置管理服務(wù)器SVN,測(cè)試規(guī)程規(guī)格如圖6所示,同時(shí)在測(cè)試規(guī)程中定義了其所追溯的需求。
至此,測(cè)試用例的設(shè)計(jì)工作基本完成。
圖6 測(cè)試規(guī)程的設(shè)計(jì)
原測(cè)試執(zhí)行模式是基于單個(gè)需求場(chǎng)景設(shè)計(jì)輸入步驟,然后從對(duì)應(yīng)的數(shù)據(jù)文件中尋找驗(yàn)證點(diǎn)所在的片段進(jìn)行數(shù)據(jù)比對(duì),帶來的一個(gè)問題就是“忽略”了數(shù)據(jù)文件中的其他片段,也不關(guān)注其他場(chǎng)景下產(chǎn)生的數(shù)據(jù)是否符合本場(chǎng)景下的驗(yàn)證點(diǎn),降低了隨機(jī)掃描發(fā)現(xiàn)問題的概率;再一個(gè)就是這種模式下人工處理環(huán)節(jié)造成的效率提升困難。因此將原測(cè)試規(guī)程中的執(zhí)行和分析進(jìn)行剝離,最后產(chǎn)出每個(gè)被測(cè)對(duì)象的操作場(chǎng)景和分析算法。通過部署執(zhí)行和分析解耦,可以提高回歸測(cè)試執(zhí)行的效率和測(cè)試數(shù)據(jù)分析的充分性,更好地抑制軟件關(guān)聯(lián)更改引入的缺陷,同時(shí)也能彌補(bǔ)人工分析不足的問題。
首先基于測(cè)試執(zhí)行部分開展腳本設(shè)計(jì),腳本通過和測(cè)試規(guī)程名稱的一致性來保證追溯性。執(zhí)行腳本設(shè)計(jì)完后在測(cè)試執(zhí)行軟件下進(jìn)行自動(dòng)執(zhí)行,產(chǎn)生測(cè)試數(shù)據(jù)。為了更好地提升腳本設(shè)計(jì)效率和提高可讀性、可維護(hù)性,采取關(guān)鍵字驅(qū)動(dòng)的設(shè)計(jì)技術(shù)[13-16],將常見操作進(jìn)行封裝,測(cè)試人員可以采取類自然語言的方式編寫腳本,如圖7所示。
圖7 執(zhí)行腳本
每個(gè)測(cè)試用例運(yùn)行前,系統(tǒng)都需要重置以保證系統(tǒng)的初始狀態(tài),如圖7中的進(jìn)入待機(jī)狀態(tài),該關(guān)鍵字含重啟模型的機(jī)制,如圖8所示。當(dāng)測(cè)試用例出現(xiàn)異常,比如模型死機(jī)、拋出異常等,會(huì)導(dǎo)致該用例執(zhí)行不通過,測(cè)試人員可以從執(zhí)行記錄中分析異常。
圖8 初始化系統(tǒng)狀態(tài)
在執(zhí)行的過程基于Jenkins打通遠(yuǎn)程部署和分布式執(zhí)行,執(zhí)行完成后產(chǎn)生測(cè)試數(shù)據(jù),并自動(dòng)推送到數(shù)據(jù)服務(wù)器存儲(chǔ),如圖9所示。
圖9 測(cè)試數(shù)據(jù)
產(chǎn)生的測(cè)試數(shù)據(jù)需要自動(dòng)按照用例名存放到特定的目錄,以實(shí)現(xiàn)分析的自動(dòng)化。自動(dòng)存儲(chǔ)的設(shè)計(jì)如圖10所示。
圖10 設(shè)定自動(dòng)化存儲(chǔ)測(cè)試數(shù)據(jù)
在開發(fā)執(zhí)行腳本并執(zhí)行的同時(shí),可以基于測(cè)試規(guī)程開展分析腳本的開發(fā)。分析腳本的設(shè)計(jì)[17-19]如圖11所示。
圖11 分析腳本的設(shè)計(jì)
分析腳本庫函數(shù)的設(shè)計(jì)如圖12所示。
圖12 分析腳本庫函數(shù)的設(shè)計(jì)
定義追溯鏈路并規(guī)格化,才能工具化。分析腳本中和需求的追溯關(guān)系規(guī)格定義如圖13所示。
圖13 分析腳本中定義和需求及驗(yàn)證對(duì)象的跟蹤關(guān)系
測(cè)試數(shù)據(jù)產(chǎn)生后,利用分析腳本進(jìn)行測(cè)試結(jié)果的自動(dòng)化分析,分析腳本的使用模式如圖14所示。
圖14 分析腳本的使用模式
通過測(cè)試數(shù)據(jù)和分析腳本的“交叉式”分析,可以極大地提升分析的效率,這是人工分析難于達(dá)成的,比如圖14中,未將執(zhí)行和分析解藕,則只能分析將A、B執(zhí)行腳本產(chǎn)生數(shù)據(jù)分別用分析腳本A、B分析,執(zhí)行2次分析,而解耦后的分析腳本是基于全場(chǎng)景下的對(duì)象來設(shè)計(jì)的,可以分析任一場(chǎng)景下該對(duì)象的預(yù)期符合性,因此A、B執(zhí)行腳本產(chǎn)生數(shù)據(jù)均可以用分析腳本A、B分析,執(zhí)行了4次分析,隨著執(zhí)行和分析腳本的增加,分析的數(shù)量呈指數(shù)級(jí)增長(zhǎng)。
通過構(gòu)建基于Jenkins的分布式數(shù)據(jù)分析平臺(tái),實(shí)現(xiàn)不同區(qū)域的分析腳本和數(shù)據(jù)服務(wù)器中的測(cè)試數(shù)據(jù)進(jìn)行聯(lián)合分析。
分布式數(shù)據(jù)自動(dòng)分析批處理命令如圖15所示。
圖15 分布式數(shù)據(jù)自動(dòng)分析批處理命令
分析完成后通過自動(dòng)化工具,產(chǎn)生測(cè)試的執(zhí)行記錄,如圖16所示。
圖16 測(cè)試記錄
最后,對(duì)所有的測(cè)試記錄,結(jié)合需求標(biāo)識(shí)全集、測(cè)試規(guī)程、測(cè)試執(zhí)行腳本、分析腳本等通過工具化可以分析得到每條需求的設(shè)計(jì)和執(zhí)行覆蓋狀態(tài),如圖17和圖18所示。
圖17 需求的設(shè)計(jì)覆蓋
圖18 需求的執(zhí)行覆蓋
同時(shí)也可以直觀顯形統(tǒng)計(jì)出覆蓋率,最終回答DO-178C中需求百分百覆蓋的目標(biāo),如圖19所示。
圖19 需求的設(shè)計(jì)覆蓋率和執(zhí)行覆蓋率
使用本文基于需求覆蓋的系統(tǒng)測(cè)試自動(dòng)化技術(shù)和方法,對(duì)某所重點(diǎn)型號(hào)項(xiàng)目控制軟件進(jìn)行自動(dòng)化測(cè)試部署,通過實(shí)施表明,在人工基于增量測(cè)試的基礎(chǔ)上通過自動(dòng)化測(cè)試幫助項(xiàng)目發(fā)現(xiàn)了不少關(guān)鍵的缺陷,這些問題都是原先的測(cè)試模式所不能發(fā)現(xiàn)的,有效地提升了產(chǎn)品質(zhì)量,應(yīng)用成效如圖20、圖21和表1所示。發(fā)現(xiàn)的問題主要有2類:1)在有限的時(shí)間內(nèi)可以做更多的分析,即通過交叉式分析可以達(dá)到比原模式指數(shù)級(jí)增加的分析量,從而發(fā)現(xiàn)人工未識(shí)別到的異常數(shù)據(jù);2)在有限的時(shí)間內(nèi)可以設(shè)置更多的場(chǎng)景,即針對(duì)變更人工設(shè)計(jì)的用例未覆蓋全,具有自動(dòng)化后可以將原有的用例快速執(zhí)行從而發(fā)現(xiàn)不足。
圖20 自動(dòng)化測(cè)試對(duì)缺陷抑制的作用
圖21 自動(dòng)化測(cè)試對(duì)測(cè)試執(zhí)行效率的提升
表1 自動(dòng)化測(cè)試對(duì)測(cè)試分析量的提升
本文基于適航DO-178C要求的需求完全覆蓋的目標(biāo),針對(duì)FADEC軟件的特點(diǎn),從如何在軟件全生命周期的過程中快速有效地完整驗(yàn)證,抑制問題泄漏為目的,研究自動(dòng)化測(cè)試的相關(guān)技術(shù),并設(shè)計(jì)整套測(cè)試流程。通過規(guī)格化測(cè)試規(guī)程和標(biāo)準(zhǔn)工作環(huán)境,提升協(xié)調(diào)工作能力;通過自動(dòng)化執(zhí)行技術(shù)的突破,提升執(zhí)行的可重復(fù)性,從而保障回歸測(cè)試的完整性;通過執(zhí)行和分析的流程設(shè)計(jì)以及測(cè)試分析技術(shù)應(yīng)用,極大地提升分析的全面性;通過建立需求到測(cè)試規(guī)程、測(cè)試規(guī)程到測(cè)試執(zhí)行腳本、測(cè)試規(guī)程到測(cè)試分析腳本之間的層層追溯,通過工具化顯形需求的覆蓋狀態(tài)。通過在發(fā)控軟件項(xiàng)目上的應(yīng)用也表明極大地提高了驗(yàn)證的完整性,具有很強(qiáng)的推廣性和應(yīng)用前景。