亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

針對軟件構(gòu)件的自動化測試方法

文檔序號:6331130閱讀:305來源:國知局
專利名稱:針對軟件構(gòu)件的自動化測試方法
技術(shù)領(lǐng)域
針對軟件構(gòu)件的自動化測試方法屬于網(wǎng)絡(luò)設(shè)備的軟件構(gòu)件的自動化測試方法領(lǐng) 域,
背景技術(shù)
構(gòu)件技術(shù)的核心思想是支持開發(fā)一種對外提供標(biāo)準(zhǔn)接口的可復(fù)用的二進(jìn)制模塊 (稱為構(gòu)件),并用這些模塊來組合構(gòu)造一個完整的軟件系統(tǒng),由于構(gòu)件接口的標(biāo)準(zhǔn)性,不 同開發(fā)商開發(fā)的構(gòu)件能夠彼此協(xié)作,達(dá)到無縫集成的目的,構(gòu)件技術(shù)能夠很好地解決當(dāng)前 的軟件系統(tǒng)暴露出的缺乏可伸縮性和互操作性的缺點(diǎn),并為減輕開發(fā)工作量、提高軟件復(fù) 用率提供了一個很好的解決途徑,基于構(gòu)件(Component-Based)的軟件很可能成為未來系 統(tǒng)的建構(gòu)基礎(chǔ),構(gòu)件及其相關(guān)技術(shù),包括支持構(gòu)件集成的軟件體系結(jié)構(gòu)技術(shù)以及特定領(lǐng)域 的構(gòu)件系統(tǒng)設(shè)計技術(shù)等成為當(dāng)前軟件領(lǐng)域的研究熱點(diǎn),構(gòu)件是大粒度、相對獨(dú)立、可替換的系統(tǒng)構(gòu)成部分,完成一個定義良好的系統(tǒng)結(jié)構(gòu) 中的某項清晰的功能,它由一組接口來輸出其功能,并可支持運(yùn)行態(tài)綁定,構(gòu)件可以在不同的環(huán)境中使用,也可在同一環(huán)境中被復(fù)合使用,因此構(gòu)件需要提 供清楚的接口規(guī)范與對應(yīng)環(huán)境進(jìn)行交互,構(gòu)件的封裝、設(shè)計與外部表征盡量分離,構(gòu)件對外 發(fā)生作用或構(gòu)件間的交互,都是通過規(guī)范定義的接口進(jìn)行,構(gòu)件使用者只需要知道構(gòu)件的 接口,而不關(guān)心其內(nèi)部實(shí)現(xiàn),利用針對構(gòu)件的自動化測試方法進(jìn)行對構(gòu)件的自動化測試正 是利用構(gòu)件的這種規(guī)范性,實(shí)現(xiàn)了對各種構(gòu)件用歸一化的方法進(jìn)行測試,在這個過程中,可 以極大降低測試過程中人工的勞動量,使整個測試過程在測試人員僅給出入口數(shù)據(jù)和出口 數(shù)據(jù)的條件下,系統(tǒng)自動完成。

