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