梅磊 劉娜
(中國電子科技集團公司38所,安徽合肥,230000)
文 摘:國內軟件研發平臺的國產化趨勢,使提高國產操作系統平臺下軟件的質量已經成為軟件測試領域所面臨問題的重中之重。通過對中標麒麟操作系統 (Kylin)和銳華嵌入式實時操作系統 (ReWorks)的發展現狀與使用特點的介紹,結合雷達實際人機軟件及數據處理軟件的開發環境,對基于國產操作系統的軟件測試方法進行研究,分析測試結果,總結軟件測試方法設計、應用及實踐的過程。
隨著網絡技術的迅猛發展和移動通信技術的日益普及,部隊裝備的信息、通信系統時刻面臨著前所未有的攻擊風險和安全挑戰。特別是近年來,在國家大力支持下,軍隊大力發展信息化建設,構建現代化作戰體系,研發自主可控且擁有知識產權的安全、可靠、穩定的信息化系統已經被提升到了國家戰略高度[1]。
當前,國防信息化系統的潛在威脅主要體現在:①無線通信網絡的開放性與終端安全防護手段的匱乏將為信息化系統帶來極大的安全漏洞;②大量裝備的應用軟件在使用前并未經過嚴格的軟件測評,其軟件本身就隱藏著很多的缺陷;③操作系統的核心技術一直以來都被國外公司壟斷,在戰時可能帶來極大的安全隱患[2];④新型的網絡滲透性攻擊手段多、破壞性強、隱藏深,同樣對信息系統構成巨大威脅。
此外,供應鏈全球化也為信息系統的安全建設帶來了嚴峻的挑戰,國產計算機系統的核心硬件基本依賴于外部進口,操作系統、數據庫、硬件芯片等專利技術,均被歐美發達國家所壟斷[1]。這些產品由于不具有自主可控性,極有可能被預置后門或漏洞,同時,此類設備或系統的維護更新費用高昂,導致長期使用成本居高不下。在最近爆發的中美貿易戰中,核心芯片之爭帶來的高額罰款等一系列慘痛教訓更是給所有人都敲響了警鐘,沒有核心技術,就要受制于人。
通常,裝備信息系統的安全防護都體現在網絡層或數據層,而無法從根源進行保護。因此,為了提高設備的安全等級,近年來在國內開始推廣使用國產操作系統及相關應用程序,這類安全的操作系統具有以下幾個特征。
a)最小特權原則,即每個特權用戶都只能進行權力范圍內的操作。
b)自主訪問控制,即每個屬主都有權決定是否授予自己客體訪問權或部分訪問權。
c)強制訪問控制,包括保密性和完整性訪問控制。
d)網絡安全審計,指利用記錄、系統活動和用戶活動等信息,檢查、審查和檢驗操作事件的環境及活動,從而發現系統漏洞、入侵行為或改善系統性能的過程。
e)安全域隔離,通過安全域劃分,限制進程對資源的訪問,從而嚴格控制惡意攻擊對操作系統的影響。
由于操作系統是所有軟件運行環境的基礎條件,對設備的穩定運行起著關鍵作用。同時,隨著國家對核心高科技基礎研究的大力支持和建設,國產操作系統的安全性、性能及穩定性也愈發完善。因此,現在越來越多的裝備開始優先使用國產操作系統及相關工具鏈來進行軟件的研發工作,其中,最具代表性的就是中標麒麟(Kylin)操作系統和銳華 (ReWorks)嵌入式實時操作系統[3]。
麒麟操作系統和銳華嵌入式實時操作系統具有易使用、跨平臺、低成本等特點,最主要的是自主可控,它們可以取代多年來被國外企業壟斷的同類產品,如微軟公司Windows、風河公司VxWorks以及開源的Linux等操作系統。雖然國產操作系統在裝備研發過程中日益普及,但基于這兩個系統的裝備軟件系統測試的研究工作仍處于起步階段。
麒麟操作系統是國防科技大學計算機學院自上世紀80年代以來圍繞 “銀河”高性能計算機開發出來的操作系統[4]。該操作系統是國內目前安全級別最高的操作系統,同時通過了公安部計算機信息系統安全產品質量檢測檢查中心的安全認證和中國人民解放軍信息安全測評中心軍用B+級別安全認證,并且產品符合GB/T20272—2006《信息安全技術操作系統安全技術要求》中相關條款的要求[5]。麒麟操作系統已經逐步應用于政府、國防、金融、證券、電力、電子商務等眾多行業,提供安全、可控、穩定的關鍵應用需求。麒麟操作系統的結構如圖1所示。
麒麟操作系統的基礎工具環境基于Linux開發,采用X-Window作為系統的基本圖形環境,支持Gnome或KDE桌面環境,支持B/S架構的圖形化管理工具。麒麟操作系統的開發語言通常采用C++/QT,作為一個跨平臺的C++圖形用戶界面應用程序框架,支持面向對象語言編程,易擴展的同時允許組件化編程,同時,QT提供的IDE開發工具又極大程度提高了開發效率,而強大的跨平臺能力,也讓軟件具有很強的系統兼容性。

