梅磊 劉娜
(中國(guó)電子科技集團(tuán)公司38所,安徽合肥,230000)
文 摘:國(guó)內(nèi)軟件研發(fā)平臺(tái)的國(guó)產(chǎn)化趨勢(shì),使提高國(guó)產(chǎn)操作系統(tǒng)平臺(tái)下軟件的質(zhì)量已經(jīng)成為軟件測(cè)試領(lǐng)域所面臨問(wèn)題的重中之重。通過(guò)對(duì)中標(biāo)麒麟操作系統(tǒng) (Kylin)和銳華嵌入式實(shí)時(shí)操作系統(tǒng) (ReWorks)的發(fā)展現(xiàn)狀與使用特點(diǎn)的介紹,結(jié)合雷達(dá)實(shí)際人機(jī)軟件及數(shù)據(jù)處理軟件的開發(fā)環(huán)境,對(duì)基于國(guó)產(chǎn)操作系統(tǒng)的軟件測(cè)試方法進(jìn)行研究,分析測(cè)試結(jié)果,總結(jié)軟件測(cè)試方法設(shè)計(jì)、應(yīng)用及實(shí)踐的過(guò)程。
隨著網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展和移動(dòng)通信技術(shù)的日益普及,部隊(duì)裝備的信息、通信系統(tǒng)時(shí)刻面臨著前所未有的攻擊風(fēng)險(xiǎn)和安全挑戰(zhàn)。特別是近年來(lái),在國(guó)家大力支持下,軍隊(duì)大力發(fā)展信息化建設(shè),構(gòu)建現(xiàn)代化作戰(zhàn)體系,研發(fā)自主可控且擁有知識(shí)產(chǎn)權(quán)的安全、可靠、穩(wěn)定的信息化系統(tǒng)已經(jīng)被提升到了國(guó)家戰(zhàn)略高度[1]。
當(dāng)前,國(guó)防信息化系統(tǒng)的潛在威脅主要體現(xiàn)在:①無(wú)線通信網(wǎng)絡(luò)的開放性與終端安全防護(hù)手段的匱乏將為信息化系統(tǒng)帶來(lái)極大的安全漏洞;②大量裝備的應(yīng)用軟件在使用前并未經(jīng)過(guò)嚴(yán)格的軟件測(cè)評(píng),其軟件本身就隱藏著很多的缺陷;③操作系統(tǒng)的核心技術(shù)一直以來(lái)都被國(guó)外公司壟斷,在戰(zhàn)時(shí)可能帶來(lái)極大的安全隱患[2];④新型的網(wǎng)絡(luò)滲透性攻擊手段多、破壞性強(qiáng)、隱藏深,同樣對(duì)信息系統(tǒng)構(gòu)成巨大威脅。
此外,供應(yīng)鏈全球化也為信息系統(tǒng)的安全建設(shè)帶來(lái)了嚴(yán)峻的挑戰(zhàn),國(guó)產(chǎn)計(jì)算機(jī)系統(tǒng)的核心硬件基本依賴于外部進(jìn)口,操作系統(tǒng)、數(shù)據(jù)庫(kù)、硬件芯片等專利技術(shù),均被歐美發(fā)達(dá)國(guó)家所壟斷[1]。這些產(chǎn)品由于不具有自主可控性,極有可能被預(yù)置后門或漏洞,同時(shí),此類設(shè)備或系統(tǒng)的維護(hù)更新費(fèi)用高昂,導(dǎo)致長(zhǎng)期使用成本居高不下。在最近爆發(fā)的中美貿(mào)易戰(zhàn)中,核心芯片之爭(zhēng)帶來(lái)的高額罰款等一系列慘痛教訓(xùn)更是給所有人都敲響了警鐘,沒(méi)有核心技術(shù),就要受制于人。
通常,裝備信息系統(tǒng)的安全防護(hù)都體現(xiàn)在網(wǎng)絡(luò)層或數(shù)據(jù)層,而無(wú)法從根源進(jìn)行保護(hù)。因此,為了提高設(shè)備的安全等級(jí),近年來(lái)在國(guó)內(nèi)開始推廣使用國(guó)產(chǎn)操作系統(tǒng)及相關(guān)應(yīng)用程序,這類安全的操作系統(tǒng)具有以下幾個(gè)特征。
a)最小特權(quán)原則,即每個(gè)特權(quán)用戶都只能進(jìn)行權(quán)力范圍內(nèi)的操作。
b)自主訪問(wèn)控制,即每個(gè)屬主都有權(quán)決定是否授予自己客體訪問(wèn)權(quán)或部分訪問(wèn)權(quán)。
c)強(qiáng)制訪問(wèn)控制,包括保密性和完整性訪問(wèn)控制。
d)網(wǎng)絡(luò)安全審計(jì),指利用記錄、系統(tǒng)活動(dòng)和用戶活動(dòng)等信息,檢查、審查和檢驗(yàn)操作事件的環(huán)境及活動(dòng),從而發(fā)現(xiàn)系統(tǒng)漏洞、入侵行為或改善系統(tǒng)性能的過(guò)程。
e)安全域隔離,通過(guò)安全域劃分,限制進(jìn)程對(duì)資源的訪問(wèn),從而嚴(yán)格控制惡意攻擊對(duì)操作系統(tǒng)的影響。
由于操作系統(tǒng)是所有軟件運(yùn)行環(huán)境的基礎(chǔ)條件,對(duì)設(shè)備的穩(wěn)定運(yùn)行起著關(guān)鍵作用。同時(shí),隨著國(guó)家對(duì)核心高科技基礎(chǔ)研究的大力支持和建設(shè),國(guó)產(chǎn)操作系統(tǒng)的安全性、性能及穩(wěn)定性也愈發(fā)完善。因此,現(xiàn)在越來(lái)越多的裝備開始優(yōu)先使用國(guó)產(chǎn)操作系統(tǒng)及相關(guān)工具鏈來(lái)進(jìn)行軟件的研發(fā)工作,其中,最具代表性的就是中標(biāo)麒麟(Kylin)操作系統(tǒng)和銳華 (ReWorks)嵌入式實(shí)時(shí)操作系統(tǒng)[3]。
麒麟操作系統(tǒng)和銳華嵌入式實(shí)時(shí)操作系統(tǒng)具有易使用、跨平臺(tái)、低成本等特點(diǎn),最主要的是自主可控,它們可以取代多年來(lái)被國(guó)外企業(yè)壟斷的同類產(chǎn)品,如微軟公司W(wǎng)indows、風(fēng)河公司VxWorks以及開源的Linux等操作系統(tǒng)。雖然國(guó)產(chǎn)操作系統(tǒng)在裝備研發(fā)過(guò)程中日益普及,但基于這兩個(gè)系統(tǒng)的裝備軟件系統(tǒng)測(cè)試的研究工作仍處于起步階段。
麒麟操作系統(tǒng)是國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院自上世紀(jì)80年代以來(lái)圍繞 “銀河”高性能計(jì)算機(jī)開發(fā)出來(lái)的操作系統(tǒng)[4]。該操作系統(tǒng)是國(guó)內(nèi)目前安全級(jí)別最高的操作系統(tǒng),同時(shí)通過(guò)了公安部計(jì)算機(jī)信息系統(tǒng)安全產(chǎn)品質(zhì)量檢測(cè)檢查中心的安全認(rèn)證和中國(guó)人民解放軍信息安全測(cè)評(píng)中心軍用B+級(jí)別安全認(rèn)證,并且產(chǎn)品符合GB/T20272—2006《信息安全技術(shù)操作系統(tǒng)安全技術(shù)要求》中相關(guān)條款的要求[5]。麒麟操作系統(tǒng)已經(jīng)逐步應(yīng)用于政府、國(guó)防、金融、證券、電力、電子商務(wù)等眾多行業(yè),提供安全、可控、穩(wěn)定的關(guān)鍵應(yīng)用需求。麒麟操作系統(tǒng)的結(jié)構(gòu)如圖1所示。
麒麟操作系統(tǒng)的基礎(chǔ)工具環(huán)境基于Linux開發(fā),采用X-Window作為系統(tǒng)的基本圖形環(huán)境,支持Gnome或KDE桌面環(huán)境,支持B/S架構(gòu)的圖形化管理工具。麒麟操作系統(tǒng)的開發(fā)語(yǔ)言通常采用C++/QT,作為一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架,支持面向?qū)ο笳Z(yǔ)言編程,易擴(kuò)展的同時(shí)允許組件化編程,同時(shí),QT提供的IDE開發(fā)工具又極大程度提高了開發(fā)效率,而強(qiáng)大的跨平臺(tái)能力,也讓軟件具有很強(qiáng)的系統(tǒng)兼容性。
圖1 麒麟操作系統(tǒng)結(jié)構(gòu)圖
ReWorks操作系統(tǒng)是中國(guó)電子科技集團(tuán)公司32所自主研制的嵌入式實(shí)時(shí)操作系統(tǒng),在國(guó)內(nèi)要求國(guó)防產(chǎn)品自主可控的大環(huán)境下,已經(jīng)在軟件的開發(fā)研制中得到了大量推廣和應(yīng)用,其組件能夠自由構(gòu)建,同時(shí)兼容風(fēng)河公司的VxWorks產(chǎn)品,提供的可視化開發(fā)界面,也使得其開發(fā)難度大大降低[5]。ReWorks體系結(jié)構(gòu)如圖 2所示。ReWorks嵌入式實(shí)時(shí)操作系統(tǒng)的特點(diǎn)具體表述見表1。
圖2 ReWorks操作系統(tǒng)結(jié)構(gòu)圖
表1 ReWorks嵌入式實(shí)時(shí)操作系統(tǒng)的特點(diǎn)
軟件測(cè)試是指用來(lái)促進(jìn)鑒定軟件的正確性、完整性、安全性和質(zhì)量的過(guò)程。簡(jiǎn)而言之,軟件測(cè)試的目的是:為在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估。按照目前軟件的開發(fā)模式,當(dāng)前軟件的測(cè)試流程仍主要沿用傳統(tǒng)型的系統(tǒng)測(cè)試模型,強(qiáng)調(diào)對(duì)整個(gè)軟件功能實(shí)現(xiàn)的控制與覆蓋,并對(duì)每個(gè)階段產(chǎn)生的測(cè)試產(chǎn)品進(jìn)行評(píng)審來(lái)實(shí)現(xiàn)對(duì)測(cè)試產(chǎn)品質(zhì)量的監(jiān)控與審核。根據(jù)測(cè)試需求、類型和每個(gè)測(cè)試項(xiàng)的充分性要求,設(shè)計(jì)和編寫測(cè)試用例,通常要求覆蓋各種測(cè)試類型,包括功能測(cè)試、性能測(cè)試、接口測(cè)試、人機(jī)交互界面測(cè)試、安全性測(cè)試等。同時(shí),對(duì)于發(fā)現(xiàn)的缺陷要及時(shí)整理問(wèn)題報(bào)告,并協(xié)助開發(fā)人員完成軟件版本的改進(jìn)和升級(jí)。
整個(gè)軟件的測(cè)試流程通常經(jīng)歷5個(gè)階段:測(cè)試需求分析、測(cè)試策劃、測(cè)試設(shè)計(jì)與實(shí)現(xiàn)、測(cè)試執(zhí)行和測(cè)試總結(jié)[6](圖3第二行的結(jié)構(gòu)中描述5個(gè)階段需要完成的工作)。測(cè)試流程圖如圖3所示。
圖3 傳統(tǒng)型系統(tǒng)測(cè)試流程圖
作為國(guó)產(chǎn)操作系統(tǒng)的測(cè)試方法,與使用Windows、VxWorks等國(guó)外開發(fā)環(huán)境的區(qū)別主要體現(xiàn)在測(cè)試執(zhí)行階段,由于開發(fā)環(huán)境的改變,需要針對(duì)國(guó)產(chǎn)操作系統(tǒng)搭建具有不同適應(yīng)性的測(cè)試環(huán)境,包括靜態(tài)分析、動(dòng)態(tài)執(zhí)行的測(cè)試環(huán)境等。同時(shí),根據(jù)不用的測(cè)試類型,選用不同的測(cè)試方法進(jìn)行驗(yàn)證。
麒麟操作系統(tǒng)是目前國(guó)內(nèi)安全級(jí)別最高的操作系統(tǒng),可以為軟件提供更加安全、可靠的運(yùn)行環(huán)境[5]?;邝梓氩僮飨到y(tǒng)的靜態(tài)分析測(cè)試環(huán)境見表2。
表2 基于麒麟操作系統(tǒng)平臺(tái)的靜態(tài)分析測(cè)試環(huán)境
由于麒麟操作系統(tǒng)基于Unix內(nèi)核,與Windows系統(tǒng)下使用Klocwork進(jìn)行靜態(tài)分析的過(guò)程會(huì)有差異。為了能夠縮減配置的步驟,提高靜態(tài)分析的效率,利用系統(tǒng)提供的命令行指令編寫自動(dòng)靜態(tài)分析腳本[6],同時(shí)還允許開發(fā)人員驗(yàn)證源代碼的質(zhì)量之前向服務(wù)器提交源代碼進(jìn)行管理控制[7]。
在使用過(guò)程中特別要注意的是,在QT開發(fā)環(huán)境中需要將被測(cè)軟件參數(shù)中的項(xiàng)目名稱和路徑修改為被測(cè)軟件對(duì)應(yīng)的項(xiàng)目信息,而且需要對(duì)被測(cè)軟件項(xiàng)目進(jìn)行重新編譯,編譯通過(guò)后才能繼續(xù)使用Klocwork進(jìn)行靜態(tài)分析。若為初次使用,必須要設(shè)置Klocwork的安裝參數(shù),而且項(xiàng)目名稱、路徑均不能使用中文。腳本自動(dòng)執(zhí)行,完成后會(huì)將靜態(tài)分析結(jié)果自動(dòng)上傳至測(cè)試數(shù)據(jù)服務(wù)器以供測(cè)試人員使用。
對(duì)于麒麟操作系統(tǒng)下的動(dòng)態(tài)執(zhí)行過(guò)程,根據(jù)人機(jī)界面應(yīng)用軟件Pro_1的需求規(guī)格說(shuō)明內(nèi)容進(jìn)行需求分析,按照其功能、性能以及接口要求,設(shè)計(jì)測(cè)試項(xiàng)與測(cè)試用例,每個(gè)測(cè)試用例都有唯一的名稱與標(biāo)識(shí),同時(shí)針對(duì)不同的功能對(duì)前提條件、初始條件以及終止條件進(jìn)行約束。搭建測(cè)試環(huán)境時(shí),首先確保麒麟操作系統(tǒng)以及被測(cè)軟件的版本與實(shí)裝環(huán)境的一致性;然后,按照測(cè)試設(shè)計(jì)要求,將所有陪測(cè)設(shè)備與陪測(cè)軟件通過(guò)網(wǎng)絡(luò)在局域網(wǎng)中進(jìn)行連接,測(cè)試通路后,才能進(jìn)行測(cè)試執(zhí)行工作。測(cè)試人員按照用戶手冊(cè)的要求設(shè)計(jì)測(cè)試步驟,記錄每個(gè)步驟的輸入、輸出數(shù)據(jù)以及每個(gè)用例的執(zhí)行結(jié)果,并與評(píng)估準(zhǔn)則進(jìn)行比對(duì)。若測(cè)試結(jié)果通過(guò),則表示被測(cè)功能正常;若失敗,則記錄失敗時(shí)軟件的狀態(tài)與特征,同時(shí)詳細(xì)記錄問(wèn)題發(fā)生的過(guò)程、影響因素以及初始條件,由監(jiān)測(cè)人員核實(shí)并復(fù)現(xiàn)后,提交開發(fā)人員進(jìn)行修改,修改后再回歸測(cè)試中設(shè)計(jì)用例進(jìn)行驗(yàn)證。整個(gè)執(zhí)行過(guò)程嚴(yán)格受控,確保軟件測(cè)試行為的有效性和獨(dú)立性[8]。
麒麟操作系統(tǒng)下,測(cè)試執(zhí)行流程如圖4所示。
被測(cè)軟件Pro_1的測(cè)試用例類型統(tǒng)計(jì)見表3。
圖4 麒麟操作系統(tǒng)測(cè)試執(zhí)行流程圖
表3 Pro_1測(cè)試用例統(tǒng)計(jì)表
ReWorks嵌入式實(shí)時(shí)集成開發(fā)環(huán)境 (ReDe)以Eclipse開發(fā)體系結(jié)構(gòu)為基礎(chǔ)[9],結(jié)合嵌入式軟件開發(fā)工具鏈,同時(shí)選用國(guó)產(chǎn)龍芯3A處理平臺(tái),確保數(shù)據(jù)處理性能指標(biāo)完成的同時(shí),確保數(shù)據(jù)通信的安全可控[10]。基于ReWorks操作系統(tǒng)的靜態(tài)分析測(cè)試環(huán)境見表4。
表4 基于ReWorks平臺(tái)的靜態(tài)分析測(cè)試環(huán)境
在ReWorks的IDE開發(fā)環(huán)境中對(duì)代碼進(jìn)行靜態(tài)分析時(shí),首先需要重新構(gòu)建項(xiàng)目,清理刪除軟件工程目錄中的所有臨時(shí)文件,然后在ReDe控制臺(tái)中對(duì)項(xiàng)目工程文件使用gnu_make進(jìn)行統(tǒng)一編譯。Klocwork的分析及編譯過(guò)程見表5。
表5 Klocwork的分析及編譯過(guò)程
在ReWorks操作系統(tǒng)下的動(dòng)態(tài)執(zhí)行過(guò)程,由于軟件Pro_2不具備人機(jī)交互界面,因此從需求規(guī)格說(shuō)明中分析提取得到的軟件測(cè)試需求主要涉及功能、接口、性能、數(shù)據(jù)處理以及安全性等測(cè)試內(nèi)容[7]。具體的測(cè)試過(guò)程與麒麟操作系統(tǒng)下動(dòng)態(tài)測(cè)試執(zhí)行的過(guò)程類似,最大的區(qū)別在于測(cè)試環(huán)境的搭建。由于嵌入式軟件通常運(yùn)行在數(shù)據(jù)處理板卡或服務(wù)器上,需要通過(guò)光纖、網(wǎng)絡(luò)或串口等方式進(jìn)行通信,為了保證通信速率以及系統(tǒng)運(yùn)行的穩(wěn)定性,通常采用實(shí)裝環(huán)境進(jìn)行測(cè)試,再輔助網(wǎng)絡(luò)或串口接口仿真軟件進(jìn)行數(shù)據(jù)的收發(fā)仿真。其中,被測(cè)軟件Pro_2所設(shè)計(jì)的測(cè)試用例見表6。
表6 Pro_2測(cè)試用例統(tǒng)計(jì)表
我們結(jié)合雷達(dá)實(shí)際人機(jī)軟件及數(shù)據(jù)處理軟件的開發(fā)環(huán)境,在為期2個(gè)月的工作周期里,搭建了2套國(guó)產(chǎn)操作系統(tǒng)的實(shí)裝測(cè)試環(huán)境,并對(duì)軟件項(xiàng)目Pro_1及Pro_2分別進(jìn)行了靜態(tài)分析和動(dòng)態(tài)測(cè)試執(zhí)行工作。經(jīng)過(guò)靜態(tài)分析測(cè)試后,測(cè)試的結(jié)果和缺陷統(tǒng)計(jì)情況見表7。
表7 項(xiàng)目Pro_1、Pro_2靜態(tài)分析測(cè)試情況統(tǒng)計(jì)
由表7可見,使用Klocwork靜態(tài)分析工具發(fā)現(xiàn)的軟件靜態(tài)分析缺陷主要涉及控制流、數(shù)據(jù)流及表達(dá)式分析等類型,反映出軟件需要改進(jìn)提高的地方。特別對(duì)于嚴(yán)重等級(jí)的缺陷,還會(huì)要求開發(fā)人員給出影響域分析和缺陷分析,以確認(rèn)嚴(yán)重缺陷帶來(lái)的不確定因素是否會(huì)對(duì)軟件的運(yùn)行造成不可挽回的損失。測(cè)試人員會(huì)根據(jù)代碼的修改情況進(jìn)行代碼一致性比對(duì)來(lái)確認(rèn)代碼的修改情況,從而達(dá)到對(duì)軟件版本和質(zhì)量的監(jiān)督與管理,極大提高被測(cè)軟件的規(guī)范性和可靠性的目的。
項(xiàng)目Pro_1、Pro_2的動(dòng)態(tài)測(cè)試執(zhí)行結(jié)果統(tǒng)計(jì)情況見表8和表9。
表8 項(xiàng)目Pro_1動(dòng)態(tài)測(cè)試情況統(tǒng)計(jì)表
表9 項(xiàng)目Pro_2動(dòng)態(tài)測(cè)試情況統(tǒng)計(jì)表
由測(cè)試結(jié)果可以得出,麒麟操作系統(tǒng)下的項(xiàng)目Pro_1和ReWorks操作系統(tǒng)下的項(xiàng)目Pro_2的缺陷主要集中在文檔缺陷和代碼缺陷。對(duì)具體的缺陷內(nèi)容進(jìn)行分析可以得出以下結(jié)論。
a)文檔缺陷主要是體現(xiàn)為需求設(shè)計(jì)與代碼實(shí)現(xiàn)的不一致,或是需求描述錯(cuò)誤,與代碼的實(shí)際運(yùn)行情況不符。這類缺陷的嚴(yán)重等級(jí)通常為一般,對(duì)軟件運(yùn)行不會(huì)造成嚴(yán)重影響,通過(guò)修改相應(yīng)需求或設(shè)計(jì)文檔達(dá)到關(guān)閉缺陷的目的。
b)代碼缺陷,則是在代碼實(shí)現(xiàn)過(guò)程中由于對(duì)功能實(shí)現(xiàn)方式的不明確,未能滿足性能指標(biāo)要求或是由于開發(fā)人員個(gè)人因素導(dǎo)致的編碼錯(cuò)誤,此類缺陷往往會(huì)帶來(lái)較嚴(yán)重甚至致命的后果,因此缺陷必須要通過(guò)修改代碼或重新進(jìn)行功能模塊的設(shè)計(jì)與實(shí)現(xiàn),才能完成缺陷的閉環(huán)。
通過(guò)動(dòng)態(tài)測(cè)試執(zhí)行之后,往往能夠發(fā)現(xiàn)軟件更深層次、更具有隱藏性的缺陷,而這也是國(guó)產(chǎn)操作系統(tǒng)下,軍隊(duì)裝備軟件測(cè)試工作的實(shí)際意義所在。
在當(dāng)前軟件迫切的安全性測(cè)試需求下,基于國(guó)產(chǎn)操作系統(tǒng)的軟件測(cè)試也愈發(fā)顯得重要。隨著國(guó)產(chǎn)化進(jìn)程的推進(jìn)和國(guó)家安全形勢(shì)的日益嚴(yán)峻,特別是現(xiàn)代裝備的研制與使用需要大量應(yīng)用組網(wǎng)通信、無(wú)線聯(lián)網(wǎng)控制等技術(shù)手段,而面向服務(wù)的體系架構(gòu)又極容易為外部攻擊創(chuàng)造條件。當(dāng)前基于國(guó)產(chǎn)操作系統(tǒng)的軟件測(cè)試方法研究仍處于起步階段,發(fā)現(xiàn)的缺陷主要集中在常規(guī)傳統(tǒng)的問(wèn)題類型,而面對(duì)新型網(wǎng)絡(luò)的滲透性壓力攻擊時(shí),仍顯得捉襟見肘。只有國(guó)產(chǎn)操作系統(tǒng)下軟件測(cè)試方法的日益完善,才能從系統(tǒng)體系的安全層面真正有效抵制各類安全性滲透和病毒及木馬程序的入侵。