專利名稱:一種數(shù)據(jù)驅(qū)動(dòng)的單元測試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及單元測試領(lǐng)域,特別是涉及一種數(shù)據(jù)驅(qū)動(dòng)的單元測試方法。
技術(shù)背景軟件單元,指軟件設(shè)計(jì)說明中一個(gè)可獨(dú)立測試的元素,是程序中一個(gè)邏輯 上獨(dú)立的部分。單元測試是對單個(gè)的軟件單元或一組相關(guān)的軟件單元所進(jìn)行的 測試,檢查各軟件單元是否正確地實(shí)現(xiàn)了規(guī)定的功能。單元測試對于在開發(fā)早 期充分發(fā)現(xiàn)程序漏洞,以及提高程序的穩(wěn)定和健壯具有極其重要的意義。單元測試的關(guān)鍵是構(gòu)建測試環(huán)境,其中經(jīng)常要用到驅(qū)動(dòng)和樁。驅(qū)動(dòng)是用于 模擬待測單元調(diào)用者的程序,樁是用于模擬待測單元所調(diào)用的下層單元的程 序。在驅(qū)動(dòng)和樁中經(jīng)常要使用各種測試數(shù)據(jù),有的是作為待測函數(shù)的輸入,有 的是作為樁函數(shù)的返回值,有的是作為待測函數(shù)輸出數(shù)據(jù)的校驗(yàn)數(shù)據(jù)等。特別 是在網(wǎng)管軟件中,各模塊之間存在著大量的報(bào)文數(shù)據(jù)交換,模塊內(nèi)處理的數(shù)據(jù) 和輸出的數(shù)據(jù)也大多是報(bào)文數(shù)據(jù),因此,網(wǎng)管軟件的單元測試需要構(gòu)造各種報(bào) 文數(shù)據(jù)。另外,在測試時(shí),不可避免還需要其他類型的測試數(shù)據(jù),如整型、布 爾型或字符串?dāng)?shù)據(jù)等。目前軟件開發(fā)中的單元測試,大體分為三種第一,用戶手工編寫樁和驅(qū) 動(dòng)函數(shù)的純手工測試;第二,借助白盒測試開源代碼工具,如CppUnk,采用 "半自動(dòng),,的方式;第三,釆用腳本寫樁和驅(qū)動(dòng)的自動(dòng)測試。對于自動(dòng)化測試方法,通常采用讀取數(shù)據(jù)文件來得到測試數(shù)據(jù)。該方法雖 然靈活性提高,但對于網(wǎng)管軟件中大量結(jié)構(gòu)復(fù)雜的報(bào)文數(shù)據(jù),如果全手工在數(shù) 據(jù)文件中編寫,不僅工作量大,而且難以表現(xiàn)報(bào)文復(fù)雜的層次結(jié)構(gòu),可移植性 和重用率也不是很高。另外,自動(dòng)化測試工具不僅需要用戶熟悉腳本或某種語 言進(jìn)行測試邏輯控制,提高了對測試人員技能的要求,而且,通用的單元測試 工具在特定的環(huán)境下,自動(dòng)化程度不高,這限制了其在一些具體環(huán)境中的廣泛使用。
前兩種測試方式使用簡單,操作靈活,覆蓋率易控制,在網(wǎng)管軟件開發(fā)中 應(yīng)用廣泛。但這兩種方式的測試數(shù)據(jù)通常采用硬編碼的方式直接在樁或驅(qū)動(dòng)函 數(shù)中編寫,存在以下不足(1) 數(shù)據(jù)構(gòu)造量大而繁瑣,大量的測試數(shù)據(jù)難以重用和管理;(2) 測試代碼重用率低,每增加一組測試數(shù)據(jù),都需要新增一組測試代 碼,容易造成代碼冗余;(3) 靈活性差,每次增加或修改一組測試數(shù)據(jù),都需要進(jìn)行重新編譯。 發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種由外部數(shù)據(jù)文件提供測試數(shù)據(jù)并 控制測試執(zhí)行的單元測試方法。
為解決上述技術(shù)問題,本發(fā)明提供技術(shù)方案如下 一種數(shù)據(jù)驅(qū)動(dòng)的單元測試方法,包括如下步驟A、 編寫用于單元測試的數(shù)據(jù)文件,所述數(shù)據(jù)文件包括配置數(shù)據(jù)文件和報(bào) 文數(shù)據(jù)文件;B、 根據(jù)所述數(shù)據(jù)文件構(gòu)造驅(qū)動(dòng)函數(shù)和樁函數(shù);C、 根據(jù)所述數(shù)據(jù)文件、驅(qū)動(dòng)函數(shù)和樁函數(shù)組織并執(zhí)行測試用例。較佳地,步驟A中,所述配置數(shù)據(jù)文件采用XML格式編寫,并包括驅(qū)動(dòng)函數(shù)名和為所述驅(qū)動(dòng)函數(shù)配置的測試數(shù)據(jù)。
較佳地,為所述驅(qū)動(dòng)函數(shù)配置多組測試數(shù)據(jù)。
較佳地,步驟A中,所述報(bào)文數(shù)據(jù)文件采用VAL格式,并利用報(bào)文數(shù)據(jù) 文件生成工具生成或者按照報(bào)文格式手工編寫。
步驟B中,根據(jù)所述數(shù)據(jù)文件構(gòu)造驅(qū)動(dòng)函數(shù)進(jìn)一步包括從配置數(shù)據(jù)文 件中讀取測試數(shù)據(jù),將該測試數(shù)據(jù)作為被測函數(shù)的輸入數(shù)據(jù)或者作為報(bào)文數(shù)據(jù) 文件名;從報(bào)文數(shù)據(jù)文件中讀取報(bào)文數(shù)據(jù),將該報(bào)文數(shù)據(jù)作為被測函數(shù)的輸入 數(shù)據(jù)或者校驗(yàn)數(shù)據(jù);將被測函數(shù)執(zhí)行后的輸出報(bào)文存儲(chǔ)到報(bào)文數(shù)據(jù)文件中,用 于驗(yàn)證執(zhí)行結(jié)果。
步驟B中,根據(jù)所述數(shù)據(jù)文件構(gòu)造樁函數(shù)進(jìn)一步包括從報(bào)文數(shù)據(jù)文件 中讀取報(bào)文數(shù)據(jù),將該報(bào)文數(shù)據(jù)作為樁函數(shù)的輸出數(shù)據(jù)或者校驗(yàn)數(shù)據(jù);將被測函數(shù)執(zhí)行后輸入到樁函數(shù)中的報(bào)文存儲(chǔ)到報(bào)文數(shù)據(jù)文件中,用于驗(yàn)證執(zhí)行結(jié) 果。步驟C進(jìn)一步包括上層驅(qū)動(dòng)函數(shù)從配置數(shù)據(jù)文件中讀取子驅(qū)動(dòng)函數(shù)名, 以此來決定需要執(zhí)行的子驅(qū)動(dòng)函數(shù)以及子驅(qū)動(dòng)函數(shù)的執(zhí)行順序;上層驅(qū)動(dòng)函數(shù) 從配置數(shù)據(jù)文件中讀取測試數(shù)據(jù)組數(shù),以此來決定子驅(qū)動(dòng)函數(shù)的執(zhí)行次數(shù)。本發(fā)明提供了完整的由外部數(shù)據(jù)文件提供測試數(shù)據(jù)并控制測試執(zhí)行的單 元測試方法,與現(xiàn)有技術(shù)相比,具有如下有益效果(1) 采用數(shù)據(jù)文件存儲(chǔ)測試數(shù)據(jù),使測試數(shù)據(jù)重用率高,且便于管理;(2) 通過測試數(shù)據(jù)驅(qū)動(dòng)測試用例的執(zhí)行,利用測試數(shù)據(jù)組數(shù)控制用例執(zhí) 行次數(shù),對測試執(zhí)行的控制靈活,并提高測試代碼重用率;(3) 對測試數(shù)據(jù)的修改靈活,無需重新編譯代碼;(4) 無需數(shù)據(jù)庫的支持,減少對測試環(huán)境的依賴;(5) 對被測程序代碼幾乎沒任何影響和依賴,開發(fā)和測試工作可分離進(jìn)行。
圖1為本發(fā)明數(shù)據(jù)驅(qū)動(dòng)的單元測試系統(tǒng)結(jié)構(gòu)示意圖; 圖2為本發(fā)明數(shù)據(jù)驅(qū)動(dòng)的單元測試方法流程圖; 圖3為本發(fā)明的方法中組織并執(zhí)行測試用例的流程圖; 圖4為本發(fā)明的方法中解析XML文件的流程圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí) 施例對本發(fā)明進(jìn)行詳細(xì)描述。請參照圖1,本發(fā)明在進(jìn)行單元測試時(shí),所用的測試系統(tǒng)主要包括,數(shù)據(jù) 文件、數(shù)據(jù)文件解析模塊、報(bào)文數(shù)據(jù)讀寫接口和測試框架模塊,其中數(shù)據(jù)文件包括配置數(shù)據(jù)文件和報(bào)文數(shù)據(jù)文件,配置數(shù)據(jù)文件由測試數(shù)據(jù)和 控制信息組成,報(bào)文數(shù)據(jù)文件采用已被廣泛接受的格式存儲(chǔ)報(bào)文數(shù)據(jù)。數(shù)據(jù)文 件解析^^莫塊用于分析配置數(shù)據(jù)文件,提取測試數(shù)據(jù)和控制信息,并裝載好測試 用例供測試框架模塊執(zhí)行。報(bào)文數(shù)據(jù)讀寫接口由報(bào)文數(shù)據(jù)讀取函數(shù)和報(bào)文數(shù)據(jù) 輸出函數(shù)組成,報(bào)文數(shù)據(jù)讀取函數(shù)用于從報(bào)文數(shù)據(jù)文件中讀取報(bào)文信息,報(bào)文
數(shù)據(jù)輸出函數(shù)用于將報(bào)文信息輸出到報(bào)文數(shù)據(jù)文件中。測試框架模塊用于驅(qū)動(dòng) 數(shù)據(jù)文件解析模塊運(yùn)行,并執(zhí)行數(shù)據(jù)文件解析模塊裝載好的測試用例,以及初 始化測試環(huán)境和清除測試環(huán)境。請參照圖2,本發(fā)明數(shù)據(jù)驅(qū)動(dòng)的單元測試方法包括如下步驟 步驟201、編寫用于單元測試的數(shù)據(jù)文件; (1)編寫配置數(shù)據(jù)文件配置數(shù)據(jù)文件除了能提供測試數(shù)據(jù),還能提供測試控制信息。配置數(shù)據(jù)文 件按照預(yù)定的規(guī)范編寫,以不同的關(guān)鍵字代表不同的配置內(nèi)容,且各關(guān)鍵字都 有開始和結(jié)束符來標(biāo)識(shí)配置內(nèi)容的范圍,各關(guān)鍵字之間有從屬關(guān)系。如用例名 關(guān)鍵字下設(shè)置將要執(zhí)行的測試函數(shù),測試數(shù)據(jù)關(guān)鍵字下為當(dāng)前測試函數(shù)配置一 組測試數(shù)據(jù)。 一個(gè)用例名關(guān)鍵字下可以有若干個(gè)測試數(shù)據(jù)關(guān)鍵字。本發(fā)明的配置數(shù)據(jù)文件可以采用XML文件,其^^各式如下< xml version="1.0"> <TestCaseConfig><TestCase Path = "TestMethod">〈TestData Namel ="Value 1" Name2 = "Value2"></TestData>〈TestData Namel = "Value3" Name2 = "Value4,^ </TestData> </TestCase><TestCase Path = "TestMethod2"><TestData NameA = "ValueA" NameB = "ValueB"> </TestData><TestData NameA = "ValueC" NameB = "ValueD"〉 </TestData> </TestCase> </TestCaseConfig>其中-.〈TestCase〉用來標(biāo)識(shí)一個(gè)將要執(zhí)行的測試用例(測試函數(shù)),其中的 TestMethod就是一個(gè)測試函數(shù)名。〈TestData〉用來標(biāo)識(shí)一組測試數(shù)據(jù),供當(dāng)前〈TestCase〉標(biāo)識(shí)的測試函數(shù)寸吏 用。每一個(gè)測試數(shù)據(jù)由數(shù)據(jù)名和數(shù)據(jù)值組成,其中的"Namel"代表數(shù)據(jù)名,"Value 1"代表數(shù)據(jù)值?!碩estData〉是〈TestCase〉下的元素, 一個(gè)〈TestCase〉下 可以有多個(gè)〈TestData〉,即每一個(gè)測試函數(shù)可以用多組測試數(shù)據(jù)?!碩estCaseConfig〉沒有實(shí)際含義,通過將它作為最頂層的元素,可使一個(gè) XML文件中包含多個(gè)〈TestCase〉。 (2)編寫報(bào)文數(shù)據(jù)文件 報(bào)文數(shù)據(jù)文件采用被業(yè)界廣泛接受的VAL格式,可采用多種方式生成, 如利用報(bào)文數(shù)據(jù)文件生成工具,或利用報(bào)文數(shù)據(jù)輸出函數(shù),或按照報(bào)文格式手 工編寫。步驟202、根據(jù)所述數(shù)據(jù)文件構(gòu)造驅(qū)動(dòng)函數(shù)和樁函數(shù); (l)編寫驅(qū)動(dòng)函數(shù),模擬被測函數(shù)的調(diào)用者,具體為 (a )利用數(shù)據(jù)文件解析模塊提供的測試數(shù)據(jù)讀取接口函數(shù)來引用步驟201 中準(zhǔn)備的配置數(shù)據(jù)文件中的測試數(shù)據(jù)。接口函數(shù)的輸入?yún)?shù)為數(shù)據(jù)名,返回值 為數(shù)據(jù)值。通過不同的接口函數(shù),可分別得到字符串型、布爾型、整型等不同 類型的數(shù)據(jù)值。從配置數(shù)據(jù)文件讀取的數(shù)據(jù)值有的作為控制測試環(huán)境的標(biāo)志 位,有的作為測試函數(shù)的輸入數(shù)據(jù),有的作為報(bào)文數(shù)據(jù)文件名等。(b)利用報(bào)文數(shù)據(jù)讀取函數(shù)從報(bào)文數(shù)據(jù)文件中讀取報(bào)文數(shù)據(jù),用于構(gòu)造 被測函數(shù)的輸入數(shù)據(jù)或者校驗(yàn)數(shù)據(jù)。在傳輸網(wǎng)管軟件中,通常使用ASN.l (Abstract Syntax Notation One)報(bào)文。通過擴(kuò)展SNACC (—種開源的ASN.l 文件編譯器)編譯器,使其在編譯ASN.l文件時(shí),生成報(bào)文數(shù)據(jù)讀取函數(shù) ReadValFile和報(bào)文數(shù)據(jù)輸出函數(shù)PrintVal,它們分別能讀取和打印VAL格式 (被業(yè)界廣泛采納的格式)的報(bào)文數(shù)據(jù)文件。根據(jù)在(a)中得到的報(bào)文數(shù)據(jù) 文件名,調(diào)用ReadValFile函數(shù)來得到一個(gè)報(bào)文對象,用于構(gòu)造被測函數(shù)的輸 入?yún)?shù)。(c )利用報(bào)文數(shù)據(jù)輸出函數(shù)將被測函數(shù)執(zhí)行后的輸出報(bào)文存儲(chǔ)到報(bào)文數(shù) 據(jù)文件中,用于驗(yàn)證執(zhí)行結(jié)果,具體為(cl)調(diào)用數(shù)據(jù)文件解析模塊提供的 數(shù)據(jù)讀取接口函數(shù)來引用配置數(shù)據(jù)文件中配置的檢驗(yàn)數(shù)據(jù)或報(bào)文數(shù)據(jù)文件名, 利用檢驗(yàn)數(shù)據(jù)構(gòu)造驗(yàn)證代碼;(c2)根據(jù)在(cl)中得到的報(bào)文數(shù)據(jù)文件名, 調(diào)用ReadValFile函數(shù)來得到一個(gè)報(bào)文對象,作為被測函數(shù)輸出值的檢驗(yàn)數(shù)據(jù), 利用檢驗(yàn)數(shù)據(jù)構(gòu)造驗(yàn)證代碼;(c3)根據(jù)在步驟(cl )中得到的報(bào)文數(shù)據(jù)文件
名,調(diào)用PrintVal來打印被測函數(shù)的輸出報(bào)文,用作外部檢驗(yàn)。(d)利用測試框架模塊對驅(qū)動(dòng)函數(shù)進(jìn)行注冊。例如測試框架模塊采用 CppUnit,利用CppUnit提供的CPPUNIT—TEST宏來注冊驅(qū)動(dòng)函數(shù)到測試用例 組。(2)編寫樁函數(shù),模擬被測函數(shù)所調(diào)用的下層單元,具體如下 (a )利用數(shù)據(jù)文件解析模塊提供的測試數(shù)據(jù)讀取接口函數(shù)來引用步驟201 中準(zhǔn)備的配置數(shù)據(jù)文件中的測試數(shù)據(jù);(b) 利用報(bào)文數(shù)據(jù)讀取函數(shù)從報(bào)文數(shù)據(jù)文件中讀取報(bào)文數(shù)據(jù),用于構(gòu)造 樁函數(shù)的輸出數(shù)據(jù)或驗(yàn)證數(shù)據(jù);(c) 利用報(bào)文數(shù)據(jù)輸出函數(shù)將被測函數(shù)傳入樁函數(shù)中的報(bào)文數(shù)據(jù)存儲(chǔ)到 報(bào)文數(shù)據(jù)文件中,用于驗(yàn)證執(zhí)行結(jié)果。步驟203、根據(jù)所述數(shù)據(jù)文件、驅(qū)動(dòng)函數(shù)和樁函數(shù)組織并執(zhí)行測試用例。 具體為(a) 數(shù)據(jù)文件解析模塊裝載配置數(shù)據(jù)文件;(b) 數(shù)據(jù)文件解析模塊解析配置數(shù)據(jù)文件,根據(jù)配置數(shù)據(jù)文件中不同的 關(guān)鍵字做出不同的處理(bl)如為用例名關(guān)鍵字的開始符,則解析得到測試用例名,并利用測試 框架模塊裝載該測試用例;(b2 )如為測試數(shù)據(jù)關(guān)鍵字的開始符,則首先清除內(nèi)存中原有的測試數(shù)據(jù), 然后讀取該關(guān)鍵字下配置的所有測試數(shù)據(jù),并將測試數(shù)據(jù)存放于內(nèi)存中供測試 數(shù)據(jù)讀取接口函數(shù)使用;(b3)如為測試數(shù)據(jù)關(guān)鍵字的結(jié)束符,則運(yùn)行當(dāng)前的測試用例;(b4)如為用例名關(guān)^t字的結(jié)束符,則卸載當(dāng)前的測試用例。 請參照圖3,給出一個(gè)根據(jù)配置數(shù)據(jù)文件組織并執(zhí)行測試用例的應(yīng)用實(shí) 例,其包括如下步驟步驟301、啟動(dòng)數(shù)據(jù)文件解析模塊;在main()函數(shù)中,調(diào)用數(shù)據(jù)文件解析模塊的接口函數(shù),開始運(yùn)行數(shù)據(jù)文件 解析模塊。步驟302、創(chuàng)建并初始化數(shù)據(jù)文件解析模塊中需要用到的對象; 其中的幾個(gè)關(guān)4定對象創(chuàng)建如下(1) 創(chuàng)建并初始化CTestCaselnvoker類對象,CTestCaselnvoker為測試用 例調(diào)用者類,用于處理測試用例開始事件、測試用例結(jié)束事件和運(yùn)行測試用例等;(2) 創(chuàng)建并初始化CXmlTestCaseParser類對象,CXmlTestCaseParser類 用于#4居一個(gè)XML文件分析測試用例;(3) 創(chuàng)建并初始化CXmlTestDataHandler類對象,CXmlTestDataHandler 類用于解析和處理以XML文件保存的測試數(shù)據(jù);數(shù)據(jù)文件解析才莫塊對XML 文件的分沖斤是以ACE ( The Adaptive Communication Environment)為基礎(chǔ)的, CXmlTestDataHandler即繼承至ACE的ACEXML—DefaultHandler類;(4) 創(chuàng)建并初始化CPropertyHandler類對象,CPropertyHandler用于監(jiān)聽 測試數(shù)據(jù),并將測試數(shù)據(jù)保存在內(nèi)存中。步驟303、裝載XML文件。將XML文件名傳給CXmlTestCaseParser類 對象。步驟304、解析XML文件并執(zhí)行測試用例;CXmlTestCaseParser對象調(diào)用Parser方法來解析XML文件,解析過程請 參照圖4,具體如下(1 )創(chuàng)建一個(gè)ACE中的ACEXML_FileCharStream類對象,用于打開XML 文件。ACEXML一FileCharStream類用于從一個(gè)文件中讀取輸入信息。(2)將ACEXML—FileCharStream對象封裝為ACEXML—InputSource類 對象input。 ACEXML—InputSource也是ACE中的一個(gè)類,它封裝了實(shí)際的輸 入流及其他附加信息。(3 )創(chuàng)建一個(gè)ACEXML_Parser類對象parser,并用CXmlTestDataHandler 類對象對parser進(jìn)行初始化。ACEXML—Parser也是ACE的一個(gè)類,它實(shí)現(xiàn)了 一個(gè)基于SAX ( Simple API for XML )的解析器。(4)調(diào)用parser.parse(input)方法。parse為ACEXML—Parser類的一個(gè)方 法,用于解析XML文件。input為(2)中創(chuàng)建的ACEXML_InputSource類對 象。ACEXML一Parser的parse方法在解析XML文件中的元素時(shí),會(huì)根據(jù)收到 的不同通知引發(fā)不同的才喿作。
(5 )如果接收到元素開始通知,執(zhí)行CXmlTestDataHandler:: startElement 方法,具體為(51)如果當(dāng)前處理的元素為"TestCase,,,則解析XML文件 得到測試用例名,并利用CppUnit框架加載該用例;(52)如果當(dāng)前處理的元 素為"TestData",首先,清空內(nèi)存中原有的測試數(shù)據(jù),然后,從XML文件中 讀取當(dāng)前TestData元素下的所有測試數(shù)據(jù),并將數(shù)據(jù)保存在內(nèi)存中,供數(shù)據(jù)讀 取接口函數(shù)來引用;(53)如果當(dāng)前處理的元素為其他,則不作任何處理。(6)如果接收到元素結(jié)束通知,執(zhí)行CXmlTestDataHandlen: endElement 方法,具體為(61 )如果當(dāng)前處理的元素為"TestData",則執(zhí)行當(dāng)前測試用 例;(62)如果當(dāng)前處理的元素為"TestCase",則卸載當(dāng)前測試用例。步驟305、當(dāng)XML文件全部解析完,析構(gòu)步驟302中創(chuàng)建的對象,清除 框架環(huán)境,測試完成。最后應(yīng)當(dāng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制, 本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同 替換,而不脫離本發(fā)明技術(shù)方案的精神范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求 范圍當(dāng)中。
權(quán)利要求
1.一種數(shù)據(jù)驅(qū)動(dòng)的單元測試方法,其特征在于,包括如下步驟A、編寫用于單元測試的數(shù)據(jù)文件,所述數(shù)據(jù)文件包括配置數(shù)據(jù)文件和報(bào)文數(shù)據(jù)文件;B、根據(jù)所述數(shù)據(jù)文件構(gòu)造驅(qū)動(dòng)函數(shù)和樁函數(shù);C、根據(jù)所述數(shù)據(jù)文件、驅(qū)動(dòng)函數(shù)和樁函數(shù)組織并執(zhí)行測試用例。
2. 如權(quán)利要求1所述的方法,其特征在于步驟A中,所述配置數(shù)據(jù)文件采用XML格式編寫,并包括驅(qū)動(dòng)函數(shù)名和 為所述驅(qū)動(dòng)函數(shù)配置的測試數(shù)據(jù)。
3. 如權(quán)利要求2所述的方法,其特征在于 為所述驅(qū)動(dòng)函數(shù)配置多組測試數(shù)據(jù)。
4. 如權(quán)利要求1所述的方法,其特征在于步驟A中,所述報(bào)文數(shù)據(jù)文件采用VAL格式,并利用報(bào)文數(shù)據(jù)文件生成 工具生成或者按照報(bào)文格式手工編寫。
5. 如權(quán)利要求l所述的方法,其特征在于,步驟B中,根據(jù)所述數(shù)據(jù)文 件構(gòu)造驅(qū)動(dòng)函數(shù)進(jìn)一步包括從配置數(shù)據(jù)文件中讀取測試數(shù)據(jù),將該測試數(shù)據(jù)作為被測函數(shù)的輸入數(shù)據(jù) 或者作為報(bào)文數(shù)據(jù)文件名;從報(bào)文數(shù)據(jù)文件中讀取報(bào)文數(shù)據(jù),將該報(bào)文數(shù)據(jù)作為被測函數(shù)的輸入數(shù)據(jù) 或者校驗(yàn)數(shù)據(jù);將被測函數(shù)執(zhí)行后的輸出報(bào)文存儲(chǔ)到報(bào)文數(shù)據(jù)文件中,用于驗(yàn)證執(zhí)行結(jié)果。
6. 如權(quán)利要求1所述的方法,其特征在于,步驟B中,根據(jù)所述數(shù)據(jù)文 件構(gòu)造樁函數(shù)進(jìn)一步包括從報(bào)文數(shù)據(jù)文件中讀取報(bào)文數(shù)據(jù),將該報(bào)文數(shù)據(jù)作為樁函數(shù)的輸出數(shù)據(jù)或 者校驗(yàn)數(shù)據(jù);將被測函數(shù)執(zhí)行后輸入到樁函數(shù)中的報(bào)文存儲(chǔ)到報(bào)文數(shù)據(jù)文件中,用于驗(yàn) "i正^sM于結(jié)果。
7.如權(quán)利要求l所述的方法,其特征在于,步驟C進(jìn)一步包括 上層驅(qū)動(dòng)函數(shù)從配置數(shù)據(jù)文件中讀取子驅(qū)動(dòng)函數(shù)名,以此來決定需要執(zhí)行的子驅(qū)動(dòng)函數(shù)以及子驅(qū)動(dòng)函數(shù)的執(zhí)行順序;上層驅(qū)動(dòng)函數(shù)從配置數(shù)據(jù)文件中讀取測試數(shù)據(jù)組數(shù),以此來決定子驅(qū)動(dòng)函數(shù)的執(zhí)行次數(shù)。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)驅(qū)動(dòng)的單元測試方法,包括如下步驟A.編寫用于單元測試的數(shù)據(jù)文件,所述數(shù)據(jù)文件包括配置數(shù)據(jù)文件和報(bào)文數(shù)據(jù)文件;B.根據(jù)所述數(shù)據(jù)文件構(gòu)造驅(qū)動(dòng)函數(shù)和樁函數(shù);C.根據(jù)所述數(shù)據(jù)文件、驅(qū)動(dòng)函數(shù)和樁函數(shù)組織并執(zhí)行測試用例。本發(fā)明的方法采用數(shù)據(jù)文件存儲(chǔ)測試數(shù)據(jù),使測試數(shù)據(jù)重用率高,便于管理;通過測試數(shù)據(jù)驅(qū)動(dòng)測試用例的執(zhí)行,對測試執(zhí)行的控制靈活,開發(fā)和測試工作可分離進(jìn)行。
文檔編號(hào)G06F11/36GK101158919SQ200710176970
公開日2008年4月9日 申請日期2007年11月7日 優(yōu)先權(quán)日2007年11月7日
發(fā)明者君 梁 申請人:中興通訊股份有限公司