發(fā)明內(nèi)容
在網(wǎng)絡(luò)設(shè)備的軟件構(gòu)件環(huán)境下,利用針對構(gòu)件的自動化測試方法,依據(jù)以下步驟 實(shí)現(xiàn)本發(fā)明的目的在于1、針對軟件構(gòu)件的自動化測試方法,其特征在于,是一種在可重構(gòu)路由器內(nèi)用一 個自動化測試模塊對路由管理構(gòu)件進(jìn)行自動化測試的方法,步驟如下步驟(1),構(gòu)造模板庫,該模板庫含有用于向待測試的路由管理構(gòu)件輸入路由信息的路由協(xié)議構(gòu)件候選 模板以及用于接收所述待測試路由構(gòu)件輸出的經(jīng)篩選路由信息的路由轉(zhuǎn)發(fā)構(gòu)件候選模板, 以下簡稱輸入候選模板和輸出候選模板,步驟如下步驟(1. 1),構(gòu)造候選模板,根據(jù)所述路由協(xié)議構(gòu)件和待測試路由管理構(gòu)件之間以及根據(jù)所述待測試路由管 理構(gòu)件和路由轉(zhuǎn)發(fā)構(gòu)件之間各自外層封裝上有限幾種構(gòu)件交互形式,抽象化為函數(shù)方法, 作為各自對應(yīng)的候選模板,
步驟(1. 2),構(gòu)造模板變量,提取每一個所述候選模板中的參數(shù),經(jīng)重新命名后,使所選參數(shù)在該候選模板中 具有唯一性,并作為模板參數(shù)寫入所選候選模板內(nèi),并保存以便按用戶提供的可擴(kuò)展宏語 言XML文本,以下簡稱XML文本,以控制對模板變量的填寫,步驟(1. 3),把步驟(1. 2)的候選模板保存在文件夾template下,并把對應(yīng)該候選 模板的模板變量保存在文件模板名稱fillin中,步驟(2),生成測試輸入代碼和測試輸出代碼,步驟(2. 1),生成測試輸入代碼測試,測試人員向所述自動化測試模板輸入針對所述待測試路由管理構(gòu)件的XML文件, 在保存后,生成測試輸入代碼,步驟(2. 1. 1),從所述XML文件中得到用于生成測試輸入代碼的含有關(guān)鍵字input 及其后部分的input文件部分與該其后部分包括關(guān)鍵字template」!!,lib, inlet和 fillin_in,其中,該關(guān)鍵字templatejn指定要寫入的輸入候選模板,簡稱輸入模板,該關(guān) 鍵字lib指定在在結(jié)構(gòu)時需要額外添加的庫文件,該關(guān)鍵字inlet指定該待測路由管理構(gòu) 件的接入口,該關(guān)鍵字fillin_in指明要在該輸入模板中填入的模板參數(shù),格式由該關(guān)鍵 字templatejn指定的輸入模板來決定,步驟(2. 1. 2),用測試輸入程序讀取所述input文件部分的全部內(nèi)容,從所選模板 庫中讀取對應(yīng)的輸入候選模板,填寫模板變量,形成作為測試輸入代碼用的input, c文件, 保存到forTest文件中,步驟(2. 2),生成測試輸出代碼,步驟(2.2. 1),按步驟(2.1)和步驟(2.1.1)所述方法生成測試輸出代碼的 output文件部分,所述output文件部分包括關(guān)鍵字output及其后部分,該其后部分包括關(guān) 鍵字template_out,outlet和f illin_out,其中,關(guān)鍵字template_out指明要填寫的輸出 模板,關(guān)鍵字outlet指明所述待測試路由管理構(gòu)件的接口,關(guān)鍵字f illin_0ut指明要填寫 的輸出模板的參數(shù),步驟(2. 2. 2),用測試輸出程序讀取所述output文件部分的全部內(nèi)容,從所述模 板庫中選擇對應(yīng)的輸出模板,填寫模板參數(shù)形成output. C文件作為測試輸出代碼保存在 所述forTest文件中,步驟(3),從所述XML文件中判斷是否含有關(guān)鍵字result,以進(jìn)行測試結(jié)果與所述 期望測試結(jié)果比較,步驟(3. 1),若有關(guān)鍵字result,則依照步驟(3. 1. 1)到(3. 1. 3),步驟(3. 1. 1),從所述關(guān)鍵字result的內(nèi)容中取得指定的期望測試結(jié)果,并保存 到文件夾resultfile下的文件giveresult中,步驟(3. 1.2),把所述輸入測試代碼輸入到所述待測試路由管理器中,經(jīng)篩選 后,把用所述的測試輸出代碼中的測試結(jié)果存放到內(nèi)置的緩沖器中,保存到所選文件夾 resultfile 下的文件 testresult 中,步驟(3. 1. 3),把所選測試結(jié)果與期望測試結(jié)果進(jìn)行對比,若兩者完全相同,則通過測試,若兩者不同,則判定未通過測試,
步驟(3. 2),若所述XML文件中無關(guān)鍵字result,則讀取該XML文件中所選待測試 路由管理構(gòu)件接收數(shù)據(jù)中結(jié)構(gòu)體中的變量的類型,送入所選待測試路由管理構(gòu)件中,經(jīng)所 選測試輸出代碼得到測試結(jié)果,然后把所選一系列測試輸入?yún)?shù)和對應(yīng)的測試結(jié)果同時返 回所選測試人員,步驟⑷,生成測試入口程序,根據(jù)所述的XML,確定待測試構(gòu)件的入口函數(shù)名與出口函數(shù)名,查找待測試構(gòu) 件存放的component文件夾,讀取其中的.h文件名,加入到模板中,生成測試入口程序 entrance, c并保存至Ij forTest文件夾下,步驟⑶,生成makefile文件,把已得到的所述測試輸入代碼,測試輸出代碼,測試結(jié)果對比代碼,測試入口程 序的代碼以及所述component文件中所述待測試路由管理構(gòu)件的源代碼進(jìn)行組合,生成 makefile 文件,步驟(5. 1),把步驟(5)中所述所有文件拷貝到所述文件夾forTest下,步驟(5.2),讀取步驟(5. 1)中的 input, c,output, c 和 entrance, c 文件,并保存 入一個鏈表中,步驟(5. 3),從輸入的所述XML文件中,判斷所述關(guān)鍵字lib后的內(nèi)容步驟(5.3. 1),若關(guān)鍵字lib后為空,則用shell控制根據(jù)步驟(5.2)中所述的 各.c文件的名稱執(zhí)行文件makefile,步驟(5.3.2),若關(guān)鍵字lib后為非空,且為pthread庫,在編譯時加入由該 pthread 庫,步驟(6),根據(jù)步驟(5.3)形成的文件makefile,生成對所述待測試路由管理構(gòu)件 的測試程序,執(zhí)行并觀察給出的測試結(jié)果。本發(fā)明的優(yōu)點(diǎn)在于簡化了測試過程,使測試工作變得簡單,方便,并更高程度上保證了測試的正確 性,