圖1 麒麟操作系統結構圖
ReWorks操作系統是中國電子科技集團公司32所自主研制的嵌入式實時操作系統,在國內要求國防產品自主可控的大環境下,已經在軟件的開發研制中得到了大量推廣和應用,其組件能夠自由構建,同時兼容風河公司的VxWorks產品,提供的可視化開發界面,也使得其開發難度大大降低[5]。ReWorks體系結構如圖 2所示。ReWorks嵌入式實時操作系統的特點具體表述見表1。

圖2 ReWorks操作系統結構圖

表1 ReWorks嵌入式實時操作系統的特點
軟件測試是指用來促進鑒定軟件的正確性、完整性、安全性和質量的過程。簡而言之,軟件測試的目的是:為在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟件質量,并對其是否能滿足設計要求進行評估。按照目前軟件的開發模式,當前軟件的測試流程仍主要沿用傳統型的系統測試模型,強調對整個軟件功能實現的控制與覆蓋,并對每個階段產生的測試產品進行評審來實現對測試產品質量的監控與審核。根據測試需求、類型和每個測試項的充分性要求,設計和編寫測試用例,通常要求覆蓋各種測試類型,包括功能測試、性能測試、接口測試、人機交互界面測試、安全性測試等。同時,對于發現的缺陷要及時整理問題報告,并協助開發人員完成軟件版本的改進和升級。
整個軟件的測試流程通常經歷5個階段:測試需求分析、測試策劃、測試設計與實現、測試執行和測試總結[6](圖3第二行的結構中描述5個階段需要完成的工作)。測試流程圖如圖3所示。

圖3 傳統型系統測試流程圖
作為國產操作系統的測試方法,與使用Windows、VxWorks等國外開發環境的區別主要體現在測試執行階段,由于開發環境的改變,需要針對國產操作系統搭建具有不同適應性的測試環境,包括靜態分析、動態執行的測試環境等。同時,根據不用的測試類型,選用不同的測試方法進行驗證。
麒麟操作系統是目前國內安全級別最高的操作系統,可以為軟件提供更加安全、可靠的運行環境[5]。基于麒麟操作系統的靜態分析測試環境見表2。

表2 基于麒麟操作系統平臺的靜態分析測試環境
由于麒麟操作系統基于Unix內核,與Windows系統下使用Klocwork進行靜態分析的過程會有差異。為了能夠縮減配置的步驟,提高靜態分析的效率,利用系統提供的命令行指令編寫自動靜態分析腳本[6],同時還允許開發人員驗證源代碼的質量之前向服務器提交源代碼進行管理控制[7]。
在使用過程中特別要注意的是,在QT開發環境中需要將被測軟件參數中的項目名稱和路徑修改為被測軟件對應的項目信息,而且需要對被測軟件項目進行重新編譯,編譯通過后才能繼續使用Klocwork進行靜態分析。若為初次使用,必須要設置Klocwork的安裝參數,而且項目名稱、路徑均不能使用中文。腳本自動執行,完成后會將靜態分析結果自動上傳至測試數據服務器以供測試人員使用。
對于麒麟操作系統下的動態執行過程,根據人機界面應用軟件Pro_1的需求規格說明內容進行需求分析,按照其功能、性能以及接口要求,設計測試項與測試用例,每個測試用例都有唯一的名稱與標識,同時針對不同的功能對前提條件、初始條件以及終止條件進行約束。搭建測試環境時,首先確保麒麟操作系統以及被測軟件的版本與實裝環境的一致性;然后,按照測試設計要求,將所有陪測設備與陪測軟件通過網絡在局域網中進行連接,測試通路后,才能進行測試執行工作。測試人員按照用戶手冊的要求設計測試步驟,記錄每個步驟的輸入、輸出數據以及每個用例的執行結果,并與評估準則進行比對。若測試結果通過,則表示被測功能正常;若失敗,則記錄失敗時軟件的狀態與特征,同時詳細記錄問題發生的過程、影響因素以及初始條件,由監測人員核實并復現后,提交開發人員進行修改,修改后再回歸測試中設計用例進行驗證。整個執行過程嚴格受控,確保軟件測試行為的有效性和獨立性[8]。
麒麟操作系統下,測試執行流程如圖4所示。
被測軟件Pro_1的測試用例類型統計見表3。

