周煒 曹亮
【摘要】軟件工業(yè)化生產(chǎn)過程中,構(gòu)件復(fù)用是一條可行之路,而軟件復(fù)用又以構(gòu)件技術(shù)為核心,現(xiàn)階段基于構(gòu)件的軟件開發(fā)應(yīng)用越來越廣泛,隨之而來的問題就是構(gòu)件及基于構(gòu)件的軟件系統(tǒng)測試中遇到了諸多問題。從某種程度上講,構(gòu)件質(zhì)量的好壞是由其可測試性來決定的,在構(gòu)件設(shè)計(jì)階段充分考慮其可測試性,并予以完善與提高,則可進(jìn)一步保證構(gòu)件質(zhì)量。本文主要針對嵌入式構(gòu)件系統(tǒng)的測試進(jìn)行討論。
【關(guān)鍵詞】嵌入式;構(gòu)件系統(tǒng);測試技術(shù)
一、構(gòu)件系統(tǒng)測試的特點(diǎn)及分類
所謂構(gòu)件是指系統(tǒng)中可明確辯識(shí)的成分,構(gòu)件是可獨(dú)立配置的單元,由于其封裝十分嚴(yán)格,故其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)通常不為所知。構(gòu)件最大的優(yōu)勢在于可在恰當(dāng)?shù)沫h(huán)境中被復(fù)用,因此也被認(rèn)為是解決軟件危機(jī)的重要途徑。構(gòu)件需要清晰的接口規(guī)范支持,以利其與環(huán)境交互。
(一)構(gòu)件系統(tǒng)測試的特點(diǎn)
在構(gòu)件化軟件測試過程中應(yīng)用傳統(tǒng)軟件測試,難免出現(xiàn)力不從心的問題。比如構(gòu)件內(nèi)部會(huì)包含狀態(tài)變量,即調(diào)用一個(gè)構(gòu)件接口操作需要依賴前面調(diào)用操作的歷史來獲得另一個(gè)結(jié)構(gòu),但構(gòu)件內(nèi)部實(shí)現(xiàn)細(xì)節(jié)不可知,故只能將其視為一個(gè)黑盒,難免用到用于功能性測試的黑盒測試。但是在這個(gè)過程中,一方面由于實(shí)際系統(tǒng)中功能組合過于復(fù)雜,難以實(shí)現(xiàn)完全的功能性測試;另一方面黑盒測試需要對構(gòu)件建立測試驅(qū)動(dòng)器,其代價(jià)非常之高。所以通常會(huì)用白盒測試做補(bǔ)充,但也會(huì)由于構(gòu)件系統(tǒng)不可見的特性而加大白盒測試的難度。所以構(gòu)件測試體現(xiàn)出與傳統(tǒng)測試方法所不同的特殊性。
(二)構(gòu)件測試的分類
具體而言,可以從以下幾個(gè)方面對構(gòu)件測試進(jìn)行分析:首先,基于構(gòu)件測試的內(nèi)容來看,可分為構(gòu)件內(nèi)部實(shí)現(xiàn)細(xì)節(jié)測試、構(gòu)件接口測試、構(gòu)件組裝測試等;其次,基于與受測者的關(guān)系而言,可分為構(gòu)件開發(fā)者測試、構(gòu)件復(fù)用者測試、第三方測試等;再次,基于測試過程采用的具體技術(shù)而言,可分為基于變異測試的方法、基于構(gòu)件狀態(tài)機(jī)的方法、構(gòu)件的易測性設(shè)計(jì)等;最后,基于構(gòu)件層次測試可分為構(gòu)件單元測試、構(gòu)件綜合測試及系統(tǒng)測試等。
二、構(gòu)件測試仿真平臺(tái)
開發(fā)構(gòu)件系統(tǒng)測試仿真平臺(tái),可以將嵌入式軟件置于一個(gè)自動(dòng)、實(shí)時(shí)的閉環(huán)測試環(huán)境中,具體而言,嵌入式構(gòu)件系統(tǒng)仿真測試平臺(tái)分層體系結(jié)構(gòu)如圖1所示:
圖1 嵌入式構(gòu)件系統(tǒng)測試平臺(tái)分層體系結(jié)構(gòu)示意圖
宿主機(jī)負(fù)責(zé)測試開發(fā)環(huán)境的運(yùn)行,其體現(xiàn)出圖形化、交互式的特點(diǎn),測試人員在根據(jù)具體的測試要求來設(shè)置系統(tǒng)相關(guān)資源,完成對被測軟件的組織與輸入,驅(qū)動(dòng)其正常行動(dòng);并在測試過程中實(shí)時(shí)監(jiān)控測試數(shù)據(jù)及其與受測軟件的交互情況;完成結(jié)束后將受測軟件的輸出結(jié)果自動(dòng)保存起來,完成一系列自動(dòng)、實(shí)時(shí)的嵌入式軟件閉環(huán)測試。
由上圖可知,仿真測試環(huán)境中一個(gè)重要組成部分即測試開發(fā)環(huán)境,其主要作用是對目標(biāo)系統(tǒng)交聯(lián)設(shè)備進(jìn)行仿真建模,以建立受測軟件的設(shè)備交聯(lián)環(huán)境,將受測軟件真實(shí)的運(yùn)行環(huán)境模擬出來,完成必要的內(nèi)部數(shù)據(jù)解算,再通過各個(gè)接口與各被測單元之間進(jìn)行數(shù)據(jù)交換。實(shí)時(shí)內(nèi)核的主要作用就是對測試過程中產(chǎn)生的實(shí)時(shí)數(shù)據(jù)進(jìn)行處理,對測試任務(wù)進(jìn)行實(shí)時(shí)調(diào)度,并實(shí)時(shí)傳遞測試數(shù)據(jù)。總體上講,測試開發(fā)環(huán)境必須包括測試文檔管理、測試腳本開發(fā)環(huán)境、搭建測試面板、配置測試環(huán)境、分析測試數(shù)據(jù)及日志管理等六項(xiàng)功能。
三、嵌入式構(gòu)件系統(tǒng)測試開發(fā)環(huán)境的設(shè)計(jì)
(一)創(chuàng)建構(gòu)件系統(tǒng)構(gòu)架模型
基于構(gòu)件化的形式進(jìn)行系統(tǒng)建模,其主要作用是分析軟件的應(yīng)用領(lǐng)域,實(shí)現(xiàn)其核心功能與設(shè)想的輸入及輸出行為的互相分離,所設(shè)計(jì)的構(gòu)件模型中封裝系統(tǒng)內(nèi)核所需的所有數(shù)據(jù)及功能,并在應(yīng)用構(gòu)件系統(tǒng)的過程中加以體現(xiàn)。進(jìn)行嵌入式構(gòu)件系統(tǒng)測試環(huán)境的開發(fā)與設(shè)計(jì),可獲得整個(gè)嵌入式測試系統(tǒng)環(huán)境的構(gòu)件圖,而圖2所示則可直觀的看出構(gòu)件與組件包的關(guān)系:
圖2 嵌入式構(gòu)件系統(tǒng)測試開發(fā)環(huán)境設(shè)計(jì)圖
由圖2可知,在搭建整個(gè)嵌入式測試系統(tǒng)環(huán)境過程中,共包含六個(gè)主要的構(gòu)件部分,且依托于兩個(gè)組件包利用預(yù)先設(shè)定的接口形式把需要測試的不同構(gòu)件關(guān)聯(lián)起來,使之形成一個(gè)整體,從而形成一個(gè)嵌入式的測試系統(tǒng)平臺(tái)。上文中提到,測試開發(fā)環(huán)境必須包含六項(xiàng)功能,(即測試文檔管理、測試腳本開發(fā)環(huán)境、搭建測試面板、配置測試環(huán)境、分析測試數(shù)據(jù)及日志管理等)。故此系統(tǒng)構(gòu)架模型就對應(yīng)包括測試文檔管理、測試配置、日志管理、腳本測試、腳本開發(fā)程序組件包測試及面板組件包測試等六個(gè)構(gòu)件。
其中測試文檔管理構(gòu)件的主要作用就是對測試環(huán)境文檔進(jìn)行分級處理,而測試環(huán)境文檔的主要內(nèi)容則包括日志文檔、接口文檔、測試配置文件及測試腳本文件,通過測試文檔管理模塊實(shí)現(xiàn)測試工作的組織與管理。
測試配置則是針對受測系統(tǒng)、測試工作的時(shí)間周期、測試過程中的輸入與輸出等進(jìn)行配置、管理,它也是整個(gè)權(quán)件系統(tǒng)架構(gòu)模型中比較重要的一部分。它是系統(tǒng)通用性及可擴(kuò)展性的直接體現(xiàn)。
日志管理是測試過程中每項(xiàng)工作的記錄,其主要作用是利用后臺(tái)運(yùn)行的監(jiān)控自動(dòng)捕捉測試過程中發(fā)生的所有事件,并將整個(gè)測試過程中相關(guān)測試人員在不同階段的具體活動(dòng)記錄下來。
測試腳本構(gòu)件主要包括測試腳本中支持的各種測試任務(wù)的鏈表,而測試任務(wù)主要有執(zhí)行測試任務(wù)的具體時(shí)間、任務(wù)的優(yōu)先等級特性、任務(wù)的周期特性、測試人員施加的測試動(dòng)作序列集合等等。根據(jù)不同的測試用例要求,測試人員生成對應(yīng)的測試腳本動(dòng)作序列,在描述這些測試動(dòng)作序列時(shí),會(huì)由對應(yīng)的處理程序?qū)幾g出來,轉(zhuǎn)換為對應(yīng)的測試指令,再進(jìn)行實(shí)時(shí)解析即可驅(qū)動(dòng)受測軟件的自動(dòng)化測試。
測試腳本開發(fā)程序組件包的主要目的是便于測試人員便捷的生成測試腳本,其支持文本及圖形兩種數(shù)據(jù)格式,并依托于測試配置構(gòu)件,測試配置信息后再進(jìn)行腳本測試,并對生成的測試腳本的語法進(jìn)行檢查。
測試面板開發(fā)程序組件包可以提供測試面板,其通過圖形的方式建立,可直觀的顯示出數(shù)據(jù),用戶可以測試開發(fā)過程中對整個(gè)過程進(jìn)行監(jiān)控;并且用戶還可以在測試過程中實(shí)現(xiàn)與受測軟件的交互,比如實(shí)時(shí)添加測試命令。在測試開發(fā)環(huán)境中提供一組封裝控制,用戶可通過圖形化配置完成測試面板的搭建,當(dāng)然由于其依托于測試配置構(gòu)件,故需要測試配置信息才能搭建面板。
(二)整體框架建模
對于整個(gè)測試系統(tǒng)而言,其框架建模過程中必須通過組件的形式完成構(gòu)件運(yùn)行環(huán)境與測試平臺(tái)的交互,在同一個(gè)構(gòu)件庫中可存儲(chǔ)所有的已開發(fā)的構(gòu)件,以實(shí)現(xiàn)構(gòu)件的統(tǒng)一管理。測試過程中根據(jù)實(shí)際需要搜索與測試要求相符的構(gòu)件,再進(jìn)行測試系統(tǒng)平臺(tái)的構(gòu)建,當(dāng)然整個(gè)過程必須進(jìn)行性能、安全及有效性的測試,最終確定出測試系統(tǒng)的理想構(gòu)件。設(shè)計(jì)測試系統(tǒng)過程中,只需考慮構(gòu)件之間的接口即可,不同的構(gòu)件之間要將其業(yè)務(wù)分割平衡點(diǎn)定義好,從而通過高內(nèi)聚、低耦合的功能構(gòu)件實(shí)現(xiàn)嵌入式測試需求的業(yè)務(wù)構(gòu)件,以適應(yīng)不同嵌入式構(gòu)件系統(tǒng)測試的要求。
四、結(jié)語
總之,隨著軟件工程的不斷發(fā)展,會(huì)有越來越多的軟件需要復(fù)用,而嵌入式構(gòu)件系統(tǒng)的應(yīng)用也會(huì)越來越廣泛,而作為軟件構(gòu)件質(zhì)量的重要保證,嵌入式構(gòu)件系統(tǒng)測試的重要性也會(huì)越來越突出。現(xiàn)階段我國對構(gòu)件的可測試性的研究還處于初級階段,后續(xù)諸如統(tǒng)一測試標(biāo)準(zhǔn)、提高測試性能、保證構(gòu)件可靠性等問題均是需要進(jìn)一步研究的發(fā)展方向。
參考文獻(xiàn)
[1]王益,耿相銘,陳慧.嵌入式測試系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2011,34(18):237-238.
[2]王軼辰,徐萍.嵌入式軟件機(jī)內(nèi)測試的設(shè)計(jì)與測試[J].計(jì)算機(jī)工程,2012,35(17):34-39.
[3]劉利枚.基于51系列的嵌入式軟件測試系統(tǒng)研究與實(shí)現(xiàn)[D].電子科技大學(xué),2012:4-6.
[4]范東麗.嵌入式軟件測試技術(shù)的研究[D].哈爾濱工程大學(xué),2009:39-42.
[5]傅程,宮云戰(zhàn),洪慧.構(gòu)件可測試性模型研究與應(yīng)用[J].北京化工大學(xué)學(xué)報(bào),2013(34):98.