一種基于反射的自動(dòng)化測(cè)試方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種自動(dòng)化測(cè)試領(lǐng)域技術(shù),特別是一種基于反射的自動(dòng)化測(cè)試方法。
【背景技術(shù)】
[0002] 傳統(tǒng)的自動(dòng)化測(cè)試領(lǐng)域,測(cè)試用例一般通過(guò)直接編寫腳本來(lái)描述與執(zhí)行。但基于 腳本的開發(fā)語(yǔ)法較為復(fù)雜,且不直觀、可維護(hù)性較差。與腳本相比,圖形化的測(cè)試用例開發(fā) 方法更為簡(jiǎn)單快捷、直觀和易維護(hù)。圖形化測(cè)試用例設(shè)計(jì)一般由測(cè)試用例設(shè)計(jì)人員通過(guò)組 合各種測(cè)試單元模塊來(lái)完成,如何驅(qū)動(dòng)測(cè)試用例的執(zhí)行,是一個(gè)關(guān)鍵問(wèn)題。
[0003] 專利"一種自動(dòng)化測(cè)試系統(tǒng)及測(cè)試腳本的生成和運(yùn)行方法"(申請(qǐng)?zhí)?CN200710086936)提出一種圖形化界面供測(cè)試人員選擇測(cè)試動(dòng)作(相當(dāng)于測(cè)試單元模塊), 并設(shè)置相應(yīng)的參數(shù),然后通過(guò)測(cè)試腳本生成模塊提取和顯示測(cè)試動(dòng)作庫(kù)中包含的測(cè)試動(dòng)作 信息,并根據(jù)選定的測(cè)試動(dòng)作和設(shè)置的測(cè)試動(dòng)作的參數(shù)生成測(cè)試腳本,最終執(zhí)行測(cè)試腳本。 這種將測(cè)試單元模塊序列翻譯成中間腳本,再驅(qū)動(dòng)腳本的執(zhí)行的方法具有代表性。但該方 法不足之處在于需要處理測(cè)試動(dòng)作(測(cè)試單元模塊)到測(cè)試腳本的映射關(guān)系,生成語(yǔ)法正 確的腳本,比較復(fù)雜。同時(shí),測(cè)試用例的執(zhí)行實(shí)際是通過(guò)執(zhí)行測(cè)試腳本實(shí)現(xiàn)的,需要事先開 發(fā)相應(yīng)的腳本函數(shù),并依靠腳本解釋器來(lái)解釋執(zhí)行腳本,擴(kuò)展性較差、復(fù)雜度較高,且解釋 執(zhí)行的效率較低。
[0004] 專利"一種基于測(cè)試原子的衛(wèi)星自動(dòng)化測(cè)試方法"(申請(qǐng)?zhí)朇N201010597273. 0)提 出了一種基于測(cè)試原子的衛(wèi)星自動(dòng)化測(cè)試方法,通過(guò)對(duì)測(cè)試用例的抽象提煉,歸納出可獨(dú) 立執(zhí)行的最小測(cè)試單元,把這種測(cè)試單元定義為測(cè)試原子,在該基礎(chǔ)上搭建自動(dòng)化測(cè)試平 臺(tái),測(cè)試過(guò)程中的測(cè)試用例由這些測(cè)試原子組合而成,在自動(dòng)化測(cè)試平臺(tái)上自動(dòng)執(zhí)行測(cè)試 用例。該發(fā)明將衛(wèi)星待測(cè)項(xiàng)目進(jìn)行分解形成多個(gè)最小的測(cè)試方法序列,使用測(cè)試腳本編輯 工具,從測(cè)試原子庫(kù)中選擇需要的測(cè)試原子并按測(cè)試順序進(jìn)行排列形成與最小測(cè)試方法序 列相一致的測(cè)試腳本,將形成的所有測(cè)試腳本集合在一起形成測(cè)試腳本庫(kù)。可見該發(fā)明同 樣是基于生成的中間腳本來(lái)驅(qū)動(dòng)執(zhí)行測(cè)試用例的。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明解決的技術(shù)問(wèn)題是:克服現(xiàn)有技術(shù)的不足,提供了一種基于反射的自動(dòng)化 測(cè)試方法,無(wú)需將組成測(cè)試用例的測(cè)試單元模塊序列翻譯為中間腳本,能夠直接根據(jù)測(cè)試 用例中每個(gè)測(cè)試單元模塊的測(cè)試業(yè)務(wù)Java類并使用Java反射技術(shù)直接執(zhí)行該測(cè)試業(yè)務(wù) Java 類。
[0006] 本發(fā)明的技術(shù)解決方案是:一種基于反射的自動(dòng)化測(cè)試方法,包括如下步驟:
[0007] (1)對(duì)被測(cè)系統(tǒng)的所有測(cè)試業(yè)務(wù)進(jìn)行封裝得到對(duì)應(yīng)的測(cè)試單元模塊后存入測(cè)試單 元庫(kù);所述測(cè)試單元模塊包括名稱、綁定的Java類名及可定制參數(shù),其中,名稱為測(cè)試單元 模塊代表的測(cè)試業(yè)務(wù),綁定的Java類名為用于執(zhí)行該測(cè)試單元模塊測(cè)試業(yè)務(wù)的Java類的 類名,可定制參數(shù)為執(zhí)行該測(cè)試單元模塊時(shí)需要的輸入數(shù)據(jù);
[0008] (2)對(duì)每個(gè)測(cè)試單元模塊編寫對(duì)應(yīng)的Java代碼并進(jìn)行編譯,其中,測(cè)試單元模塊 對(duì)應(yīng)的代碼中Java類名與該測(cè)試單元模塊的綁定的Java類名相同;
[0009] (3)選取一個(gè)或多個(gè)測(cè)試單元模塊后組成測(cè)試用例,將得到的所有的測(cè)試用例保 存至數(shù)據(jù)庫(kù);
[0010] (4)從數(shù)據(jù)庫(kù)中依次讀取測(cè)試用例,并根據(jù)當(dāng)前測(cè)試用例中每個(gè)測(cè)試單元模塊的 可定制參數(shù),分別創(chuàng)建Object □類型的參數(shù)數(shù)組;
[0011] (5)根據(jù)當(dāng)前用例中每個(gè)測(cè)試單元模塊的綁定的Java類名,通過(guò)Java反射機(jī)制, 分別創(chuàng)建Java類的Class對(duì)象,然后將步驟(4)創(chuàng)建的參數(shù)數(shù)組作為newlnstance()方 法的參數(shù),并執(zhí)行Class對(duì)象的newlnstance ()方法后得到當(dāng)前用例中每個(gè)測(cè)試單元模塊 的綁定的Java類名對(duì)應(yīng)的Java對(duì)象;
[0012] (6)依次調(diào)用當(dāng)前測(cè)試用例中各個(gè)測(cè)試單元模塊的Java對(duì)象的run()方法執(zhí)行, 遍歷數(shù)據(jù)庫(kù)中測(cè)試用例直至測(cè)試用例均被執(zhí)行完成。
[0013] 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
[0014] (1)本發(fā)明與現(xiàn)有技術(shù)相比,避免了從組成測(cè)試用例的測(cè)試單元模塊序列到腳本 的翻譯轉(zhuǎn)換過(guò)程,可以直接根據(jù)測(cè)試單元模塊動(dòng)態(tài)執(zhí)行測(cè)試業(yè)務(wù)Java類,執(zhí)行簡(jiǎn)單且易擴(kuò) 展;
[0015] (2)本發(fā)明與現(xiàn)有技術(shù)相比,無(wú)需額外的腳本解釋器,能夠直接編譯執(zhí)行測(cè)試單元 模塊,執(zhí)行效率更高;
[0016] (3)本發(fā)明與現(xiàn)有技術(shù)相比,實(shí)現(xiàn)測(cè)試單元模塊功能的測(cè)試業(yè)務(wù)Java類使用Java 語(yǔ)言開發(fā),與腳本相比,可以實(shí)現(xiàn)復(fù)雜的功能。
【附圖說(shuō)明】
[0017] 圖1為本發(fā)明與圖形化測(cè)試用例傳統(tǒng)執(zhí)行方法的技術(shù)對(duì)比圖;
[0018] 圖2為本發(fā)明基于反射的自動(dòng)化測(cè)試方法原理圖。
【具體實(shí)施方式】
[0019] 本發(fā)明提出一種基于反射的自動(dòng)化測(cè)試方法,對(duì)傳統(tǒng)的傳統(tǒng)的圖形化測(cè)試用例執(zhí) 行技術(shù)進(jìn)行改進(jìn),如圖1所示為本發(fā)明與圖形化測(cè)試用例傳統(tǒng)執(zhí)行方法的技術(shù)對(duì)比圖。圖1 中上方為傳統(tǒng)的圖形化測(cè)試用例執(zhí)行技術(shù),經(jīng)歷了從用例模塊翻譯到中間腳本再到執(zhí)行的 過(guò)程,圖1下方為本發(fā)明基于反射的用例執(zhí)行方式,可直接根據(jù)模塊信息并基于反射技術(shù) 實(shí)時(shí)執(zhí)行測(cè)試用例,如圖2所示,本發(fā)明具體步驟包括:
[0020] (1)針對(duì)被測(cè)系統(tǒng)的所有典型的不可再拆分的測(cè)試業(yè)務(wù),使用多個(gè)對(duì)應(yīng)的測(cè)試單 元模塊封裝對(duì)應(yīng)的測(cè)試業(yè)務(wù),測(cè)試單元模塊可在建立測(cè)試用例時(shí)重復(fù)使用,由3個(gè)字段組 成:名稱、綁定的Java類名以及可定制參數(shù),其中,名稱用于說(shuō)明測(cè)試單元模塊所代表的測(cè) 試業(yè)務(wù);綁定的Java類名是一個(gè)用于執(zhí)行該測(cè)試單元模塊具體測(cè)試過(guò)程的Java類的類名; 可定制參數(shù)是執(zhí)行該測(cè)試單元模塊時(shí)需要的輸入數(shù)據(jù)。
[0021] (2)將所有測(cè)試單元模塊存入測(cè)試單元庫(kù),其中測(cè)試單元庫(kù)是所有測(cè)試單元模塊 的集合。
[0022] (3)為每個(gè)測(cè)試單元模塊編寫對(duì)應(yīng)的Java代碼,其中1個(gè)測(cè)試單元模塊對(duì)應(yīng)1個(gè) Java類,代碼中Java類名應(yīng)與測(cè)試單元模塊的綁定的Java類名(包括包名)相同,并且對(duì) 應(yīng)的Java代碼須實(shí)現(xiàn)run ()方法,在run ()方法中實(shí)現(xiàn)測(cè)試單元模塊的測(cè)試功能。
[0023] (4)將編寫好的Java類代碼進(jìn)行編譯。
[0024] (5)根據(jù)測(cè)試需要,從測(cè)試單元庫(kù)中選取特定的測(cè)試單元模塊,作為測(cè)試用例的一 個(gè)步驟。通過(guò)若干測(cè)試單元模塊的組合,形成測(cè)試用例并將測(cè)試用例保存至數(shù)據(jù)庫(kù)。
[0025] (6)從數(shù)據(jù)庫(kù)中讀取測(cè)試用例的測(cè)試用例信息,其中測(cè)試用例信息是組成該測(cè)試 用例的每個(gè)測(cè)試單元模塊信息(包括名稱,綁定的Java類名以及可定制參數(shù))組成的序 列。
[0026] (7)根據(jù)每個(gè)測(cè)試單元模塊的可定制參數(shù),創(chuàng)建Object□類型的參數(shù)數(shù)組。
[0027] (8)根據(jù)每個(gè)測(cè)試單元模塊綁定的Java類名,通過(guò)Java反射機(jī)制,倉(cāng)ij建Java類的 Class對(duì)象。
[0028] (9)執(zhí)行Class對(duì)象的newlnstance()方法,并將步驟(7)中創(chuàng)建的參數(shù)數(shù)組 作為newlnstance ()方法的參數(shù),從而最終創(chuàng)建測(cè)試單元模塊綁定的Java類名所對(duì)應(yīng)的 Java對(duì)象。
[0029] (10)調(diào)用Java對(duì)象的run ()方法,從而執(zhí)行當(dāng)前步驟的測(cè)試。
[0030] (11)當(dāng)一個(gè)測(cè)試用例的測(cè)試單元模塊序列逐個(gè)按照上述步驟被執(zhí)行完成后,就完 成了整個(gè)測(cè)試用例的執(zhí)行。
[0031] 下面結(jié)合實(shí)施例對(duì)本發(fā)明做更進(jìn)一步說(shuō)明。
[0032] (1)實(shí)現(xiàn)一個(gè)圖形化的測(cè)試單元模塊,該模塊用于判斷被測(cè)對(duì)象的一項(xiàng)指標(biāo)值是 否符合上下限要求,該模塊由3部分組成:
[0033]【模塊名稱】
[0034] 判斷指標(biāo)值上下限
[0035] 【模塊對(duì)應(yīng)的測(cè)試業(yè)務(wù)Java類名】
[0036] com.test.Paramjudge(Java類名)
[0037] 【可由用戶指定的參數(shù)】
[0038] 魯指標(biāo)序號(hào)
[0039] ?指標(biāo)波道
[0040] ?指標(biāo)預(yù)期上限
[0041] ?指標(biāo)預(yù)期下限
[0042] ?判讀超時(shí)時(shí)間(秒)
[0043] 通過(guò)編程語(yǔ)言的圖形化控件,實(shí)現(xiàn)該模塊,效果如下:
[0044]
【主權(quán)項(xiàng)】
1. 一種基于反射的自動(dòng)化測(cè)試方法,其特征在于包括如下步驟: (1) 對(duì)被測(cè)系統(tǒng)的所有測(cè)試業(yè)務(wù)進(jìn)行封裝得到對(duì)應(yīng)的測(cè)試單元模塊后存入測(cè)試單元 庫(kù);所述測(cè)試單元模塊包括名稱、綁定的Java類名及可定制參數(shù),其中,名稱為測(cè)試單元模 塊代表的測(cè)試業(yè)務(wù),綁定的Java類名為用于執(zhí)行該測(cè)試單元模塊測(cè)試業(yè)務(wù)的Java類的類 名,可定制參數(shù)為執(zhí)行該測(cè)試單元模塊時(shí)需要的輸入數(shù)據(jù); (2) 對(duì)每個(gè)測(cè)試單元模塊編寫對(duì)應(yīng)的Java代碼并進(jìn)行編譯,其中,測(cè)試單元模塊對(duì)應(yīng) 的代碼中Java類名與該測(cè)試單元模塊的綁定的Java類名相同; (3) 選取一個(gè)或多個(gè)測(cè)試單元模塊后組成測(cè)試用例,將得到的所有的測(cè)試用例保存至 數(shù)據(jù)庫(kù); (4) 從數(shù)據(jù)庫(kù)中依次讀取測(cè)試用例,并根據(jù)當(dāng)前測(cè)試用例中每個(gè)測(cè)試單元模塊的可定 制參數(shù),分別創(chuàng)建Object □類型的參數(shù)數(shù)組; (5) 根據(jù)當(dāng)前用例中每個(gè)測(cè)試單元模塊的綁定的Java類名,通過(guò)Java反射機(jī)制,分別 創(chuàng)建Java類的Class對(duì)象,然后將步驟(4)創(chuàng)建的參數(shù)數(shù)組作為newlnstance()方法的參 數(shù),并執(zhí)行Class對(duì)象的newlnstance ()方法后得到當(dāng)前用例中每個(gè)測(cè)試單元模塊的綁定 的Java類名對(duì)應(yīng)的Java對(duì)象; (6) 依次調(diào)用當(dāng)前測(cè)試用例中各個(gè)測(cè)試單元模塊的Java對(duì)象的run ()方法執(zhí)行,遍歷 數(shù)據(jù)庫(kù)中測(cè)試用例直至測(cè)試用例均被執(zhí)行完成。
【專利摘要】一種基于反射的自動(dòng)化測(cè)試方法,首先得到被測(cè)系統(tǒng)的所有測(cè)試單元模塊,并對(duì)每個(gè)測(cè)試單元模塊編寫對(duì)應(yīng)的Java代碼后進(jìn)行編譯;然后選取需要的測(cè)試單元模塊組成測(cè)試用例,并將測(cè)試用例及對(duì)應(yīng)測(cè)試用例信息存至數(shù)據(jù)庫(kù);最后從數(shù)據(jù)庫(kù)中依次讀取測(cè)試用例,并根據(jù)測(cè)試用例中的測(cè)試單元模塊創(chuàng)建Object[]類型的參數(shù)數(shù)組、Java類的Class對(duì)象及對(duì)應(yīng)的Java對(duì)象后執(zhí)行完成測(cè)試。本發(fā)明與現(xiàn)有技術(shù)相比,避免了從測(cè)試用例到腳本的翻譯轉(zhuǎn)換過(guò)程,可以直接根據(jù)測(cè)試單元模塊動(dòng)態(tài)執(zhí)行測(cè)試,同時(shí)無(wú)需額外的腳本解釋器,執(zhí)行效率高且易擴(kuò)展。
【IPC分類】G06F11-36
【公開號(hào)】CN104750606
【申請(qǐng)?zhí)枴緾N201510095017
【發(fā)明人】呂偉, 宋宏江, 何曉宇, 孫波, 張海祥
【申請(qǐng)人】北京空間飛行器總體設(shè)計(jì)部
【公開日】2015年7月1日
【申請(qǐng)日】2015年3月3日