一種實現(xiàn)單元測試的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)單元測試的方法及裝置,包括:遍歷進行單元測試的目錄及子目錄下的測試用例文件,根據(jù)測試用例文件的文件名,生成測試用例文件的測試套;建立各測試用例文件的測試套和測試用例一一對應的映射信息;根據(jù)建立的測試套和測試用例的映射信息,生成測試文件;根據(jù)生成的測試套和測試文件,對單元測試的應用程序進行單元測試,輸出測試結(jié)果。本發(fā)明通過根據(jù)測試用例文件的文件名生成測試用例文件的測試套,及測試用例文件和測試套的映射,簡化了添加測試套以及測試用例到單元測試的框架的過程,節(jié)省了單元測試中人為參與的時間,提高了單元測試的工作效率。
【專利說明】一種實現(xiàn)單元測試的方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件測試技術(shù),尤指一種實現(xiàn)單元測試的方法及裝置。
【背景技術(shù)】
[0002] 單元測試,是指對軟件中的最小可測試單元進行檢查和驗證。一個單元測試是用 于判斷某個特定條件下(或場景下)某個函數(shù)(或某個流程)的行為。例如把一個很大的 值放入一個有序列表(list)中去,然后確認該值出現(xiàn)在list的尾部,以實現(xiàn)單元測試;或 者,從字符串中刪除匹配某種模式的字符,然后確認字符串確實不再包含這些字符實現(xiàn)單 元測試。充分的單元測試,可以在早期發(fā)現(xiàn)軟件BUG并進行修復,大大提高軟件質(zhì)量,降低 后期維護成本。
[0003] 單元測試是由編寫程序的程序員完成的。程序員編寫功能代碼后,通過編寫單元 測試,用于對程序的每個函數(shù)、流程等進行測試,使其實現(xiàn)代碼實際應用時所應有的功能。 如果不進行代碼測試,則代碼中的細小錯誤很難被發(fā)現(xiàn),當BUG暴露時將難于調(diào)試,大幅度 提高后期測試和維護成本,且影響軟件質(zhì)量。
[0004] 白盒測試用例(CUnit)是一種C語言單元測試框架。白盒測試用例以靜態(tài)庫的形 式提供給用戶使用,用戶編寫程序的時候直接鏈接此靜態(tài)庫就可以進行單元測試。CUnit 提供了一個簡單的單元測試框架。CUnit的測試是單線程啟動,只能注冊一個測試Test Registry_,一次測試可以運行多個測試套(Test Suite),而每個測試套可以包括多個測試 用例(Test Case),每個測試用例又包含一個或者多個斷言類的語句。注冊一個測試用例 后,需要將測試用例增加到CUnit的單元測試框架中,并在單元內(nèi)掛載測試函數(shù)后,調(diào)用編 寫使用的界面進行測試。
[0005] 在CUnit的單元測試框架中,隨著單元測試的測試用例的增加,在編寫完測試用 例后,需要操作人員根據(jù)測試用例編寫測試套,而測試套的格式是一個固定的格式,只是名 字和內(nèi)容不同,當存在較多的測試用例時,該過程是一個很繁瑣的過程。尤其是測試用例有 改動時,需要手動查找該用例的位置,修改過程費時。
[0006] 綜上,目前在進行單元測試時,添加測試套以及測試用例到單元測試的框架中成 為一個重復、繁瑣的事情。影響了單元測試的工作效率。
【發(fā)明內(nèi)容】
[0007] 為了解決上述技術(shù)問題,本發(fā)明公開了一種實現(xiàn)單元測試的方法及裝置,能夠自 動完成測試套和測試用例的添加,提高單元測試的工作效率。
[0008] 為了達到本發(fā)明的目的,本發(fā)明提供一種實現(xiàn)單元測試的方法,包括:
[0009] 遍歷進行單元測試的目錄及子目錄下的測試用例文件,根據(jù)測試用例文件的文件 名,生成測試用例文件的測試套;
[0010] 建立各測試用例文件的測試套和測試用例--對應的映射信息;
[0011] 根據(jù)建立的測試套和測試用例的映射信息,生成測試文件;
[0012] 根據(jù)生成的測試套和測試文件,對單元測試的應用程序進行單元測試,輸出測試 結(jié)果。
[0013] 進一步地,遍歷進行單元測試的目錄及子目錄下的測試用例文件為:通過Python 腳本遍歷進行單元測試的測試用例文件的目錄及子目錄下的測試用例文件。
[0014] 進一步地,生成映射信息包括:
[0015] 通過二級列表的方式,建立所述各測試用例文件的測試套和測試用例一一對應的 映射信息。
[0016] 進一步地,生成測試文件包括:
[0017] 通過Python腳本,根據(jù)所述生成的測試套和測試用例的映射信息生成所述測試 文件。
[0018] 進一步地,對單元測試的應用程序進行單元測試,輸出測試結(jié)果包括:
[0019] 通過Python腳本調(diào)用makefile文件,對所述測試文件和所述測試套及單元測試的 應用程序進行編譯,生成可執(zhí)行文件;
[0020] 執(zhí)行可執(zhí)行文件以輸出測試結(jié)果。
[0021] 進一步地,該方法之前還包括:預先設置與所述單元測試的各模塊和子模塊對應 的測試用例相應的名稱,以生成所述測試用例文件的目錄及子目錄。
[0022] 另一方面,本申請還提供一種實現(xiàn)單元測試的裝置,包括:
[0023] 遍歷單元,用于遍歷進行單元測試的目錄及子目錄下的測試用例文件,根據(jù)測試 用例文件的文件名,生成測試用例文件的測試套;
[0024] 映射單元,用于建立各測試用例文件的測試套和測試用例一一對應的映射信息;
[0025] 測試文件單元,根據(jù)建立的測試套和測試用例的映射信息,生成測試文件;
[0026] 測試執(zhí)行單元,用于根據(jù)生成的測試套和測試文件,對單元測試的應用程序進行 單元測試,輸出測試結(jié)果。
[0027] 進一步地,遍歷單元具體用于,通過Python腳本遍歷進行單元測試的測試用例文 件的目錄及子目錄下的測試用例文件,根據(jù)測試用例文件的文件名,生成測試用例文件的 測試套。
[0028] 進一步地,映射單元具體用于,對各測試用例文件的測試套和測試用例,通過二級 列表的方式建立測試套和測試用例一一對應的映射信息。
[0029] 進一步地,測試文件單元具體用于,根據(jù)建立的測試套和測試用例的映射信息,生 成測試文件具體包括;根據(jù)建立的測試套和測試用例的映射信息,通過Python腳本生成測 試文件。
[0030] 進一步地,測試執(zhí)行單元具體用于,通過Python腳本調(diào)用makefile文件,對所述測 試文件和所述測試套及單元測試的應用程序進行編譯,生成可執(zhí)行文件;
[0031] 執(zhí)行可執(zhí)行文件以輸出測試結(jié)果。
[0032] 進一步地,該裝置還包括命名單元,用于預先設置單元測試的各模塊和子模塊對 應的測試用例相應的名稱,以生成測試用例文件的目錄及子目錄。
[0033] 與現(xiàn)有技術(shù)相比,本發(fā)明提供的技術(shù)方案包括:遍歷進行單元測試的目錄及子目 錄下的測試用例文件,根據(jù)測試用例文件的文件名,生成測試用例文件的測試套;建立各測 試用例文件的測試套和測試用例一一對應的映射信息;根據(jù)建立的測試套和測試用例的映 射信息,生成測試文件;根據(jù)生成的測試套和測試文件,對單元測試的應用程序進行單元測 試,輸出測試結(jié)果。本發(fā)明通過根據(jù)測試用例文件的文件名生成測試用例文件的測試套, 及測試用例文件和測試套的映射,簡化了添加測試套以及測試用例到單元測試的框架的過 程,節(jié)省了單元測試中人為參與的時間,提高了單元測試的工作效率。
【專利附圖】
【附圖說明】
[0034] 此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
[0035] 圖1為本發(fā)明實現(xiàn)單元測試的方法的流程圖;
[0036] 圖2為本發(fā)明實現(xiàn)單元測試的裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0037] 圖1為本發(fā)明實現(xiàn)單元測試的方法的流程圖;如圖1所示,包括:
[0038] 步驟100、遍歷進行單元測試的目錄及子目錄下的測試用例文件,根據(jù)測試用例文 件的文件名,生成測試用例文件的測試套。
[0039] 本步驟中,遍歷進行單元測試的目錄及子目錄下的測試用例文件為:通過Python 腳本遍歷進行單元測試的測試用例文件的目錄及子目錄下的測試用例文件。其中,Python 是一種面向?qū)ο蟆⒔忉屝陀嬎銠C程序設計語言,Python語法簡潔而清晰,具有豐富和強大 的類庫。Python常被昵稱為膠水語言,它能夠很輕松的把用其他語言制作的各種模塊輕松 地聯(lián)結(jié)在一起。Python腳本是指通過Python語言編寫的腳本。
[0040] 本步驟之前還包括,預先設置單元測試的各模塊和子模塊對應的測試用例相應的 名稱,以生成測試用例文件的目錄及子目錄。
[0041] 步驟101、建立各測試用例文件的測試套和測試用例一一對應的映射信息。
[0042] 本步驟中,建立各測試用例文件的測試套和測試用例--對應的映射信息具體包 括:對各測試用例文件的測試套和測試用例,通過二級列表的方式建立測試套和測試用例 -對應的映射信息。
[0043] 需要說明的是,二級列表的方式是本領(lǐng)域技術(shù)人員熟知的一種列表方式,一級列 表是測試套列表,二級列表是測試套中用例的列表。通過二級列表的方式建立映射是本領(lǐng) 域技術(shù)人員的公知常識,本申請只是應用二級列表方式建立測試套和測試用例一一對應的 映射信息。
[0044] 步驟102、根據(jù)建立的測試套和測試用例的映射信息,生成測試文件。
[0045] 本步驟具體包括:根據(jù)生成的測試套和測試用例的映射信息,通過Python腳本輸 出測試文件。
[0046] 步驟103、根據(jù)生成的測試套和測試文件,對單元測試的應用程序進行單元測試, 輸出測試結(jié)果。
[0047] 本步驟具體包括:通過Python腳本調(diào)用makefile文件,對所述測試文件和所述測 試套及單元測試的應用程序進行編譯,生成可執(zhí)行文件;執(zhí)行可執(zhí)行文件以輸出測試結(jié)果。 其中,makefile文件是一種,在一個工程中的源文件不計數(shù),其按類型、功能、模塊分別放在 若干個目錄中時,定義一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯, 哪些文件需要重新編譯,甚至于進行更復雜的功能操作,makefile就像一個Shell腳本一 樣,其中也可以執(zhí)行操作系統(tǒng)的命令。
[0048] 本發(fā)明通過根據(jù)測試用例文件的文件名生成測試用例文件的測試套,及測試用例 文件和測試套的映射,再通過Python腳本調(diào)用makefile文件,編譯測試文件和測試套及進 行單元測試側(cè)應用程序,生成可執(zhí)行文件,簡化了添加測試套以及測試用例到單元測試的 框架的過程,節(jié)省了單元測試中人為參與的時間,提高了單元測試的工作效率。
[0049] 圖2為本發(fā)明實現(xiàn)單元測試的裝置的結(jié)構(gòu)框圖,如圖2所示,包括:
[0050] 遍歷單元,用于遍歷進行單元測試的目錄及子目錄下的測試用例文件,根據(jù)測試 用例文件的文件名,生成測試用例文件的測試套。具體用于,通過Python腳本遍歷進行單 元測試的測試用例文件的目錄及子目錄下的測試用例文件,根據(jù)測試用例文件的文件名, 生成測試用例文件的測試套。
[0051] 映射單元,用于生成各測試用例文件的測試套和測試用例成一一對應的映射信 息。具體用于,對各測試用例文件的測試套和測試用例,通過二級列表的方式生成測試套和 測試用例一一對應的映射信息。
[0052] 測試文件單元,根據(jù)生成的測試套和測試用例的映射信息,輸出測試文件。具體用 于,根據(jù)生成的測試套和測試用例的映射信息,輸出測試文件具體包括;根據(jù)生成的測試套 和測試用例的映射信息,通過Python腳本輸出測試文件。
[0053] 測試執(zhí)行單元,用于根據(jù)測試套、測試文件,對單元測試的應用程序進行單元測 試,輸出測試結(jié)果。具體用于,通過Python腳本調(diào)用makefile文件,對所述測試文件和所述 測試套及單元測試的應用程序進行編譯,生成可執(zhí)行文件;執(zhí)行可執(zhí)行文件以輸出測試結(jié) 果。
[0054] 本發(fā)明裝置還包括命名單元,用于預先設置單元測試的各模塊和子模塊對應的測 試用例相應的名稱,以生成測試用例文件的目錄及子目錄。
[0055] 以上所述,僅為本發(fā)明的較佳實例而已,并非用于限定本發(fā)明的保護范圍。對于本 申請發(fā)明中涉及的鏈路連接標準,存儲介質(zhì)的類型,以上實施例只是針對優(yōu)選方式來對本 發(fā)明進行陳述。其實現(xiàn)手段,可以采用類似的方法進行替換等,根據(jù)實際情況可以做適當調(diào) 整。凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明 的保護范圍之內(nèi)。
【權(quán)利要求】
1. 一種實現(xiàn)單元測試的方法,其特征在于,包括: 遍歷進行單元測試的目錄及子目錄下的測試用例文件,根據(jù)測試用例文件的文件名, 生成測試用例文件的測試套; 建立各測試用例文件的測試套和測試用例一一對應的映射信息; 根據(jù)建立的測試套和測試用例的映射信息,生成測試文件; 根據(jù)生成的測試套和測試文件,對單元測試的應用程序進行單元測試,輸出測試結(jié)果。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述遍歷進行單元測試的目錄及子目錄 下的測試用例文件為:通過Python腳本遍歷進行單元測試的測試用例文件的目錄及子目 錄下的測試用例文件。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述生成映射信息包括: 通過二級列表的方式,建立所述各測試用例文件的測試套和測試用例一一對應的映射 信息。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述生成測試文件包括: 通過Python腳本,根據(jù)所述生成的測試套和測試用例的映射信息生成所述測試文件。
5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對單元測試的應用程序進行單元測 試,輸出測試結(jié)果包括: 通過Python腳本調(diào)用makefile文件,對所述測試文件和所述測試套及單元測試的應用 程序進行編譯,生成可執(zhí)行文件; 執(zhí)行可執(zhí)行文件以輸出測試結(jié)果。
6. 根據(jù)權(quán)利要求1?5任一項所述的方法,其特征在于,該方法之前還包括:預先設置 與所述單元測試的各模塊和子模塊對應的測試用例相應的名稱,以生成所述測試用例文件 的目錄及子目錄。
7. -種實現(xiàn)單元測試的裝置,其特征在于,包括: 遍歷單元,用于遍歷進行單元測試的目錄及子目錄下的測試用例文件,根據(jù)測試用例 文件的文件名,生成測試用例文件的測試套; 映射單元,用于建立各測試用例文件的測試套和測試用例一一對應的映射信息; 測試文件單元,根據(jù)建立的測試套和測試用例的映射信息,生成測試文件; 測試執(zhí)行單元,用于根據(jù)生成的測試套和測試文件,對單元測試的應用程序進行單元 測試,輸出測試結(jié)果。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述遍歷單元具體用于,通過Python腳本 遍歷進行單元測試的測試用例文件的目錄及子目錄下的測試用例文件,根據(jù)測試用例文件 的文件名,生成測試用例文件的測試套。
9. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述映射單元具體用于,對各測試用例 文件的測試套和測試用例,通過二級列表的方式建立測試套和測試用例一一對應的映射信 息。
10. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述測試文件單元具體用于,根據(jù)建立 的測試套和測試用例的映射信息,生成測試文件具體包括;根據(jù)建立的測試套和測試用例 的映射信息,通過Python腳本生成測試文件。
11. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述測試執(zhí)行單元具體用于,通過 Python腳本調(diào)用makefile文件,對所述測試文件和所述測試套及單元測試的應用程序進行 編譯,生成可執(zhí)行文件; 執(zhí)行可執(zhí)行文件以輸出測試結(jié)果。
12.根據(jù)權(quán)利要求7?11任一項所述的裝置,其特征在于,該裝置還包括命名單元,用 于預先設置單元測試的各模塊和子模塊對應的測試用例相應的名稱,以生成測試用例文件 的目錄及子目錄。
【文檔編號】G06F11/36GK104102581SQ201410328072
【公開日】2014年10月15日 申請日期:2014年7月10日 優(yōu)先權(quán)日:2014年7月10日
【發(fā)明者】王志華 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司