圖1.根據(jù)用戶的輸入文件產(chǎn)生測試的輸入與輸出代碼;圖2.進(jìn)行結(jié)果與期望輸出的對比;圖 3.生成 makefile 文件;圖4.針對構(gòu)件的自動化測試方法結(jié)構(gòu)具體實(shí)施例方式針對在可重構(gòu)路由器軟件開發(fā)環(huán)境下,為驗證由第三方提供的構(gòu)件的正確性,提 出的一種規(guī)范、簡化的測試方法,此方法可以達(dá)到簡化測試過程的目的,針對構(gòu)件的自動化測試方法,在具體的實(shí)施過程中,分為由人完成的工作和由自 動化測試工具完成的工作,共兩個部分自動化測試工具為將一部分自動化測試方法抽象 出來,并用C語言實(shí)現(xiàn)的測試工具,自動化測試工具的內(nèi)部實(shí)現(xiàn)邏輯為自動化測試方法的 一部分,
我們針對在可重構(gòu)路由器軟件開發(fā)環(huán)境下的路由管理軟件,按照“針對構(gòu)件的自 動化測試方法”,即本發(fā)明中提出的測試方法,指出由人完成的工作,和自動化測試工具實(shí) 現(xiàn)內(nèi)部邏輯完成的工作,完成對路由管理構(gòu)件的測試,路由管理構(gòu)件是這樣的構(gòu)件它接受由路由協(xié)議構(gòu)件產(chǎn)生的路由信息,保存并篩 選路由信息,從得到的路由信息中選出最適合信息,發(fā)送給路由轉(zhuǎn)發(fā)構(gòu)件。針對路由管理構(gòu)件,具體測試過程如下1.針對路由管理構(gòu)件,自動生成測試輸入和測試輸出代碼,為了達(dá)到自動生成測試輸入代碼和測試輸出代碼的目的,需要測試人員提供XML, 利用自動化測試工具分析XML,從中獲得相關(guān)信息,這些信息根據(jù)關(guān)鍵字分成三部分,包括 用來生成測試輸入代碼的input文本部分,用來生成測試輸出代碼的output文本部分,自 動化測試工具根據(jù)關(guān)鍵字input及其后部分,從模板庫中選擇適合做路由管理構(gòu)件input 部分的模板,用測試人員提供的XML中提供的信息填充模板,生成測試輸入代碼input, c,自動化測試工具根據(jù)關(guān)鍵字output及其后部分,從模板庫中選擇適合做路由管理構(gòu)件 output部分的模板,用測試人員提供的XML中提供的信息填充模板,生成測試輸出代碼 output, c,將生成的input, c以及output, c保存在名為forTest的文件夾下,以備后續(xù)使 用;2.進(jìn)行結(jié)果與期望輸出的對比,在這一步驟中,將以兩種方式進(jìn)行結(jié)果的比對,方式一如果在測試人員提供的XML中使用了關(guān)鍵字result,方法如下測試工具需要重新讀取測試人員輸入的XML,將測試人員輸入的XML中關(guān)鍵字 為input后的輸入數(shù)據(jù),經(jīng)測試輸入代碼傳入路由管理構(gòu)件,經(jīng)過路由管理構(gòu)件的邏輯, 經(jīng)測試輸出代碼,最終生成測試結(jié)果,保存在接收緩沖區(qū)中,重新讀取XML,讀取關(guān)鍵字為 result其后的部分,此部分的內(nèi)容為測試人員提供的期望輸出,將測試緩沖區(qū)中的內(nèi)容與 期望輸出進(jìn)行比較,如果緩沖區(qū)中的內(nèi)容與期望輸出結(jié)果內(nèi)容完全相同,則提示路由管理 構(gòu)件通過測試,如果內(nèi)容不相同,則提示路由管理構(gòu)件沒有通過測試,方式二 如果在測試人員提供的XML中沒有使用關(guān)鍵字result,方法如下讀取XML中的待測試構(gòu)件的接收數(shù)據(jù)的結(jié)構(gòu)體定義,根據(jù)結(jié)構(gòu)體中變量的類型, 隨機(jī)產(chǎn)生一系列的測試數(shù)據(jù),將這些測試數(shù)據(jù)經(jīng)測試輸入代碼傳入路由管理構(gòu)件,經(jīng)過路 由管理構(gòu)件的邏輯,經(jīng)測試輸出代碼,最終得到結(jié)果,將隨機(jī)產(chǎn)生的測試數(shù)據(jù)與得到的對應(yīng) 結(jié)果同時返回給測試人員,供測試人員自行推斷測試通過與否;3.生成測試入口程序,重新讀取測試人員提供的XML,在關(guān)鍵字input后找到關(guān)鍵字inlet,以及在關(guān)鍵 字output后找到關(guān)鍵字outlet,確定為待測試構(gòu)件,即路由管理構(gòu)件指定的入口函數(shù)和出 口函數(shù),將兩個函數(shù)名填入構(gòu)件測試入口模板,生成測試入口程序entrance, c,并保存到 forTest文件夾下;4.生成 makefile 文件,至此,在forTest文件夾下已經(jīng)保存了由步驟1生成的input, c,output, c,文件, 由步驟3生成的entrance, c文件,路由管理構(gòu)件的源代碼保存在名為component的文件夾 下(待測試構(gòu)件的存放位置),將在component文件夾下的路由管理構(gòu)件的源代碼拷貝到forTest文件夾下,讀取forTest文件夾信息,得到forTest文件夾下所有文件的信息,這 些信息包括文件input, c, input, h, output, c, output, h, entrance, c以及路由管理構(gòu)件源 文件,提取所有.c文件的名稱,用shell腳本根據(jù)提取的.c文件的名稱,生成makefile文 件,在生成makefile文件的過程中,需要再次讀取測試人員提供的XML,尋找關(guān)鍵字lib后 面的內(nèi)容,如果需要在編譯時加入特殊的庫,則在關(guān)鍵字lib后指定,如果需要多個庫,則 用逗號分隔,在路由管理構(gòu)件中,需要在編譯時加入Pthread庫,所以在關(guān)鍵字lib后指定 庫名為pthread,生成編譯時加入pthread庫編譯的makefile文件;5.生成測試用例執(zhí)行程序并得到測試結(jié)果,運(yùn)行makefile,編譯文件,生成針對路由管理構(gòu)件的測試程序,替換到當(dāng)前的進(jìn) 程,并執(zhí)行測試程序,觀察給出的測試結(jié)果;這樣就完成了針對路由管理構(gòu)件的自動化測試;在網(wǎng)絡(luò)設(shè)備的軟件構(gòu)件環(huán)境下,針對構(gòu)件的自動化測試,依據(jù)以下設(shè)計步驟實(shí) 現(xiàn)步驟(1),構(gòu)造模板庫由于在網(wǎng)絡(luò)設(shè)備的軟件構(gòu)件環(huán)境下,在實(shí)現(xiàn)構(gòu)件功能段代碼的外層對構(gòu)件實(shí)現(xiàn)了 一層封裝,提供了幾個知名接口,這層封裝為用socket方式實(shí)現(xiàn),并在此基礎(chǔ)上完成了構(gòu) 件間的交互,所以構(gòu)件的接口類型可歸納為實(shí)現(xiàn)封裝的類型,步驟(1. 1),構(gòu)造候選模板,由于在實(shí)現(xiàn)構(gòu)件功能段代碼的外層,使用了知名接口的方式,采用有限的幾種構(gòu) 件間交互的形式完成了構(gòu)件的交互,所以可以將這幾種交互形式作為候選模板,步驟(1. 2),構(gòu)造模板變量,針對每一個模板,將其中參數(shù)部分提取出來,并進(jìn)行重新命名,使參數(shù)名在模板中 唯一,并作為模板變量重新寫入模板,將每個模板中的模板變量保存到一個新文件中,以用 來根據(jù)用戶提供的XML,控制對模板變量的填寫,步驟(1.3),命名與存放,將候選模板保存到名為template的文件夾下,并將對應(yīng)每個模板的,保存模板變 量的文件命名為模板名_fillin,以用來和模板對應(yīng),保存到fillin文件夾下,步驟(2),生成測試輸入和測試輸出,在實(shí)現(xiàn)構(gòu)件功能段代碼的外層對構(gòu)件實(shí)現(xiàn)了一層封裝,提供了幾個知名接口,這 層封裝為用socket方式實(shí)現(xiàn),并在此基礎(chǔ)上完成了構(gòu)件間的交互,所以構(gòu)件的接口類型可 歸納為實(shí)現(xiàn)封裝的類型,步驟(2. 1),生成測試輸入代碼,在這一步,測試人員需要針對待測試的構(gòu)件,提供XML,在XML中,在關(guān)鍵字input 下的內(nèi)容即為測試人員針對此構(gòu)件,在此步驟中提供的內(nèi)容,在input關(guān)鍵字后,繼續(xù)提供 了幾個關(guān)鍵字,分別為 template_in,lib, inlet, fillin_in.其中 template_in 關(guān)鍵字指 定要填寫的模板,lib關(guān)鍵字指定在編譯時需要添加的庫文件,inlet關(guān)鍵字指定待測試構(gòu) 件入接口的名稱,fillin_in關(guān)鍵字指明其下內(nèi)容為要在模板中填入模板參數(shù)的內(nèi)容,具體 填寫內(nèi)容的格式根據(jù)templatejn指定的要填寫的模板名決定,所有模板保存在fillin_ in文件夾下,以供程序選擇,生成測試輸入程序讀取這些關(guān)鍵字及其后的內(nèi)容,籍此選擇相應(yīng)的模板,并填寫其中的模板變量,最終生成input, c文件,此文件為測試輸入代碼,將 input, c文件保存到forTest文件夾下,步驟(2. 2),生成測試輸出代碼,在這一步,測試人員需要針對待測試的構(gòu)件,提供XML,在XML中,在關(guān)鍵字output 下的內(nèi)容即為測試人員針對此構(gòu)件,在此步驟中提供的內(nèi)容,在output關(guān)鍵字下,繼續(xù)提 供了幾個關(guān)鍵字,分別為template_out,outlet, fllin_out.其中outlet關(guān)鍵字指明待測 試構(gòu)件的名稱,template_out關(guān)鍵字指明要填寫模板的模板名,fillin_out關(guān)鍵字指明它 之下內(nèi)容為要填寫輸出模板的參數(shù)。具體如何填寫方法同填寫輸入文本相應(yīng)部分內(nèi)容相 同,最終生成output, c文件,此文件為測試輸出代碼,將output, c文件保存到forTest文 件夾下,步驟(3),進(jìn)行結(jié)果與期望輸出的對比,在這一步驟中,將以兩種方式進(jìn)行結(jié)果對比,步驟(3. 1),在測試人員提供的XML中含有result關(guān)鍵字,在這種方式中,針對構(gòu)件的自動化測試方法期待測試人員提供給定的輸入與輸入 數(shù)據(jù)對應(yīng)的輸出結(jié)果,并將兩者進(jìn)行比較,步驟(3. 1. 1),取得用戶提供的期望輸出,測試人員針對待測試構(gòu)件,提供XML,在XML中,在input關(guān)鍵字下的內(nèi)容中提供測 試人員的輸入數(shù)據(jù),在result關(guān)鍵字下的內(nèi)容中,提供對應(yīng)于輸入數(shù)據(jù)給出的期望輸出數(shù) 據(jù),讀取這個期望輸出數(shù)據(jù),并保存到resultfile文件夾下名為giveresult的文件中,步驟(3. 1. 2),取得真實(shí)輸出結(jié)果,將關(guān)鍵字input下測試人員給出的輸入數(shù)據(jù),通過測試輸入代碼傳入待測試構(gòu) 件,經(jīng)過待測試構(gòu)件的邏輯,存儲到測試輸出的緩沖區(qū)中,讀取緩沖區(qū)的內(nèi)容,將結(jié)果保存 到resultfile文件夾下名為testresult的文件中,步驟(3. 1. 3),對比測試結(jié)果與期望結(jié)果,將測試人員提供的期望輸出結(jié)果與真實(shí)輸出結(jié)果分別保存在兩個容器中,對兩個 容器中的內(nèi)容進(jìn)行比較,如果兩個容器中的內(nèi)容完全相同,則說明真實(shí)輸出結(jié)果與測試人 員提供的期望輸出結(jié)果相同,說明構(gòu)件通過測試,如果兩個容器中的內(nèi)容不完全相同,則說 明真實(shí)輸出結(jié)果與測試人員提供的期望輸出結(jié)果不相同,說明構(gòu)件沒有通過測試,步驟(3. 2),在測試人員提供的XML中不含有result關(guān)鍵字,在這種方式中,測試人員沒有提供測試輸入程序,也沒有給出測試輸出程序,在測 試人員提供的XML中不含有result關(guān)鍵字時,讀取XML中的待測試構(gòu)件的接收數(shù)據(jù)的結(jié)構(gòu) 體定義,根據(jù)結(jié)構(gòu)體中變量的類型,隨機(jī)產(chǎn)生一系列的測試數(shù)據(jù),將這些測試數(shù)據(jù)經(jīng)測試輸 入代碼傳入路由管理構(gòu)件,經(jīng)過路由管理構(gòu)件的邏輯,經(jīng)測試輸出代碼,最終得到結(jié)果,將 隨機(jī)產(chǎn)生的測試數(shù)據(jù)與得到的對應(yīng)結(jié)果同時返回給測試人員,供測試人員自行推斷測試通 過與否,步驟(4),生成測試入口程序,在這一步驟中,需要重新讀取測試人員提供的XML,在input關(guān)鍵字后找到關(guān)鍵 字inlet,確定其后參數(shù)名為待測試構(gòu)件的入口函數(shù)名,在output關(guān)鍵字后找到關(guān)鍵字 outlet,確定其后參數(shù)名為待測試構(gòu)件的出口函數(shù)名,查找待測試構(gòu)件存放的component文件夾,讀取其中的.h文件名,加入到入口函數(shù)模板的#include “... ”中,把入口函數(shù)名 和出口函數(shù)名添加入到測試入口模板的模板變量中,生成測試入口程序entrance, c.并保 存到forTest文件夾下,步驟(δ),生成makefile 文件,在此步驟中,將把步驟2產(chǎn)生的測試輸入代碼,測試輸出代碼,步驟3產(chǎn)生的結(jié)果 對比代碼,步驟4產(chǎn)生的測試入口程序代碼以及待測試構(gòu)件源代碼,進(jìn)行組合,為它們生成 makefile 文件,步驟(5. 1),拷貝所有需要文件至forTest文件夾下,在此步驟中,步驟2產(chǎn)生的測試輸入代碼,測試輸出代碼,與步驟3產(chǎn)生的結(jié)果比 對代碼以及步驟4生成的測試入口程序代碼均已保存到forTest文件夾下,還需要拷貝的 僅為待測試構(gòu)件代碼,將待測試構(gòu)件代碼從component文件夾下拷貝至forTest文件夾下,步驟(5. 2),得到待測試文件夾下所有的*. c源文件名稱,在進(jìn)行此步驟前,已經(jīng)由步驟5. 1保證了在forTest文件夾下存放了所有需要進(jìn) 行編譯的代碼。讀取文件夾信息,得到這個文件夾下所有文件的名稱。提取并保存所有*. c 文件的名稱到鏈表中,步驟(5. 3),根據(jù)得到的源文件名稱自動生成makefile,按照makefile的格式,根據(jù)步驟5. 2中保存的鏈表中的內(nèi)容,自動生成makefile. 這個過程由shell腳本完成,在生成makefile的過程中,如果測試人員需要在編譯過程中 加入特定的庫,再會在提供的XML中以關(guān)鍵字lib指定要加入的庫,讀取XML中l(wèi)ib后的相 關(guān)內(nèi)容,即可了解編譯過程中的特殊需要,自動完成makefile的編寫工作,步驟(6),生成測試用例執(zhí)行代碼,利用在步驟5中生成的makefile文件,執(zhí)行make,生成測試用例可執(zhí)行程序,替 換當(dāng)前進(jìn)程,執(zhí)行測試用例程序。完成將測試輸入數(shù)據(jù)通過測試輸入代碼,執(zhí)行待測試構(gòu)件 邏輯,經(jīng)過測試輸出代碼,保存到測試輸出緩沖區(qū)中的過程,如果在測試人員提供的XML中 含有result關(guān)鍵字,則比對給定的測試輸出與實(shí)際測試輸出結(jié)果,給出測試是否通過的提 示,如果不含有result關(guān)鍵字,則給出測試輸入數(shù)據(jù)與測試輸出數(shù)據(jù),讓測試人員自行判 斷輸出結(jié)果,至此,完成了利用針對構(gòu)件的自動測試方法,測試構(gòu)件的過程。
權(quán)利要求
針對軟件構(gòu)件的自動化測試方法,其特征在于,是一種在可重構(gòu)路由器內(nèi)用一個自動化測試模塊對路由管理構(gòu)件進(jìn)行自動化測試的方法,步驟如下步驟(1),構(gòu)造模板庫,該模板庫含有用于向待測試的路由管理構(gòu)件輸入路由信息的路由協(xié)議構(gòu)件候選模板以及用于接收所述待測試路由構(gòu)件輸出的經(jīng)篩選路由信息的路由轉(zhuǎn)發(fā)構(gòu)件候選模板,以下簡稱輸入候選模板和輸出候選模板,步驟如下步驟(1.1),構(gòu)造候選模板,根據(jù)所述路由協(xié)議構(gòu)件和待測試路由管理構(gòu)件之間以及根據(jù)所述待測試路由管理構(gòu)件和路由轉(zhuǎn)發(fā)構(gòu)件之間各自外層封裝上有限幾種構(gòu)件交互形式,抽象化為函數(shù)方法,作為各自對應(yīng)的候選模板,步驟(1.2),構(gòu)造模板變量,提取每一個所述候選模板中的參數(shù),經(jīng)重新命名后,使所選參數(shù)在該候選模板中具有唯一性,并作為模板參數(shù)寫入所選候選模板內(nèi),并保存以便按用戶提供的可擴(kuò)展宏語言XML文本,以下簡稱XML文本,以控制對模板變量的填寫,步驟(1.3),把步驟(1.2)的候選模板保存在文件夾template下,并把對應(yīng)該候選模板的模板變量保存在文件模板名稱fillin中,步驟(2),生成測試輸入代碼和測試輸出代碼,步驟(2.1),生成測試輸入代碼測試,測試人員向所述自動化測試模板輸入針對所述待測試路由管理構(gòu)件的XML文件,在保存后,生成測試輸入代碼,步驟(2.1.1),從所述XML文件中得到用于生成測試輸入代碼的含有關(guān)鍵字input及其后部分的input文件部分與該其后部分包括關(guān)鍵字template_in,lib,inlet和fillin_in,其中,該關(guān)鍵字template_in指定要寫入的輸入候選模板,簡稱輸入模板,該關(guān)鍵字lib指定在在結(jié)構(gòu)時需要額外添加的庫文件,該關(guān)鍵字inlet指定該待測路由管理構(gòu)件的接入口,該關(guān)鍵字fillin_in指明要在該輸入模板中填入的模板參數(shù),格式由該關(guān)鍵字template_in指定的輸入模板來決定,步驟(2.1.2),用測試輸入程序讀取所述input文件部分的全部內(nèi)容,從所選模板庫中讀取對應(yīng)的輸入候選模板,填寫模板變量,形成作為測試輸入代碼用的input.c文件,保存到forTest文件中,步驟(2.2),生成測試輸出代碼,步驟(2.2.1),按步驟(2.1)和步驟(2.1.1)所述方法生成測試輸出代碼的output文件部分,所述output文件部分包括關(guān)鍵字output及其后部分,該其后部分包括關(guān)鍵字template_out,outlet和fillin_out,其中,關(guān)鍵字template_out指明要填寫的輸出模板,關(guān)鍵字outlet指明所述待測試路由管理構(gòu)件的接口,關(guān)鍵字fillin_out指明要填寫的輸出模板的參數(shù),步驟(2.2.2),用測試輸出程序讀取所述output文件部分的全部內(nèi)容,從所述模板庫中選擇對應(yīng)的輸出模板,填寫模板參數(shù)形成output.c文件作為測試輸出代碼保存在所述forTest文件中,步驟(3),從所述XML文件中判斷是否含有關(guān)鍵字result,以進(jìn)行測試結(jié)果與所述期望測試結(jié)果比較,步驟(3.1),若有關(guān)鍵字result,則依照步驟(3.1.1)到(3.1.3),步驟(3.1.1),從所述關(guān)鍵字result的內(nèi)容中取得指定的期望測試結(jié)果,并保存到文件夾resultfile下的文件giveresult中,步驟(3.1.2),把所述輸入測試代碼輸入到所述待測試路由管理器中,經(jīng)篩選后,把用所述的測試輸出代碼中的測試結(jié)果存放到內(nèi)置的緩沖器中,保存到所選文件夾resultfile下的文件testresult中,步驟(3.1.3),把所選測試結(jié)果與期望測試結(jié)果進(jìn)行對比,若兩者完全相同,則通過測試,若兩者不同,則判定未通過測試,步驟(3.2),若所述XML文件中無關(guān)鍵字result,則讀取該XML文件中所選待測試路由管理構(gòu)件接收數(shù)據(jù)中結(jié)構(gòu)體中的變量的類型,送入所選待測試路由管理構(gòu)件中,經(jīng)所選測試輸出代碼得到測試結(jié)果,然后把所選一系列測試輸入?yún)?shù)和對應(yīng)的測試結(jié)果同時返回所選測試人員,步驟(4),生成測試入口程序,根據(jù)所述的XML,確定待測試構(gòu)件的入口函數(shù)名與出口函數(shù)名,查找待測試構(gòu)件存放的component文件夾,讀取其中的.h文件名,加入到模板中,生成測試入口程序entrance.c并保存到forTest文件夾下,步驟(5),生成makefile文件,把已得到的所述測試輸入代碼,測試輸出代碼,測試結(jié)果對比代碼,測試入口程序的代碼以及所述component文件中所述待測試路由管理構(gòu)件的源代碼進(jìn)行組合,生成makefile文件,步驟(5.1),把步驟(5)中所述所有文件拷貝到所述文件夾forTest下,步驟(5.2),讀取步驟(5.1)中的input.c,output.c和entrance.c文件,并保存入一個鏈表中,步驟(5.3),從輸入的所述XML文件中,判斷所述關(guān)鍵字lib后的內(nèi)容步驟(5.3.1),若關(guān)鍵字lib后為空,則用shell控制根據(jù)步驟(5.2)中所述的各c文件的名稱執(zhí)行文件makefile,步驟(5.3.2),若關(guān)鍵字lib后為非空,且為pthread庫,在編譯時加入由該pthread庫,步驟(6),根據(jù)步驟(5.3)形成的文件makefile,生成對所述待測試路由管理構(gòu)件的測試程序,執(zhí)行并觀察給出的測試結(jié)果。
全文摘要
針對軟件構(gòu)件的自動化測試方法屬于可重構(gòu)網(wǎng)絡(luò)技術(shù)的領(lǐng)域,其特征在于,是一種規(guī)范的測試構(gòu)件的方法,含有以下的步驟生成測試輸入和測試輸出,進(jìn)行結(jié)果與期望輸出的對比,自動生成makefile文件,生成測試用例執(zhí)行代碼,執(zhí)行并觀察測試結(jié)果。本發(fā)明是具有簡化了測試過程,使測試工作變得簡單,方便,并更高程度上保證了測試的正確性的優(yōu)點(diǎn)。
文檔編號G06F11/36GK101950269SQ201010266770
公開日2011年1月19日 申請日期2010年8月30日 優(yōu)先權(quán)日2010年8月30日
發(fā)明者徐恪, 賈鴛鴛, 馬東超 申請人:清華大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1