竇鈉 張紅軍 范延芳 王向暉
(北京空間飛行器總體設計部,北京 100094)
數據管理系統作為航天器的信息管理中樞,負責航天器內部、航天器與地面站或航天器之間的數據傳輸與處理,因此,數據管理系統的穩定與可靠在很大程度上決定了航天器任務的成敗。數據管理系統與航天器內部其他分系統、地面站或其他航天器之間都有數據傳輸接口,該特性決定了數據管理系統軟件的需求變更數量多、頻度高,也就導致了重復性測試多、測試周期長、回歸測試頻繁[1],因此,數據管理系統軟件的測試進度與效果,決定了數據管理系統能否按時保質交付,也直接影響著航天器的總裝與集成測試工作。
航天器測試一般通過產生一系列的輸入(或激勵)和測試輸出值來驗證系統是否滿足要求[2]。在傳統測試環境中,測試人員在測試設備的支撐下,按照測試細則對各項功能性能進行測試,需要進行大量的手動操作為數據管理系統提供輸入,需要對大量的測試數據進行判讀,花費時間較長,且測試的有效性也難以保證。雖然隨著測試技術的發展,數據管理系統已經引進了一定的自動化測試方法,但依然以人工測試為主,測試周期較長,尤其對于數據管理系統軟件常規功能的測試,要花費大量的人力和時間,還經常出現人工判讀疏忽導致測試不充分的問題。這些問題最終會出現在整個航天器測試中,在一定程度上影響了整個測試。近年來,我國航天器任務急劇增加,而研制周期卻在大幅縮短,這也給人工測試帶來了巨大的壓力。
本文提出一種針對數據管理系統軟件的自動化測試系統設計。該測試系統在虛擬的數據管理系統設備上運行數據管理系統軟件,按照預先設計的測試任務規劃自動完成航天器遙測功能、遙控功能、總線通信管理功能等的測試,測試過程中不需要人工干預。如果發現非致命問題,則記錄;如果發現致命問題,則停止測試;測試完成后自動生成原始測試報告。因此,自動化測試系統對于縮短測試周期、提高測試有效性具有明顯的優勢。該測試系統適用于航天器數據管理系統在實驗室測試軟件,其優勢在軟件頻繁更動情況下的回歸測試中尤為明顯。
自動化測試指的是測試過程不需要人員干預,測試人員只要啟動測試,后續測試工作由測試系統自動完成。這對測試系統的自動化程度要求非常高,測試系統要能自動識別測試任務、自動產生測試輸入、自動判讀測試輸出數據并得出測試結論。
在傳統測試方法中,測試人員能夠準確識別測試任務、識別需要完成的操作、查找測試數據的判讀依據并進行判讀。這些對測試人員來說比較簡單的工作,對于計算機系統來說卻沒有那么容易。因此,自動化測試系統作為一種計算機系統,實現的難點在于提煉出被測系統的各項特征屬性,建立被測系統的輸入輸出映射關系,以便測試系統能夠識別并按照約定的規則完成測試工作,抽象出測試任務的結構化模型,形成描述準確的測試任務序列。
基于此,自動化測試系統設計的關鍵在于:①建立被測系統模型,提煉被測系統的特征屬性。這些屬性具有通用性,能夠表示常見被測系統的關鍵特性。②建立表征被測系統輸入輸出映射關系的標準結構數據系統。測試系統通過該數據系統可以準確識別出某輸入數據對應的輸出數據,從而能夠自動判讀數據傳輸與處理的正確性。③通過一種合適的計算機語言準確的描述測試任務的結構化模型,形成計算機可識別的測試序列。
針對自動化測試系統設計的關鍵點,本文將自動化測試系統劃分為被測系統模塊、基礎數據系統模塊和測試接入控制(TAC)系統模塊,其結構如圖1所示。
1)被測系統模塊
本文通過虛擬測試(VTEST)工具建立被測系統模塊(由虛擬數據管理計算機、數據管理的其他虛擬設備、數據管理系統軟件及其他分系統虛擬設備共同構成)。VTEST是一個系統級虛擬平臺軟件,在自動化測試系統中的作用是構建虛擬數據管理計算機、數據管理的其他虛擬設備及航天器其他分系統的虛擬設備,數據管理系統軟件可以不加修改直接在該虛擬數據管理計算機上運行,并且其運行的動態特性與在真實目標機上一致。
2)基礎數據系統模塊
本文通過電子信息設計系統(EDS)建立基礎數據系統模塊。EDS將航天器輸入和輸出的數據進行整合,形成類型、接口、結構、解析方法等統一的航天器基礎數據源。EDS為自動化測試系統提供的航天器基礎數據包括遙測參數采集波道、遙控指令波道、遙測參數處理、指令使用判讀、遙測包、遙測幀、虛擬信道、遙測包調度策略、遙測幀調度策略、總線傳輸鏈路等,這些基礎數據按照統一標準的數據結構輸出,作為自動化測試系統的輸入。以遙測數據為例,通過EDS可以明確航天器每個遙測數據的采集通道、處理方法、隸屬遙測包及在隸屬遙測包中的位置等,這些基礎數據即構成航天器的數據流傳輸路徑,經過轉換可以形成自動化測試系統的數據監視依據。
3)TAC系統模塊
TAC系統模塊是自動化測試系統的核心模塊,完成配置數據的生成以及全部自動化操作。它根據基礎數據系統模塊生成的航天器基礎數據,生成自動化測試系統需要的TAC配置數據;再根據TAC配置數據中的遙控格式、指令通道等生成被測數據管理系統軟件的激勵(指令)[2],并將這些指令自動發送給被測系統模塊,觸發數據管理系統軟件運行相關功能。TAC系統模塊接收被測系統模塊中數據管理系統軟件輸出的遙測數據,按照TAC配置數據中的遙測格式、遙測通道、遙測處理方法等解析接收到的遙測數據,并判讀其正確性。TAC系統模塊還監視被測系統模塊中的數據管理系統軟件與其他被控對象之間傳輸的總線數據,并進行分析比對;此外,還可以為測試用戶提供操作界面,完成自動化測試系統的基本管理工作。