圖4 麒麟操作系統測試執行流程圖

表3 Pro_1測試用例統計表
ReWorks嵌入式實時集成開發環境 (ReDe)以Eclipse開發體系結構為基礎[9],結合嵌入式軟件開發工具鏈,同時選用國產龍芯3A處理平臺,確保數據處理性能指標完成的同時,確保數據通信的安全可控[10]。基于ReWorks操作系統的靜態分析測試環境見表4。

表4 基于ReWorks平臺的靜態分析測試環境
在ReWorks的IDE開發環境中對代碼進行靜態分析時,首先需要重新構建項目,清理刪除軟件工程目錄中的所有臨時文件,然后在ReDe控制臺中對項目工程文件使用gnu_make進行統一編譯。Klocwork的分析及編譯過程見表5。

表5 Klocwork的分析及編譯過程
在ReWorks操作系統下的動態執行過程,由于軟件Pro_2不具備人機交互界面,因此從需求規格說明中分析提取得到的軟件測試需求主要涉及功能、接口、性能、數據處理以及安全性等測試內容[7]。具體的測試過程與麒麟操作系統下動態測試執行的過程類似,最大的區別在于測試環境的搭建。由于嵌入式軟件通常運行在數據處理板卡或服務器上,需要通過光纖、網絡或串口等方式進行通信,為了保證通信速率以及系統運行的穩定性,通常采用實裝環境進行測試,再輔助網絡或串口接口仿真軟件進行數據的收發仿真。其中,被測軟件Pro_2所設計的測試用例見表6。

表6 Pro_2測試用例統計表
我們結合雷達實際人機軟件及數據處理軟件的開發環境,在為期2個月的工作周期里,搭建了2套國產操作系統的實裝測試環境,并對軟件項目Pro_1及Pro_2分別進行了靜態分析和動態測試執行工作。經過靜態分析測試后,測試的結果和缺陷統計情況見表7。

表7 項目Pro_1、Pro_2靜態分析測試情況統計
由表7可見,使用Klocwork靜態分析工具發現的軟件靜態分析缺陷主要涉及控制流、數據流及表達式分析等類型,反映出軟件需要改進提高的地方。特別對于嚴重等級的缺陷,還會要求開發人員給出影響域分析和缺陷分析,以確認嚴重缺陷帶來的不確定因素是否會對軟件的運行造成不可挽回的損失。測試人員會根據代碼的修改情況進行代碼一致性比對來確認代碼的修改情況,從而達到對軟件版本和質量的監督與管理,極大提高被測軟件的規范性和可靠性的目的。
項目Pro_1、Pro_2的動態測試執行結果統計情況見表8和表9。

表8 項目Pro_1動態測試情況統計表

表9 項目Pro_2動態測試情況統計表
由測試結果可以得出,麒麟操作系統下的項目Pro_1和ReWorks操作系統下的項目Pro_2的缺陷主要集中在文檔缺陷和代碼缺陷。對具體的缺陷內容進行分析可以得出以下結論。
a)文檔缺陷主要是體現為需求設計與代碼實現的不一致,或是需求描述錯誤,與代碼的實際運行情況不符。這類缺陷的嚴重等級通常為一般,對軟件運行不會造成嚴重影響,通過修改相應需求或設計文檔達到關閉缺陷的目的。
b)代碼缺陷,則是在代碼實現過程中由于對功能實現方式的不明確,未能滿足性能指標要求或是由于開發人員個人因素導致的編碼錯誤,此類缺陷往往會帶來較嚴重甚至致命的后果,因此缺陷必須要通過修改代碼或重新進行功能模塊的設計與實現,才能完成缺陷的閉環。
通過動態測試執行之后,往往能夠發現軟件更深層次、更具有隱藏性的缺陷,而這也是國產操作系統下,軍隊裝備軟件測試工作的實際意義所在。
在當前軟件迫切的安全性測試需求下,基于國產操作系統的軟件測試也愈發顯得重要。隨著國產化進程的推進和國家安全形勢的日益嚴峻,特別是現代裝備的研制與使用需要大量應用組網通信、無線聯網控制等技術手段,而面向服務的體系架構又極容易為外部攻擊創造條件。當前基于國產操作系統的軟件測試方法研究仍處于起步階段,發現的缺陷主要集中在常規傳統的問題類型,而面對新型網絡的滲透性壓力攻擊時,仍顯得捉襟見肘。只有國產操作系統下軟件測試方法的日益完善,才能從系統體系的安全層面真正有效抵制各類安全性滲透和病毒及木馬程序的入侵。