劉 捷,張維利
(電子科學(xué)研究院 軟件室,北京 100041)
近年來(lái),軟件規(guī)模不斷擴(kuò)大,復(fù)雜度不斷增加,軟件質(zhì)量和可靠性備受?chē)?guó)內(nèi)外學(xué)者關(guān)注[1]。目前,軟件測(cè)試技術(shù)是保證軟件質(zhì)量的最直接、最有效的手段。但是對(duì)于一些航天控制軟件、大型武器裝備軟件等安全苛刻軟件,由于其代碼量通常為百萬(wàn)行數(shù)量級(jí),系統(tǒng)功能非常復(fù)雜,因此測(cè)試用例數(shù)量龐大,只依靠人工測(cè)試會(huì)耗費(fèi)太多的人力和物力。因此,迫切需要引入自動(dòng)化測(cè)試技術(shù),提高測(cè)試效率,縮短回歸測(cè)試時(shí)間。
大型安全苛刻軟件一般具有兩個(gè)方面的特性:分布式與異質(zhì)異構(gòu)。首先,安全苛刻軟件面對(duì)復(fù)雜的裝備型號(hào)任務(wù),需要綜合多個(gè)功能子系統(tǒng)形成分布式系統(tǒng)結(jié)構(gòu),各子系統(tǒng)間通過(guò)有線、無(wú)線網(wǎng)絡(luò)互聯(lián),依靠統(tǒng)一的報(bào)文格式實(shí)現(xiàn)信息互通。其次,由于各子系統(tǒng)實(shí)現(xiàn)目標(biāo)功能不同,因此,子系統(tǒng)內(nèi)部組織形式多樣,從硬件平臺(tái)方面,可以基于X86、PowerPC或者Spark等不同處理器或板卡結(jié)構(gòu),從軟件平臺(tái)而言,又常見(jiàn)構(gòu)造于Windows和Linux之上。本文依據(jù)某安全苛刻軟件,對(duì)軟件功能加以抽象與提升,給出面向分布式安全苛刻軟件的自動(dòng)化測(cè)試系統(tǒng)的設(shè)計(jì)依據(jù)、工作流程與體系結(jié)構(gòu)。
安全苛刻軟件研發(fā)周期長(zhǎng)且功能模塊構(gòu)成復(fù)雜,因此,面向其的自動(dòng)化測(cè)試系統(tǒng)設(shè)計(jì)應(yīng)注重兩個(gè)基本方面[2]:
1)設(shè)計(jì)能夠反映某安全苛刻系統(tǒng)測(cè)試領(lǐng)域需求的測(cè)試流程,對(duì)測(cè)試流程的各個(gè)環(huán)節(jié)進(jìn)行分析,將其設(shè)計(jì)成自動(dòng)化執(zhí)行的軟件過(guò)程,并通過(guò)過(guò)程的組合實(shí)現(xiàn)某安全苛刻系統(tǒng)的自動(dòng)化測(cè)試。
2)自動(dòng)化測(cè)試系統(tǒng)具備良好的可擴(kuò)展性和可維護(hù)性??紤]到某安全苛刻軟件的復(fù)雜性以及擴(kuò)展應(yīng)用到其他相關(guān)系統(tǒng)中,自動(dòng)化測(cè)試系統(tǒng)設(shè)計(jì)必須具備一定的可擴(kuò)展性以靈活應(yīng)對(duì)業(yè)務(wù)邏輯的變化。
基于上述目標(biāo),可以歸納出如下四條基本設(shè)計(jì)思想:
1)模塊化和層次化設(shè)計(jì)思想相結(jié)合
軟件系統(tǒng)的發(fā)展實(shí)踐證明,模塊化的分層設(shè)計(jì)[4]是提高系統(tǒng)可用性、可擴(kuò)展性和可維護(hù)性的主要途徑。分層模型設(shè)計(jì)將軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的層次進(jìn)行描述,各層之間通過(guò)設(shè)計(jì)好的接口通訊。每層負(fù)責(zé)一個(gè)功能模塊,此功能模塊可以又包含若干粒度更小的功能模塊,這些功能模塊各自負(fù)責(zé)一個(gè)功能。分層設(shè)計(jì)方法可考慮面向過(guò)程、面向?qū)ο蠛兔嫦蚪M件的分層設(shè)計(jì)方法[5]。
2)平衡系統(tǒng)功能的可擴(kuò)展性與設(shè)計(jì)復(fù)雜性
由于不同被測(cè)系統(tǒng)、同一被測(cè)系統(tǒng)的不同分系統(tǒng),其測(cè)試流程、測(cè)試數(shù)據(jù)和測(cè)試規(guī)范均有不同,自動(dòng)化測(cè)試系統(tǒng)必須能夠快速的對(duì)系統(tǒng)應(yīng)用進(jìn)行原有功能的修改或者擴(kuò)展新的功能,因此本系統(tǒng)的設(shè)計(jì)必須具有一定的靈活性和前瞻性。針對(duì)此設(shè)計(jì)需求,要仔細(xì)進(jìn)行接口設(shè)計(jì)并參考已有的各種設(shè)計(jì)模式。
3)界面設(shè)計(jì)的基本原則
交互界面的設(shè)計(jì),直接關(guān)系到操作的友好度和軟件的易用性。并且測(cè)試準(zhǔn)備人員一般具有較高的被測(cè)系統(tǒng)測(cè)試知識(shí)技能,但計(jì)算機(jī)知識(shí)相對(duì)薄弱。因此,自動(dòng)化測(cè)試系統(tǒng)的界面設(shè)計(jì)必須直觀、友好和易于使用。最后,界面操作的響應(yīng)時(shí)間必須在用戶的容忍范圍內(nèi),如果操作時(shí)間無(wú)法縮短,則應(yīng)給出提示信息。
4)安全保障原則
由于安全苛刻系統(tǒng)測(cè)試環(huán)境的領(lǐng)域特殊性,因此系統(tǒng)的安全可靠運(yùn)行的重要性極高。要考慮采用何種設(shè)計(jì)以保證數(shù)據(jù)的完整性和一致性,即在測(cè)試程序編輯時(shí),根據(jù)用戶角色給與不同的權(quán)限,并且據(jù)此約束用戶行為,以避免誤操作等導(dǎo)致嚴(yán)重后果。
自動(dòng)化測(cè)試的總體流程分為四個(gè)子流程:權(quán)限認(rèn)證,測(cè)試準(zhǔn)備,測(cè)試執(zhí)行以及結(jié)果分析,主流程如圖1所示。
圖1 自動(dòng)化測(cè)試流程圖
用戶權(quán)限認(rèn)證可以確保當(dāng)前使用軟件的用戶具有相應(yīng)的操作權(quán)限,系統(tǒng)對(duì)用戶權(quán)限有嚴(yán)格的管理,對(duì)用戶權(quán)限的操作進(jìn)行訪問(wèn)控制。測(cè)試準(zhǔn)備流程為自動(dòng)化測(cè)試執(zhí)行準(zhǔn)備測(cè)試任務(wù),測(cè)試任務(wù)是自動(dòng)化測(cè)試執(zhí)行過(guò)程所必須的測(cè)試資源,是自動(dòng)化測(cè)試執(zhí)行的數(shù)據(jù)基礎(chǔ)。測(cè)試準(zhǔn)備流程屬于自動(dòng)化測(cè)試流程,是自動(dòng)化測(cè)試流程的最初階段,進(jìn)行自動(dòng)化測(cè)試的執(zhí)行準(zhǔn)備相關(guān)的數(shù)據(jù)以及相關(guān)的配置。測(cè)試執(zhí)行流程為自動(dòng)化測(cè)試流程的核心階段,該流程必須與被測(cè)環(huán)境進(jìn)行交互實(shí)現(xiàn)自動(dòng)化測(cè)試執(zhí)行,而其他流程往往可以獨(dú)立于被測(cè)環(huán)境而進(jìn)行。首先在測(cè)試執(zhí)行開(kāi)始之后,進(jìn)行測(cè)試任務(wù)的封裝和發(fā)布過(guò)程,同時(shí)進(jìn)行測(cè)試環(huán)境的監(jiān)控過(guò)程,發(fā)現(xiàn)測(cè)試執(zhí)行異常以及出錯(cuò)之后進(jìn)行異常處理過(guò)程,然后繼續(xù)執(zhí)行剩余的用例,當(dāng)測(cè)試任務(wù)包含的所有用例執(zhí)行完畢之后測(cè)試執(zhí)行流程結(jié)束。
結(jié)果分析流程將對(duì)此測(cè)試結(jié)果信息進(jìn)行解析處理形成用戶易于理解的測(cè)試結(jié)果信息。同時(shí)展示的信息還包括測(cè)試異常出錯(cuò)信息等。
自動(dòng)化測(cè)試系統(tǒng)是一個(gè)面向信息和數(shù)據(jù)驅(qū)動(dòng)的測(cè)試系統(tǒng)[6]。根據(jù)分布式軟件自動(dòng)化測(cè)試基本原理,設(shè)計(jì)了自動(dòng)化測(cè)試系統(tǒng)的系統(tǒng)結(jié)構(gòu)。該系統(tǒng)結(jié)構(gòu)與基本原理中測(cè)試過(guò)程的三個(gè)階段相符合。下面將詳細(xì)的介紹系統(tǒng)體系結(jié)構(gòu)和功能,自動(dòng)化測(cè)試系統(tǒng)結(jié)構(gòu)如圖2所示。
測(cè)試數(shù)據(jù)準(zhǔn)備模塊對(duì)應(yīng)測(cè)試任務(wù)準(zhǔn)備過(guò)程,它由測(cè)試數(shù)據(jù)庫(kù)和測(cè)試任務(wù)準(zhǔn)備單元組成,其中測(cè)試數(shù)據(jù)庫(kù)包括測(cè)試腳本庫(kù)、測(cè)試用例庫(kù)、測(cè)試任務(wù)庫(kù)、測(cè)試文檔庫(kù)、測(cè)試結(jié)果庫(kù)和測(cè)試對(duì)象庫(kù)等相關(guān)內(nèi)容。
測(cè)試執(zhí)行控制模塊對(duì)應(yīng)測(cè)試任務(wù)執(zhí)行過(guò)程,包括測(cè)試過(guò)程監(jiān)控單元、測(cè)試執(zhí)行控制單元以及測(cè)試異常處理單元。測(cè)試過(guò)程監(jiān)控單元負(fù)責(zé)在測(cè)試任務(wù)執(zhí)行時(shí)對(duì)整個(gè)測(cè)試環(huán)境進(jìn)行監(jiān)控,通過(guò)操作日志記錄本記錄分布式測(cè)試框架系統(tǒng)的詳細(xì)操作過(guò)程,生成操作留痕記錄;測(cè)試異常處理單元將測(cè)試過(guò)程中異常信息進(jìn)行回收并根據(jù)不同的策略進(jìn)行恢復(fù)處理。
測(cè)試結(jié)果評(píng)估模塊對(duì)應(yīng)測(cè)試結(jié)果評(píng)估過(guò)程,它包括結(jié)果處理單元、結(jié)果統(tǒng)計(jì)單元和測(cè)試評(píng)估單元。
測(cè)試中間件分別與測(cè)試數(shù)據(jù)準(zhǔn)備模塊、測(cè)試執(zhí)行控制模塊和測(cè)試結(jié)果評(píng)估模塊相連接,為整個(gè)測(cè)試系統(tǒng)提供基礎(chǔ)的服務(wù)支持?;A(chǔ)服務(wù)包括時(shí)間服務(wù)、文件服務(wù)、進(jìn)程服務(wù)、異常服務(wù)、消息通信服務(wù)、環(huán)境檢測(cè)服務(wù)以及測(cè)試監(jiān)控服務(wù),這些服務(wù)均通過(guò)統(tǒng)一的測(cè)試中間件API接口提供本地和遠(yuǎn)程無(wú)差別訪問(wèn),以適應(yīng)分布式系統(tǒng)的特點(diǎn)。
本文面向航天器或大型武器裝備所用的安全苛刻軟件軟件的自動(dòng)化測(cè)試問(wèn)題,從一般意義上給出了自動(dòng)化測(cè)試系統(tǒng)的實(shí)現(xiàn)目標(biāo)、依據(jù)與基本流程,并提出了一套分布式自動(dòng)化測(cè)試架構(gòu)?;诒炯軜?gòu),作者已經(jīng)完成了某安全苛刻軟件的自動(dòng)化測(cè)試工作。本領(lǐng)域內(nèi),未來(lái)關(guān)注的目標(biāo)是測(cè)試過(guò)程的實(shí)時(shí)性與時(shí)序性問(wèn)題,同時(shí),利用機(jī)器學(xué)習(xí)方法對(duì)測(cè)試結(jié)果的深度分析也是值得研究的內(nèi)容。
圖2 自動(dòng)化測(cè)試系統(tǒng)結(jié)構(gòu)圖
[1] Glenford J.Myers.The Art of Software Testing (Second Edition)[M].Canada: John Wiley & Sons,Inc.2004, June.
[2] 張斌.精通QTP與自動(dòng)化測(cè)試框架設(shè)計(jì)實(shí)踐[M].北京: 人民郵電出版社.2010.
[3] 金大海, 宮云戰(zhàn).數(shù)據(jù)驅(qū)動(dòng)自動(dòng)化測(cè)試方法研究[J].裝甲兵工程學(xué)院學(xué)報(bào), 2004, 18(2): 95-97.
[4] 李瑋.軟件自動(dòng)化測(cè)試混合框架的研究與實(shí)現(xiàn)[D].北京交通大學(xué), 2007.
[5] 孫秋冬.軟件系統(tǒng)的分層設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2001, V37(7): 110-112.
[6] 顧慶, 陳道蓄, 等.一個(gè)面向分布式程序的測(cè)試系統(tǒng)框架[J].軟件學(xué)報(bào), 2000, 11(8): 1053-1059.