圖1 自動化測試系統結構Fig.1 Structure of automatic test system
本文設計的自動化測試系統采用分層結構[3],如圖1所示。
(1)設備層對應被測系統模塊,被測數據管理系統軟件在設備層中的虛擬數據管理計算機中運行。
(2)服務層對應TAC系統模塊的部分單元,即TAC配置生成單元、中心控制單元和總線監視單元。TAC配置生成單元根據航天器基礎數據生成自動化測試系統的TAC配置數據。中心控制單元根據TAC配置數據完成與被測數據管理系統軟件的通信,并存儲到系統數據庫,在需要時從系統數據庫中讀取測試數據。總線監視單元用來監視被測數據管理系統軟件與其他被控對象之間傳輸的數據,存儲到系統數據庫。
(3)應用層對應TAC系統模塊的部分單元,即上行注入單元、遙測顯示單元、數據判讀與告警單元,主要用于被測系統模塊的輸入、輸出操作與監視。
(4)數據配置管理層對應TAC系統模塊的部分單元(系統數據庫、腳本生成單元)及基礎數據系統模塊。系統數據庫存儲測試過程中生成的測試數據。腳本生成單元可以生成按時間排列的測試任務表。自動化測試系統按照測試腳本,根據實時調度時鐘信號和條件判斷,觸發相應的測試[4]。基礎數據系統模塊生成航天器基礎數據,供TAC系統模塊使用。
(5)測試管理層完成自動化測試系統的全面管理,包括測試文檔生成單元、測試問題管理單元、測試日志管理單元、測試腳本管理單元[5]。
自動化測試系統的數據流如圖2所示。其中:實線為數據管理系統輸入輸出的數據流,虛線為自動化測試系統控制數據流。
(1)基礎數據系統模塊生成航天器基礎數據,并將其傳輸給TAC系統模塊的TAC配置生成單元,TAC配置生成單元將航天器基礎數據生成TAC配置數據,并傳輸給腳本生成單元、中心控制單元、上行注入單元、遙測顯示單元及數據判讀與告警單元,完成相應的功能。
(2)腳本生成單元生成測試腳本,其中的測試任務抽象參數傳輸給中心控制單元和數據判讀與告警單元,其中的測試任務序列傳輸給中心控制單元。
(3)中心控制單元接收TAC配置數據、測試任務抽象參數及測試任務序列,通過這些數據完成自動化測試的綜合控制與調度。中心控制單元和總線監視單元將被測系統模塊的遙測數據、遙控數據和總線監視數據存儲到系統數據庫中。
(4)被測系統模塊由中心控制單元控制,按照測試腳本中的測試任務序列運行相應的測試項目;數據判讀與告警單元從系統數據庫中讀取被測系統模塊的遙測數據、遙控數據及總線監視數據,按照測試腳本中預先設計的測試任務抽象參數進行數據判讀。如果被測系統模塊出現致命問題,則停止測試,并輸出告警信息;如果被測系統模塊出現非致命問題,則記錄該問題,并繼續進行后續測試,最終生成測試報告。

