專(zhuān)利名稱(chēng):一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置。
背景技術(shù):
現(xiàn)有的大型嵌入式系統(tǒng)軟件的測(cè)試主要包括以下幾個(gè)方面源碼測(cè)試、模塊測(cè)試、集成測(cè)試、規(guī)程測(cè)試以及性能測(cè)試等。對(duì)于源碼測(cè)試、集成測(cè)試、規(guī)程測(cè)試以及性能測(cè)試一般都有第三方提供的相應(yīng)測(cè)試工具,如源碼測(cè)試工具有LogicScope(一種軟件程序度量測(cè)試工具)和Rational Purify(一種軟件程序覆蓋率測(cè)試工具);很多測(cè)試儀器提供商都有相應(yīng)的仿真器、規(guī)程測(cè)試儀以及安全性測(cè)試工具。
但對(duì)于模塊和子系統(tǒng)測(cè)試,由于與系統(tǒng)的具體功能、實(shí)現(xiàn)技術(shù)以及采用的平臺(tái)密切相關(guān),所以很難找到一種第三方提供的通用的模塊測(cè)試工具。現(xiàn)在的通常做法是,由軟件測(cè)試人員針對(duì)特定的模塊和子系統(tǒng),編寫(xiě)特定的測(cè)試工具,但因?yàn)橐粋€(gè)大型的嵌入式系統(tǒng)通常有幾十,甚至幾百個(gè)模塊組成,且對(duì)于一個(gè)大型系統(tǒng),每個(gè)模塊的狀態(tài)轉(zhuǎn)移可能非常復(fù)雜,要覆蓋所有的可能情況需要編寫(xiě)的測(cè)試代碼量很大,且缺乏通用性,代碼利用率低,測(cè)試周期長(zhǎng),同時(shí),由于不同開(kāi)發(fā)人員編寫(xiě)測(cè)試代碼時(shí)可能產(chǎn)生的錯(cuò)誤與遺漏,導(dǎo)致部分本應(yīng)該在模塊測(cè)試時(shí)發(fā)現(xiàn)的缺陷引入到系統(tǒng)集成測(cè)試階段,甚至導(dǎo)致測(cè)試結(jié)果的不可靠性。另外,這種測(cè)試方法一般還需要特定的硬件測(cè)試環(huán)境的支持,影響了軟件測(cè)試的進(jìn)度。
發(fā)明內(nèi)容本發(fā)明的目的是,為所有的嵌入式模塊和子系統(tǒng),提供一個(gè)基于公共Host(主機(jī))平臺(tái)的通用的測(cè)試裝置,從而最大限度的避免測(cè)試工具的重復(fù)開(kāi)發(fā),縮短模塊和子系統(tǒng)的測(cè)試周期,提高軟件開(kāi)發(fā)效率。
本發(fā)明所提供的一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,基于公共資源庫(kù)對(duì)運(yùn)行于主機(jī)抽象虛擬環(huán)境上的模塊和子系統(tǒng)進(jìn)行測(cè)試,其特征在于它包括一個(gè)測(cè)試用例編輯單元、一個(gè)測(cè)試用例池、一個(gè)測(cè)試單元、一個(gè)調(diào)試單元和一個(gè)分析單元,其中測(cè)試用例池,存放測(cè)試用例的數(shù)據(jù)庫(kù);測(cè)試用例編輯單元,與測(cè)試用例池相連,主要完成測(cè)試用例的編輯、修改、檢查、管理功能,測(cè)試用例表現(xiàn)為消息的數(shù)據(jù)結(jié)構(gòu)形式,消息頭中包括測(cè)試對(duì)象信息,消息體中包括輸入?yún)?shù)信息,并可將測(cè)試用例組成一個(gè)有效的測(cè)試用例集,根據(jù)預(yù)先定義的規(guī)則,檢查測(cè)試用例的合法性,以決定是否存儲(chǔ)到測(cè)試用例池中;測(cè)試單元,與測(cè)試用例池相連,包括選擇發(fā)送功能實(shí)體和接收發(fā)送功能實(shí)體,選擇發(fā)送功能實(shí)體提供用戶界面,方便測(cè)試人員從測(cè)試用例池中選取測(cè)試用例或測(cè)試用例集,通過(guò)發(fā)送測(cè)試消息激勵(lì)模塊或子系統(tǒng),由接收發(fā)送功能實(shí)體接收模塊或子系統(tǒng)的響應(yīng),完成對(duì)測(cè)試用例指定的測(cè)試對(duì)象的測(cè)試,并把最后測(cè)試的結(jié)果發(fā)送給測(cè)試裝置的分析單元;調(diào)試單元,與測(cè)試用例池相連,包括選擇發(fā)送功能實(shí)體和接收顯示功能實(shí)體,對(duì)模塊內(nèi)重要的消息完成跟蹤功能,針對(duì)模塊或子系統(tǒng)里的調(diào)試代碼,通過(guò)編譯開(kāi)關(guān)設(shè)置激活,使模塊內(nèi)部發(fā)送和接受的重要消息透明地傳送到本調(diào)試單元,由本調(diào)試單元進(jìn)行解碼分析,從而實(shí)現(xiàn)了消息跟蹤調(diào)試功能,為了實(shí)現(xiàn)特定的調(diào)試,由選擇發(fā)送功能實(shí)體從測(cè)試用例池中讀取特定的測(cè)試用例驅(qū)動(dòng)模塊或子系統(tǒng),接收顯示功能實(shí)體直接顯示跟蹤的消息原語(yǔ)內(nèi)容;分析單元,與調(diào)試單元相連,包含三個(gè)功能實(shí)體,即接收功能實(shí)體、分析功能實(shí)體及記錄和顯示功能實(shí)體,用作對(duì)測(cè)試結(jié)果記錄進(jìn)行分析,除了完成基本功能,包括整個(gè)測(cè)試耗時(shí)、通過(guò)和未通過(guò)的測(cè)試項(xiàng)數(shù)、記錄每個(gè)未通過(guò)項(xiàng),還完成高級(jí)測(cè)試結(jié)果分析功能,包括代碼覆蓋率、關(guān)鍵函數(shù)的執(zhí)行頻率、各個(gè)模塊與函數(shù)的相對(duì)執(zhí)行時(shí)間,并可將分析結(jié)構(gòu)反饋給測(cè)試用例編輯單元,用于調(diào)整測(cè)試用例或測(cè)試用例集進(jìn)入測(cè)試用例池的準(zhǔn)則,同時(shí)將分析結(jié)果記錄到文件和進(jìn)行界面呈現(xiàn)。
上述的基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,其中,測(cè)試裝置與被測(cè)試的模塊或子系統(tǒng)間的通信機(jī)制采用消息形式,并且調(diào)用主機(jī)平臺(tái)上的抽象虛擬環(huán)境提供的應(yīng)用編程接口發(fā)送和接受消息,消息的格式由特定的測(cè)試用例提供。
上述的基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,其中,測(cè)試單元的測(cè)試是串行進(jìn)行的,即當(dāng)前一個(gè)測(cè)試用例完成時(shí),才能進(jìn)行下一個(gè)測(cè)試,或當(dāng)前的測(cè)試用例集完成后,才能進(jìn)行下一個(gè)測(cè)試用例集的測(cè)試。
上述的基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,其中,測(cè)試包括由測(cè)試單元實(shí)現(xiàn)的黑盒測(cè)試和由調(diào)試單元實(shí)現(xiàn)的白盒測(cè)試兩種,且對(duì)于一個(gè)測(cè)試用例驅(qū)動(dòng)的測(cè)試是否完成的判斷,可由調(diào)試單元自動(dòng)完成或者由測(cè)試人員靈活指定。
通過(guò)本發(fā)明,為大型嵌入式系統(tǒng)的開(kāi)發(fā)提供了一種基于主機(jī)平臺(tái)的模塊和子系統(tǒng)的通用測(cè)試方法,將本來(lái)需要下載到硬件系統(tǒng)中才能進(jìn)行的測(cè)試,無(wú)縫的移植到公共Host(主機(jī))平臺(tái)上進(jìn)行,不僅減少了軟件測(cè)試對(duì)硬件資源的依賴性及繁瑣性,有效的提高了軟件調(diào)試的效率;而且更為重要的是,該測(cè)試裝置能根據(jù)不同的測(cè)試用例,對(duì)不同的模塊和子系統(tǒng)進(jìn)行測(cè)試。測(cè)試裝置的絕大部分直接運(yùn)行于主機(jī)平臺(tái),以后即使抽象虛擬環(huán)境需要改寫(xiě)時(shí),只要HOST平臺(tái)不變,測(cè)試裝置仍具有較好的通用性,從而最大限度的避免了測(cè)試工具的重復(fù)開(kāi)發(fā),縮短了模塊和子系統(tǒng)的測(cè)試周期。從實(shí)際測(cè)試的效果來(lái)看,該測(cè)試裝置比通常的方法能更早、更多的發(fā)現(xiàn)模塊或子系統(tǒng)設(shè)計(jì)中的缺陷,有效的檢查出如消息參數(shù)錯(cuò)誤、模塊狀態(tài)轉(zhuǎn)移錯(cuò)誤、以及狀態(tài)處理錯(cuò)誤等缺陷,較以前的方法能縮短近50%的模塊和子系統(tǒng)測(cè)試時(shí)間。同時(shí),上述模塊測(cè)試缺陷的發(fā)現(xiàn)概率能夠達(dá)到80%,有效的避免了將上述缺陷引入到系統(tǒng)測(cè)試階段。
圖1本發(fā)明測(cè)試裝置的總體結(jié)構(gòu)圖;圖2本發(fā)明中的測(cè)試用例數(shù)據(jù)結(jié)構(gòu)圖;圖3本發(fā)明中的測(cè)試單元結(jié)構(gòu)圖;圖4本發(fā)明中的分析單元結(jié)構(gòu)圖;圖5本發(fā)明中的調(diào)試單元結(jié)構(gòu)圖。
具體實(shí)施方式
本發(fā)明基于這樣一個(gè)事實(shí)前提對(duì)于大型嵌入式系統(tǒng),由于所采用的操作系統(tǒng)(OS)可能變化,一般開(kāi)發(fā)者在軟件設(shè)計(jì)之初就考慮到了系統(tǒng)的可移植性,在底層使用一種虛擬層的機(jī)制將操作系統(tǒng)封裝,從而實(shí)現(xiàn)上層應(yīng)用與操作系統(tǒng)的無(wú)關(guān)性。所以可以通過(guò)一種基于公共Host(主機(jī))平臺(tái)的抽象單元,提供一個(gè)與設(shè)備虛擬層相當(dāng)?shù)牡葍r(jià)層,從而能夠無(wú)縫的將一個(gè)嵌入式系統(tǒng)移植到公共Host平臺(tái),通過(guò)提供編譯文件單元(包括主機(jī)抽象虛擬環(huán)境),由嵌入式系統(tǒng)的源代碼編譯成的可執(zhí)行文件能夠在主機(jī)平臺(tái)上運(yùn)行。
如圖1所示,本發(fā)明是測(cè)試裝置5,其絕大部分實(shí)體運(yùn)行于HOST平臺(tái)1,只有少量涉及到與模塊和子系統(tǒng)3通信的消息接口函數(shù)調(diào)用了主機(jī)抽象虛擬環(huán)境2提供的API(應(yīng)用編程接口),并且它還利用了公共資源庫(kù)4。在此環(huán)境中測(cè)試裝置5對(duì)模塊和子系統(tǒng)3提供測(cè)試功能。
HOST平臺(tái)1物理上是一臺(tái)運(yùn)行Windows2000(微軟公司的一種計(jì)算機(jī)操作系統(tǒng))的PC(個(gè)人電腦)。
主機(jī)抽象虛擬環(huán)境2是一層基于Windows2000的虛擬機(jī),對(duì)上提供與VxWorks(一種實(shí)時(shí)操作系統(tǒng))虛擬機(jī)一樣的API(應(yīng)用編程接口),封裝了Windows2000的具體細(xì)節(jié)。VxWorks(一種實(shí)時(shí)操作系統(tǒng))虛擬機(jī)是為模塊和子系統(tǒng)3開(kāi)發(fā)的,封裝了VxWorks的具體細(xì)節(jié),運(yùn)行在VxWorks上,圖1中沒(méi)有給出。主機(jī)抽象虛擬環(huán)境2是為移植模塊和子系統(tǒng)3到HOST平臺(tái)1上開(kāi)發(fā)的,以配合測(cè)試裝置5的使用。
模塊和子系統(tǒng)3是在VxWorks虛擬機(jī)上開(kāi)發(fā)的RNC(無(wú)線資源控制器)、NodeB(基站收發(fā)信機(jī)B)以及MT(移動(dòng)終端)的上層協(xié)議軟件,正常情況下運(yùn)行于VxWorks,此處,通過(guò)主機(jī)抽象虛擬環(huán)境2把它移植到HOST平臺(tái)1運(yùn)行。
公共資源庫(kù)4包含以前在VxWorks上開(kāi)發(fā)測(cè)試模塊和子系統(tǒng)3時(shí)定義的消息結(jié)構(gòu),測(cè)試用例等數(shù)據(jù)文件,以幫助測(cè)試用例編輯單元51根據(jù)不同的模塊和子系統(tǒng)3生成對(duì)應(yīng)的測(cè)試用例;另外還有一些工具軟件包。
在使用測(cè)試裝置5開(kāi)始測(cè)試模塊和子系統(tǒng)3前,必須先在HOST平臺(tái)1上完成主機(jī)抽象虛擬環(huán)境2,移植模塊和子系統(tǒng)3到HOST平臺(tái)1,并準(zhǔn)備好公共資源庫(kù)4。
測(cè)試裝置5包括一個(gè)測(cè)試用例編輯單元51,一個(gè)測(cè)試用例池52,一個(gè)分析單元53,一個(gè)測(cè)試單元54,一個(gè)調(diào)試單元55。
測(cè)試用例編輯單元51提供友好易用的人機(jī)界面,用戶可以通過(guò)界面,根據(jù)被測(cè)試的模塊和子系統(tǒng)3,利用公共資源庫(kù)4,完成Test Case(測(cè)試用例)、Test Case Set(測(cè)試用例集,即多個(gè)相關(guān)的測(cè)試用例組成)的生成、刪除、修改等編輯功能,然后根據(jù)某種規(guī)則驗(yàn)證測(cè)試用例和測(cè)試用例集的有效性,若有效則輸出到測(cè)試用例池52中。
如圖2,為了簡(jiǎn)化后續(xù)的消息路由處理,測(cè)試用例的格式直接定義為包括消息頭56和消息體57兩部分,消息體57的格式與模塊和子系統(tǒng)3要求的輸入消息格式完全一致,包含具體的輸入?yún)?shù),消息頭56定義包括測(cè)試對(duì)象561,測(cè)試類(lèi)型562,測(cè)試序列號(hào)563。測(cè)試對(duì)象561類(lèi)型定義為一個(gè)最大長(zhǎng)度為128個(gè)字節(jié)的以0結(jié)尾的字符串,包括圖1中的接收消息的模塊和子系統(tǒng)3的名字,定義測(cè)試類(lèi)型的目的是便于按類(lèi)型組織測(cè)試用例數(shù)據(jù)。測(cè)試類(lèi)型562定義為一個(gè)字節(jié)的無(wú)符號(hào)整數(shù),可選值如下#Define MeasureType_Debug 1 /*此測(cè)試用例只用于調(diào)試*/#Define MeasureType_Test_Funtion 2 /*此測(cè)試用例只用于功能測(cè)試*/#Define MeasureType_Test_Performance 3 /*此測(cè)試用例只用于性能測(cè)試*/……測(cè)試序列號(hào)563定義為一個(gè)2字節(jié)的無(wú)符號(hào)整數(shù),測(cè)試用例編輯單元51忽略此項(xiàng)。它由測(cè)試單元54和調(diào)試單元55在發(fā)送和接收消息時(shí)填入一個(gè)測(cè)試消息序列號(hào),此序列號(hào)可與消息體57中可能包括的消息序列號(hào)相同,也可不同,它只對(duì)測(cè)試裝置5有意義,對(duì)于模塊和子系統(tǒng)3是透明的。
對(duì)于不同的模塊和子系統(tǒng)3,測(cè)試用例的消息頭56的格式相同,但消息體57的格式可能不同,其格式可從圖1中的公共資源庫(kù)4得到。這樣,就把需要針對(duì)不同的模塊和子系統(tǒng)3編寫(xiě)不同的測(cè)試程序的繁瑣任務(wù)簡(jiǎn)化為只需通過(guò)用戶界面動(dòng)態(tài)編輯模塊和子系統(tǒng)3要求的特定消息格式,大大的減少了軟件測(cè)試的工作量。
測(cè)試用例池52提供后臺(tái)存儲(chǔ)功能,采用了兩種方式,第一種方式是文件存儲(chǔ)系統(tǒng)利用多個(gè)文本文件來(lái)存儲(chǔ)所有的測(cè)試用例,并按測(cè)試的模塊和子系統(tǒng)來(lái)生成并命名文件,每個(gè)文件內(nèi),分成用于測(cè)試單元54和調(diào)試單元55的兩個(gè)數(shù)據(jù)段,分別存儲(chǔ)測(cè)試用例和調(diào)試用例,兩個(gè)數(shù)據(jù)段內(nèi)的內(nèi)容有部分重合,因?yàn)橐粋€(gè)測(cè)試用例可能既能給測(cè)試單元54使用,也能給調(diào)試單元55使用,為簡(jiǎn)化實(shí)現(xiàn),每個(gè)數(shù)據(jù)段內(nèi)的數(shù)據(jù)不再提供索引。第二種方式是采用商業(yè)數(shù)據(jù)庫(kù)管理軟件MS Microsoft SQLServer(美國(guó)微軟公司的一種數(shù)據(jù)庫(kù)管理軟件)來(lái)存儲(chǔ)所有的測(cè)試用例,根據(jù)一個(gè)或多個(gè)需要測(cè)試的模塊和子系統(tǒng)來(lái)生成表格,每個(gè)測(cè)試用例存儲(chǔ)在表格的一行內(nèi),作為一個(gè)記錄,記錄的字段值依次是圖2中的測(cè)試對(duì)象561,測(cè)試類(lèi)型562,測(cè)試序列號(hào)563,消息體57,索引字段包括測(cè)試對(duì)象561和測(cè)試類(lèi)型562。文件系統(tǒng)方式適合于測(cè)試用例較少的場(chǎng)合,實(shí)現(xiàn)簡(jiǎn)單,不需要專(zhuān)業(yè)的數(shù)據(jù)庫(kù)軟件,數(shù)據(jù)庫(kù)管理軟件方式適用于管理復(fù)雜的測(cè)試用例數(shù)據(jù),并能提供強(qiáng)大的索引功能,便于測(cè)試用例數(shù)據(jù)的有效管理。
如圖3,測(cè)試單元54包括選擇發(fā)送功能實(shí)體541和接收發(fā)送功能實(shí)體542兩個(gè)部分。選擇發(fā)送功能實(shí)體541實(shí)現(xiàn)為一個(gè)獨(dú)立的任務(wù),它包括三個(gè)模塊用戶界面模塊5411,讀測(cè)試用例池模塊5412和測(cè)試消息發(fā)送模塊5413。接收發(fā)送功能實(shí)體542實(shí)現(xiàn)為另一個(gè)獨(dú)立的任務(wù)。
測(cè)試單元54的對(duì)外接口為讀測(cè)試用例池模塊5412從測(cè)試用例池52讀數(shù)據(jù),支持兩種數(shù)據(jù)格式文本文件系統(tǒng)和數(shù)據(jù)庫(kù)管理軟件MS Microsoft SQL Server;測(cè)試消息發(fā)送模塊5413發(fā)送消息到模塊和子系統(tǒng)3,接收發(fā)送功能實(shí)體542從模塊和子系統(tǒng)3接收消息響應(yīng),進(jìn)行初步分析后,將測(cè)試結(jié)果發(fā)送給分析單元53。
測(cè)試單元54的內(nèi)部接口和工作流程為用戶界面模塊5411提供給測(cè)試人員友好的操作界面,根據(jù)測(cè)試人員的圖形操作命令,調(diào)用讀測(cè)試用例池模塊5412,讀取測(cè)試用例并顯示,以方便用戶選取,最后以測(cè)試人員選取的一個(gè)或多個(gè)測(cè)試用例(或測(cè)試用例集合)為參數(shù)(一個(gè)內(nèi)存起始地址,代表一塊存放測(cè)試用例的內(nèi)存區(qū)域),調(diào)用測(cè)試消息發(fā)送模塊5413,測(cè)試消息發(fā)送模塊5413將從測(cè)試消息中提取消息體57向模塊和子系統(tǒng)3發(fā)送,同時(shí)啟動(dòng)測(cè)試定時(shí)器。為便于測(cè)試消息發(fā)送模塊5413和接收發(fā)送功能實(shí)體542之間通信,采用一個(gè)簡(jiǎn)單的實(shí)現(xiàn)策略定義兩個(gè)全局變量structHeader(結(jié)構(gòu)變量),包括圖2中的消息頭56的所有內(nèi)容測(cè)試對(duì)象561,測(cè)試類(lèi)型562,測(cè)試序列號(hào)563,圖3中的測(cè)試消息發(fā)送模塊5413每次發(fā)送消息時(shí),都將此結(jié)構(gòu)中的測(cè)試序列號(hào)563成員變量的值加1,測(cè)試對(duì)象561和測(cè)試類(lèi)型562成員變量的值由測(cè)試用例預(yù)先指定。
objectTimeout(對(duì)象變量),測(cè)試消息發(fā)送模塊5413在發(fā)送測(cè)試消息時(shí)啟動(dòng)的定時(shí)器,是一個(gè)對(duì)象變量。
正常情況下,當(dāng)測(cè)試消息發(fā)送模塊5413發(fā)送測(cè)試消息后,過(guò)一段時(shí)間接收發(fā)送功能實(shí)體542將接收到測(cè)試響應(yīng)消息,這時(shí),接收發(fā)送功能實(shí)體542首先將objectTimeout清零,并讀取structHeader的值,與剛收到的測(cè)試響應(yīng)消息一起,組合成完整的測(cè)試結(jié)果消息,發(fā)送給分析單元53,測(cè)試結(jié)果消息的消息頭格式與圖2中的格式類(lèi)似,但消息體格式可能不同,因?yàn)獒槍?duì)模塊和子系統(tǒng)的激勵(lì)消息和響應(yīng)消息的格式可能不同;同時(shí)接收發(fā)送功能實(shí)體542還要發(fā)送測(cè)試完成通知消息到測(cè)試消息發(fā)送模塊5413,指示一個(gè)測(cè)試的正常完成,可以進(jìn)行下一個(gè)測(cè)試,測(cè)試是嚴(yán)格串行化的。
異常情況下,當(dāng)測(cè)試消息發(fā)送模塊5413發(fā)送測(cè)試消息后,接收發(fā)送功能實(shí)體542一直不能接收到測(cè)試響應(yīng)消息,objectTimeout將自動(dòng)清零并發(fā)送超時(shí)消息給測(cè)試消息發(fā)送模塊5413和接收發(fā)送功能實(shí)體542測(cè)試消息發(fā)送模塊5413停止該測(cè)試用例的測(cè)試,進(jìn)入下一個(gè)測(cè)試用例的測(cè)試,同時(shí),接收發(fā)送功能實(shí)體542讀取structHeader的值,將測(cè)試響應(yīng)消息內(nèi)容設(shè)置為“測(cè)試失敗”,然后同樣組合成完整的測(cè)試結(jié)果消息發(fā)送到分析單元53。
測(cè)試的正常情況并不表示測(cè)試結(jié)果的正確,只是表示在規(guī)定的時(shí)間內(nèi)有測(cè)試響應(yīng)。測(cè)試定時(shí)器的超時(shí)值可以根據(jù)不同的模塊和子系統(tǒng)設(shè)置。異常情況下測(cè)試消息發(fā)送模塊5413沒(méi)有實(shí)現(xiàn)測(cè)試消息的重傳機(jī)制。
如圖4所示,分析單元53由接收功能實(shí)體531,分析功能實(shí)體532、記錄和顯示功能實(shí)體533組成,與測(cè)試單元54之間采用消息通信接口。接收功能實(shí)體531實(shí)現(xiàn)為一個(gè)任務(wù),測(cè)試單元54沒(méi)有測(cè)試結(jié)果消息發(fā)送時(shí),該任務(wù)處于阻塞狀態(tài),分析功能實(shí)體532實(shí)現(xiàn)為一個(gè)過(guò)程函數(shù),記錄和顯示功能實(shí)體533實(shí)現(xiàn)為一個(gè)過(guò)程函數(shù)。它的工作流程是這樣的當(dāng)接收功能實(shí)體531發(fā)現(xiàn)其消息隊(duì)列中有測(cè)試單元54發(fā)送來(lái)的測(cè)試結(jié)果消息時(shí),將調(diào)用分析實(shí)體532處理此消息,分析功能實(shí)體532根據(jù)為圖2中的消息頭56中的各子項(xiàng)所定義的一些特定規(guī)則,實(shí)時(shí)分析每個(gè)消息中的測(cè)試結(jié)果。分析功能實(shí)體532還具有一定的本地存儲(chǔ)功能,可根據(jù)一定規(guī)則,對(duì)多個(gè)相關(guān)的測(cè)試結(jié)果消息進(jìn)行集中分析,比較,根據(jù)圖2中的測(cè)試序列號(hào)563可分析被測(cè)試系統(tǒng)某些測(cè)試項(xiàng)的時(shí)間特性,并統(tǒng)計(jì)多項(xiàng)測(cè)試指標(biāo)。最后,記錄和顯示功能實(shí)體533的過(guò)程函數(shù)被調(diào)用,將分析結(jié)果記錄到文件中,并同時(shí)對(duì)用戶提供界面顯示。
如圖5所示,調(diào)試單元55包括選擇發(fā)送功能實(shí)體551和接收顯示功能實(shí)體552兩個(gè)部分,選擇發(fā)送功能實(shí)體551實(shí)現(xiàn)為一個(gè)獨(dú)立的任務(wù),它包括三個(gè)模塊用戶界面模塊5511,讀測(cè)試用例池模塊5512和測(cè)試消息發(fā)送模塊5513。接收顯示功能實(shí)體552實(shí)現(xiàn)為另一個(gè)獨(dú)立的任務(wù)。它的實(shí)現(xiàn)與工作流程與測(cè)試單元54比較類(lèi)似,主要區(qū)別如下1.測(cè)試目的不同,選取的測(cè)試用例也不同。調(diào)試單元55用于測(cè)試模塊和子系統(tǒng)內(nèi)部的重要接口和參考點(diǎn)上的消息流,選取的是用于白盒測(cè)試的用例,而測(cè)試單元54通過(guò)測(cè)試模塊外部接口,測(cè)量模塊的功能和性能等,選取的是黑盒測(cè)試用例。
2.對(duì)于測(cè)試單元54(黑盒測(cè)試),一個(gè)測(cè)試消息一般只有一個(gè)測(cè)試響應(yīng)消息,但對(duì)于調(diào)試單元55(白盒測(cè)試),一個(gè)測(cè)試消息通常有分別對(duì)應(yīng)模塊內(nèi)部多個(gè)觀測(cè)點(diǎn)的多個(gè)測(cè)試響應(yīng)消息,針對(duì)一個(gè)測(cè)試消息的所有測(cè)試響應(yīng)消息是否都已收到?由于測(cè)試的復(fù)雜性,我們采用兩種方式判斷由接收顯示功能實(shí)體552自動(dòng)判斷,或者由測(cè)試人員根據(jù)專(zhuān)業(yè)經(jīng)驗(yàn)人工判斷。若測(cè)試響應(yīng)消息都已收到,將由接收顯示功能實(shí)體552或者用戶界面模塊5511發(fā)送測(cè)試完成通知消息到測(cè)試消息發(fā)送模塊5513,指示一個(gè)測(cè)試的正常完成,可以進(jìn)行下一個(gè)測(cè)試。
3.調(diào)試單元55的接收顯示功能實(shí)體552只簡(jiǎn)單的直接顯示測(cè)量結(jié)果消息以原語(yǔ)格式顯示給測(cè)試人員,不再把此消息傳送給分析單元53。因?yàn)槟K內(nèi)部消息格式的種類(lèi)較多,需要對(duì)模塊內(nèi)部細(xì)節(jié)有較多的了解,從實(shí)用性角度出發(fā),不再把此測(cè)試結(jié)果消息交給分析模塊,對(duì)其分析主要依靠開(kāi)發(fā)測(cè)試人員的專(zhuān)業(yè)經(jīng)驗(yàn)完成。
使用該測(cè)試裝置的完整流程如下第一步如圖1,在HOST平臺(tái)1,也就是Windows2000上,為需要測(cè)試的模塊和子系統(tǒng)3編寫(xiě)主機(jī)抽象虛擬環(huán)境2,收集相關(guān)資料到公共資源庫(kù)4。為了實(shí)現(xiàn)的簡(jiǎn)化,測(cè)試裝置5里的測(cè)試單元54和調(diào)試單元55里與模塊和子系統(tǒng)3的消息通信接口調(diào)用了主機(jī)抽象虛擬環(huán)境2提供的消息通信API(應(yīng)用編程接口),所以需要模塊和子系統(tǒng)3的消息調(diào)用API(應(yīng)用編程接口)與測(cè)試單元54和調(diào)試單元55里采用的盡量一致,在設(shè)計(jì)測(cè)試裝置5時(shí)已考慮到這一點(diǎn),其調(diào)用的消息API(應(yīng)用編程接口)比較通用;當(dāng)模塊和子系統(tǒng)3和測(cè)試裝置5里的測(cè)試單元54和調(diào)試單元55的消息調(diào)用API(應(yīng)用編程接口)不能一致時(shí),可在主機(jī)抽象虛擬環(huán)境2里單獨(dú)為測(cè)試單元54和調(diào)試單元55提供格式一致的接口函數(shù),該接口函數(shù)可以封裝模塊和子系統(tǒng)3的消息調(diào)用API(應(yīng)用編程接口)。
第二步,如圖1和圖2,利用該裝置的測(cè)試用例編輯單元51,按照?qǐng)D2的格式,為模塊和子系統(tǒng)3編寫(xiě)測(cè)試用例,存放到測(cè)試用例池52。
第三步,如圖3,利用測(cè)試單元54里的用戶界面5411任務(wù),調(diào)用讀測(cè)試用例池5412模塊,從測(cè)試用例池52里讀取測(cè)試用例并選擇,然后通過(guò)調(diào)用測(cè)試消息發(fā)送5413模塊,從選擇的測(cè)試用例中取出測(cè)試消息,向模塊和子系統(tǒng)3發(fā)送,進(jìn)行黑盒測(cè)試,接收發(fā)送功能實(shí)體542任務(wù)接收到測(cè)試響應(yīng)消息,將最后的測(cè)試結(jié)果發(fā)送給分析單元53。
第四步,如圖4,分析單元53的接收功能實(shí)體531,分析功能實(shí)體532,記錄與顯示功能實(shí)體533,自動(dòng)、實(shí)時(shí)的對(duì)測(cè)試結(jié)果分析、顯示并記錄到文件。
第五步,如圖5,通過(guò)調(diào)試單元55里的用戶界面5511任務(wù),調(diào)用讀測(cè)試用例池5512模塊,從測(cè)試用例池52里讀取調(diào)試用的測(cè)試用例并選擇,然后通過(guò)調(diào)用測(cè)試消息發(fā)送模塊5513,從選擇的測(cè)試用例中取出測(cè)試消息,向模塊和子系統(tǒng)3發(fā)送,進(jìn)行白盒測(cè)試,接收顯示功能實(shí)體552任務(wù)接收到測(cè)試響應(yīng)消息,直接顯示消息原語(yǔ)給測(cè)試人員,實(shí)現(xiàn)對(duì)模塊內(nèi)部重要消息的跟蹤調(diào)試。第五步也可以在第三步進(jìn)行,但這兩步應(yīng)避免同時(shí)進(jìn)行。
曾利用6周的時(shí)間按照上述方法在Windows2000上開(kāi)發(fā)了測(cè)試裝置5,對(duì)一些上層協(xié)議軟件在PC(個(gè)人電腦)上進(jìn)行了試驗(yàn)測(cè)試。結(jié)果表明,該方法能有效的檢查出如消息參數(shù)錯(cuò)誤、模塊狀態(tài)轉(zhuǎn)移錯(cuò)誤、以及狀態(tài)處理錯(cuò)誤等缺陷。較以前的方法能縮短盡50%的模塊和子系統(tǒng)測(cè)試時(shí)間。同時(shí),上述模塊測(cè)試缺陷的發(fā)現(xiàn)概率能夠達(dá)到80%,有效的避免了將上述缺陷引入到系統(tǒng)測(cè)試階段。
權(quán)利要求
1.一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,基于公共資源庫(kù)對(duì)運(yùn)行于主機(jī)抽象虛擬環(huán)境上的模塊和子系統(tǒng)進(jìn)行測(cè)試,其特征在于它包括一個(gè)測(cè)試用例編輯單元、一個(gè)測(cè)試用例池、一個(gè)測(cè)試單元、一個(gè)調(diào)試單元和一個(gè)分析單元,其中測(cè)試用例池,存放測(cè)試用例的數(shù)據(jù)庫(kù);測(cè)試用例編輯單元,與測(cè)試用例池相連,主要完成測(cè)試用例的編輯、修改、檢查、管理功能,測(cè)試用例表現(xiàn)為消息的數(shù)據(jù)結(jié)構(gòu)形式,消息頭中包括測(cè)試對(duì)象信息,消息體中包括輸入?yún)?shù)信息,并可將測(cè)試用例組成一個(gè)有效的測(cè)試用例集,根據(jù)預(yù)先定義的規(guī)則,檢查測(cè)試用例的合法性,以決定是否存儲(chǔ)到測(cè)試用例池中;測(cè)試單元,與測(cè)試用例池相連,包括選擇發(fā)送功能實(shí)體和接收發(fā)送功能實(shí)體,選擇發(fā)送功能實(shí)體提供用戶界面,方便測(cè)試人員從測(cè)試用例池中選取測(cè)試用例或測(cè)試用例集,通過(guò)發(fā)送測(cè)試消息激勵(lì)模塊或子系統(tǒng),由接收發(fā)送功能實(shí)體接收模塊或子系統(tǒng)的響應(yīng),完成對(duì)測(cè)試用例指定的測(cè)試對(duì)象的測(cè)試,并把最后測(cè)試的結(jié)果發(fā)送給測(cè)試裝置的分析單元;調(diào)試單元,與測(cè)試用例池相連,包括選擇發(fā)送功能實(shí)體和接收顯示功能實(shí)體,對(duì)模塊內(nèi)重要的消息完成跟蹤功能,針對(duì)模塊或子系統(tǒng)里的調(diào)試代碼,通過(guò)編譯開(kāi)關(guān)設(shè)置激活,使模塊內(nèi)部發(fā)送和接受的重要消息透明地傳送到本調(diào)試單元,由本調(diào)試單元進(jìn)行解碼分析,從而實(shí)現(xiàn)了消息跟蹤調(diào)試功能,為了實(shí)現(xiàn)特定的調(diào)試,由選擇發(fā)送功能實(shí)體從測(cè)試用例池中讀取特定的測(cè)試用例驅(qū)動(dòng)模塊或子系統(tǒng),接收顯示功能實(shí)體直接顯示跟蹤的消息原語(yǔ)內(nèi)容;分析單元,與調(diào)試單元相連,包含三個(gè)功能實(shí)體,即接收功能實(shí)體、分析功能實(shí)體及記錄和顯示功能實(shí)體,用作對(duì)測(cè)試結(jié)果記錄進(jìn)行分析,除了完成基本功能,包括整個(gè)測(cè)試耗時(shí)、通過(guò)和未通過(guò)的測(cè)試項(xiàng)數(shù)、記錄每個(gè)未通過(guò)項(xiàng),還完成高級(jí)測(cè)試結(jié)果分析功能,包括代碼覆蓋率、關(guān)鍵函數(shù)的執(zhí)行頻率、各個(gè)模塊與函數(shù)的相對(duì)執(zhí)行時(shí)間,并可將分析結(jié)構(gòu)反饋給測(cè)試用例編輯單元,用于調(diào)整測(cè)試用例或測(cè)試用例集進(jìn)入測(cè)試用例池的準(zhǔn)則,同時(shí)將分析結(jié)果記錄到文件和進(jìn)行界面呈現(xiàn)。
2.根據(jù)權(quán)利要求1所述的一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,其特征在于所述的測(cè)試裝置與被測(cè)試的模塊或子系統(tǒng)間的通信機(jī)制采用消息形式,并且調(diào)用主機(jī)平臺(tái)上的抽象虛擬環(huán)境提供的應(yīng)用編程接口發(fā)送和接受消息,消息的格式由特定的測(cè)試用例提供。
3.根據(jù)權(quán)利要求1所述的一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,其特征在于所述的測(cè)試單元的測(cè)試是串行進(jìn)行的,即當(dāng)前一個(gè)測(cè)試用例完成時(shí),才能進(jìn)行下一個(gè)測(cè)試,或當(dāng)前的測(cè)試用例集完成后,才能進(jìn)行下一個(gè)測(cè)試用例集的測(cè)試。
4.根據(jù)權(quán)利要求1所述的一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,其特征在于所述的測(cè)試包括由測(cè)試單元實(shí)現(xiàn)的黑盒測(cè)試和由調(diào)試單元實(shí)現(xiàn)的白盒測(cè)試兩種,且對(duì)于一個(gè)測(cè)試用例驅(qū)動(dòng)的測(cè)試是否完成的判斷,可由調(diào)試單元自動(dòng)完成或者由測(cè)試人員靈活指定。
全文摘要
一種基于主機(jī)平臺(tái)的嵌入式模塊和子系統(tǒng)的通用測(cè)試裝置,基于公共資源庫(kù)對(duì)運(yùn)行于主機(jī)抽象虛擬環(huán)境上的模塊和子系統(tǒng)進(jìn)行測(cè)試,它包括一個(gè)測(cè)試用例編輯單元、一個(gè)測(cè)試用例池、一個(gè)測(cè)試單元、一個(gè)調(diào)試單元和一個(gè)分析單元,本發(fā)明將本來(lái)需要下載到硬件系統(tǒng)中才能進(jìn)行的模塊和子系統(tǒng)測(cè)試,無(wú)縫的移植到公共Host(主機(jī))平臺(tái)上進(jìn)行,減少模塊測(cè)試對(duì)具體的硬件和底層操作系統(tǒng)的依賴,并且最大限度對(duì)所有的模塊和子系統(tǒng),提供一個(gè)基于公共Host平臺(tái)的通用的測(cè)試裝置,從而最大限度的避免測(cè)試工具的重復(fù)開(kāi)發(fā),縮短模塊和子系統(tǒng)的測(cè)試周期,提高軟件開(kāi)發(fā)效率。
文檔編號(hào)G06F11/36GK1485740SQ0213709
公開(kāi)日2004年3月31日 申請(qǐng)日期2002年9月23日 優(yōu)先權(quán)日2002年9月23日
發(fā)明者張建林, 曹鵬志, 胡國(guó)雄, 劉澤紅, 肖振民, 候文權(quán) 申請(qǐng)人:上海貝爾有限公司