圖2 自動化測試系統數據流Fig.2 Data flow of automatic test system
一般,數據管理系統軟件的測試任務包括上行遙控測試、下行遙測測試、總線通信管理測試等。傳統數據管理系統軟件測試由人工設計測試用例、編寫測試細則并操作完成測試。由于全程人工干預,測試過程中難免因操作失誤而出現重復操作、操作較慢等現象,也必然導致測試效率不高,測試周期長。自動化測試系統能夠有效完成測試工作的關鍵在于測試任務的抽象,抽象后的測試任務可通過統一的架構來描述,在測試腳本中生成按時間排列的測試任務表。測試任務啟動后,自動化測試系統根據實時調度時鐘信號和條件判斷,觸發相應的測試;TAC系統模塊解析測試腳本,從系統數據庫中讀取相關測試數據,根據抽象統一的判決條件判讀被測系統模塊輸出的數據是否正確,并給出判讀結論[6]。測試任務的抽象屬性見表1。

表1 測試任務的抽象屬性
應用自動化測試系統進行數據管理系統軟件測試的完整流程,如圖3所示。測試準備部分由人工完成,測試實施部分由自動化測試系統完成。在初次進行測試準備時,需要設計數據結構、匹配參數、測試腳本等,要完成從無到有的設計過程,花費時間較長,在此基礎上,后續更動的工作量會大幅度減少。測試準備工作完成后,由自動化測試系統自動完成測試,自動生成測試報告。相對于傳統人工測試,測試過程花費的時間大大縮短。因此,當數據管理系統軟件多次發生更動后進行回歸測試時,縮短的時間就更加明顯。此外,由于不存在人工誤判等因素,測試的有效性也明顯得到提升。

圖3 自動化測試流程Fig.3 Flow of automatic test
以某遙感衛星的數據管理系統軟件測試為例,經過實際測試對比,自動化測試系統在縮短測試時間方面具有明顯的優勢,見表2。自動化測試系統的腳本設計過程需要花費的時間較長,測試準備的時間比人工測試時間長,但測試實施時間遠遠短于人工測試時間,整體測試時間縮短40%。因此,自動化測試系統對于軟件多次更動后的回歸測試具有明顯的優勢,開發人員在完成軟件開發或者更動后,最多只要1天時間就能完成常規功能的測試,能更好地滿足航天器留給數據管理系統軟件更動及再交付的時間短的需求;由于不存在人工判讀疏忽導致測試不充分的問題,測試有效性大幅提升,有力地保證了航天器數據管理系統可靠性的提升。

表2 測試時間對比
針對航天器數據管理系統軟件測試存在的重復性測試多、測試周期長、回歸測試頻繁等不足,提出了自動化測試系統設計。自動化測試系統測試過程中不需要人工干預,且花費的時間大幅減少,能有效地提高測試效率,避免人工誤判帶來的測試不充分問題,提高測試有效性。測試過程中配置生成的航天器基礎數據為標準接口數據,可以用于整個航天器測試,有助于加快航天器測試進度。本文研究的自動化測試系統,其關鍵在于測試任務的抽象,目前還只是對一些常規功能的測試任務進行抽象,因此該系統目前可以完成一部分常規功能的測試,后續還要繼續深入研究其他功能的抽象以及測試的有效性。
References)
[1] 王向暉,李林.星載嵌入式軟件自動化測試技術研究[J].計算機測量與控制,2012,20(1):267-269
Wang Xianghui, Li Lin. Research of automatic testing technology of embedded software of satellites [J]. Computer Measurement & Control, 2012, 20(1): 267-269 (in Chinese)
[2] 譚維熾,胡金剛.航天器系統工程[M].北京:中國科學技術出版社,2009
Tan Weichi, Hu Jingang. Spacecraft systems engineering [M]. Beijing: China Science and Technology Press, 2009 (in Chinese)
[3] 曹袖,黃瀚,王雪平,等.軟件定義電網:概念、結構與示例[J].電力系統自動化,2016,40(6):1-9
Cao Xiu, Huang Han, Wang Xueping, et al. Software defined grid: concept, architecture and samples [J]. Automation of Electric Power Systems, 2016, 40(6): 1-9 (in Chinese)
[4] 王冀山,華更新.星載計算機軟件自動化測試平臺研究[J].航天器環境工程,2011,28(1):72-76
Wang Jishan, Hua Gengxin. An automatic test platform for software embedded in onboard computer [J]. Spacecraft Environment Engineering, 2011, 28(1): 72-76 (in Chinese)
[5] 夏佳佳,鄒毅軍,周江偉,等.嵌入式軟件自動化測試系統研究[J].計算機測量與控制,2016,24(4):22-25
Xia Jiajia, Zou Yijun, Zhou Jiangwei, et al. Research on automatic test platform for embedded software [J]. Computer Measurement & Control, 2016, 24(4): 22-25 (in Chinese)
[6] 潘莉,董振輝,張紅軍,等.CCSDS空間包在MOIMS領域中的應用[J].飛行器測控學報,2016,35(4):323-328
Pan Li, Dong Zhenhui, Zhang Hongjun, et al. Application of CCSDS space package in MOIMS [J]. Journal of Spacecraft TT&C Technology, 2016, 35(4): 323-328 (in Chinese)