亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種代碼測試方法及裝置的制造方法

文檔序號:8487737閱讀:279來源:國知局
一種代碼測試方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件測試技術(shù)領(lǐng)域,更具體地說,涉及一種代碼測試方法及裝置。
【背景技術(shù)】
[0002]軟件測試是軟件構(gòu)建過程中非常重要的一環(huán),通過軟件測試可以發(fā)現(xiàn)軟件隱藏的問題,并衡量軟件的質(zhì)量。在所有的軟件測試中,單元測試是一個重要環(huán)節(jié),其中單元測試是針對應(yīng)用程序中可測試的最小單元的測試,所述最小單元一般指方法、類以及可實現(xiàn)一個功能的代碼段(可以稱為功能模塊等被測試代碼)。
[0003]目前單元測試的主要方法是獲取應(yīng)用程序中可測試的最小單元,將其使用的程序代碼同應(yīng)用程序代碼的其余部分隔離開來進行測試。衡量最小單元的一個很重要的指標(biāo)是最小單元的代碼覆蓋率。常用的代碼覆蓋率測試原理是將JUnit單元測試與字節(jié)碼工具(byte-code-1nstrumentat1n)相結(jié)合,通過對編譯后的java字節(jié)碼文件進行插粧,使得在最小單元的測試執(zhí)行過程中能自動統(tǒng)計每一行代碼是否被執(zhí)行,從而獲得代碼被覆蓋的情況。據(jù)此原理,涌現(xiàn)出很多不同的覆蓋率檢驗工具,但是現(xiàn)有的覆蓋率檢測工具的復(fù)用性不尚。

【發(fā)明內(nèi)容】

[0004]有鑒于此,本發(fā)明提供一種代碼測試方法及裝置,用于提高測試的復(fù)用性。為了實現(xiàn)該目的,本發(fā)明提供如下技術(shù)方案:
[0005]本發(fā)明提供一種代碼測試方法,所述方法包括:
[0006]基于maven標(biāo)準(zhǔn)目錄結(jié)構(gòu),創(chuàng)建被測試代碼和測試代碼的工程目錄,以使所述被測試代碼和測試代碼的工程目錄的結(jié)構(gòu)為所述maven標(biāo)準(zhǔn)目錄結(jié)構(gòu);
[0007]將Cobertura測試包存儲至所述工程目錄中資源目錄指定的存儲位置中;
[0008]將所述被測試代碼和測試代碼的工程目錄與預(yù)先創(chuàng)建的構(gòu)建文件關(guān)聯(lián),以使所述構(gòu)建文件調(diào)用所述Cobertura測試包將Ant工具和Cobertura工具結(jié)合來對所述被測試代碼進行單元測試并得到所述被測試代碼的代碼覆蓋率情況;
[0009]從所述被測試代碼中選擇需要測試的測試單元,并剔除所述被測試代碼中無需測試的測試單元;
[0010]利用Mock工具模擬未完成的協(xié)同對象,所述協(xié)同對象為所述被測試代碼運行時所調(diào)用的對象,以輔助使處理后的所述被測試代碼正常運行;
[0011]獲取處理后的所述被測試代碼的測試代碼,并運行所述構(gòu)建文件和所述測試代碼,得到測試結(jié)果,所述測試結(jié)果用于指示所述被測試代碼的代碼覆蓋率情況和運行情況。
[0012]優(yōu)選地,所述構(gòu)建文件的預(yù)先創(chuàng)建包括:
[0013]使用mkdir命令創(chuàng)建所述構(gòu)建文件的臨時目錄,所述臨時目錄用于提供測試過程生成的臨時文件的目錄;
[0014]創(chuàng)建所述構(gòu)建文件下的complie目標(biāo),所述complie目標(biāo)用于調(diào)用Ant的javac任務(wù)對所述被測試代碼和所述測試代碼進行編譯;
[0015]創(chuàng)建所述構(gòu)建文件下的instrument目標(biāo),以調(diào)用Cobertura的instrument任務(wù),對所述被測試代碼中的被測java程序編譯所得class文件進行插粧;
[0016]創(chuàng)建所述構(gòu)建文件下的test目標(biāo)以調(diào)用Ant的JUnit任務(wù)對所述被測試代碼進行單元測試,在進行單元測試時通過所述test目標(biāo)的name屬性指定將要運行的所述測試代碼的名稱;
[0017]創(chuàng)建所述構(gòu)建文件下的coverage-report目標(biāo),所述coverage-report目標(biāo)用于調(diào)用Cobertura提供的cobertura-report任務(wù)來生成所述測試結(jié)果中的代碼覆蓋率測試?艮胃;
[0018]創(chuàng)建所述構(gòu)建文件下的coverage-check目標(biāo)以調(diào)用Cobertura的代碼覆蓋率指標(biāo)檢查任務(wù);
[0019]創(chuàng)建所述構(gòu)建文件下的clean目標(biāo)以調(diào)用Ant的delete命令來刪除所述臨時目錄下的所述臨時文件。
[0020]優(yōu)選地,從所述被測試代碼中選擇需要測試的測試單元,并剔除所述被測試代碼中無需測試的測試單元,包括:
[0021]通過第一正則表達式在所述instrument目標(biāo)中選擇所述被測試代碼中需要測試的測試單元,并剔除所述被測試代碼中無需測試的測試單元;
[0022]所述測試單元包括類和包。
[0023]優(yōu)選地,剔除所述被測試代碼中無需測試的測試單元,包括:
[0024]對所述被測試代碼中的方法進行解析,得到所述方法的參數(shù)和返回類型;
[0025]基于所述方法的參數(shù)和返回類型,將所述被測試代碼中的set方法、get方法和init方法剔除;
[0026]將所述instrument目標(biāo)使用的方法和所述被測試代碼中除set方法、get方法和init方法后剩余的每個方法分別與判定條件進行比較,得到比較結(jié)果,所述判定條件通過第二正則表達式表示;
[0027]當(dāng)所述比較結(jié)果表明所述方法的參數(shù)信息滿足所述判定條件時,將滿足所述判定條件的方法剔除。
[0028]優(yōu)選地,所述利用Mock工具模擬未完成的協(xié)同對象,包括:
[0029]導(dǎo)入與JMock工具相關(guān)的jar包,以使所述測試代碼調(diào)用JMock工具封裝的方法;
[0030]使用Orunwith來注釋所述JMock工具內(nèi)的測試運行器,所述測試運行器用于管理所述協(xié)同對象中的測試類;
[0031]創(chuàng)建Mockery 的 context 對象和 Mock 對象;
[0032]通過contex創(chuàng)建Mock對象的實例,所述實例為利用Mock工具模擬的所述協(xié)同對象;
[0033]創(chuàng)建Except1n對象來模擬所述實例的協(xié)同行為,所述協(xié)同行為用于使處理后的所述被測試代碼可正常運行。
[0034]本發(fā)明還提供一種代碼測試裝置,所述裝置包括:
[0035]創(chuàng)建單元,用于基于maven標(biāo)準(zhǔn)目錄結(jié)構(gòu),創(chuàng)建被測試代碼和測試代碼的工程目錄,以使所述被測試代碼和測試代碼的工程目錄的結(jié)構(gòu)為所述maven標(biāo)準(zhǔn)目錄結(jié)構(gòu);
[0036]存儲單元,用于將Cobertura測試包存儲至所述工程目錄中資源目錄指定的存儲位置中;
[0037]關(guān)聯(lián)單元,用于將所述被測試代碼和測試代碼的工程目錄與預(yù)先創(chuàng)建的構(gòu)建文件關(guān)聯(lián),以使所述構(gòu)建文件調(diào)用所述Cobertura測試包將Ant工具和Cobertura工具結(jié)合來對所述被測試代碼進行單元測試并得到所述被測試代碼的代碼覆蓋率情況;
[0038]獲取單元,用于從所述被測試代碼中選擇需要測試的測試單元,并剔除所述被測試代碼中無需測試的測試單元;
[0039]模擬單元,用于利用Mock工具模擬未完成的協(xié)同對象,所述協(xié)同對象為所述被測試代碼運行時所調(diào)用的對象,以輔助使處理后的所述被測試代碼正常運行;
[0040]測試單元,用于獲取處理后的所述被測試代碼的測試代碼,并運行所述構(gòu)建文件和所述測試代碼,得到測試結(jié)果,所述測試結(jié)果用于指示所述被測試代碼的代碼覆蓋率情況和運行情況。
[0041]優(yōu)選地,所述裝置還包括構(gòu)建單元,用于預(yù)先創(chuàng)建所述構(gòu)建文件;所述構(gòu)建單元包括:
[0042]第一創(chuàng)建子單元,用于使用mkdir命令創(chuàng)建所述構(gòu)建文件的臨時目錄,所述臨時目錄用于提供測試過程生成的臨時文件的目錄;
[0043]第二創(chuàng)建子單元,用于創(chuàng)建所述構(gòu)建文件下的complie目標(biāo),所述complie目標(biāo)用于調(diào)用Ant的javac任務(wù)對所述被測試代碼和所述測試代碼進行編譯;
[0044]第三創(chuàng)建子單元,用于創(chuàng)建所述構(gòu)建文件下的instrument目標(biāo),以調(diào)用Cobertura的instrument任務(wù),對所述被測試代碼中的被測java程序編譯所得class文件進行插粧;
[0045]第四創(chuàng)建子單元,用于創(chuàng)建所述構(gòu)建文件下的test目標(biāo)以調(diào)用Ant的JUnit任務(wù)對所述被測試代碼進行單元測試,在進行單元測試時通過所述test目標(biāo)的name屬性指定將要運行的所述測試代碼的名稱;
[0046]第五創(chuàng)建子單元,用于創(chuàng)建所述構(gòu)建文件下的Coverage-report目標(biāo),所述coverage-report目標(biāo)用于調(diào)用Cobertura提供的cobertura-report任務(wù)來生成所述測試結(jié)果中的代碼覆蓋率測試報告;
[0047]第六創(chuàng)建子單元,用于創(chuàng)建所述構(gòu)建文件下的coverage-check目標(biāo)以調(diào)用Cobertura的代碼覆蓋率指標(biāo)檢查任務(wù);
[0048]第七創(chuàng)建子單元,用于創(chuàng)建所述構(gòu)建文件下的clean目標(biāo)以調(diào)用Ant的delete命令來刪除所述臨時目錄下的所述臨時文件。
[0049]優(yōu)選地,所述獲取單元從所述被測試代碼中選擇需要測試的測試單元,并剔除所述被測試代碼中無需測試的測試單元,包括:通過第一正則表達式在所述instrument目標(biāo)中選擇所述被測試代碼中需要測試的測試單元,并剔除所述被測試代碼中無需測試的測試單元;
[0050]所述測試單元包括類和包。
[0051]優(yōu)選地,所述獲取單元包括:
[0052]選擇子單元,用于從所述被測試代碼中選擇需要測試的測試單元;
[0053]解析子單元,用于對所述被測試代碼中的裝置進行解析,得到所述裝置的參數(shù)和返回類型;
[0054]第一剔除子單元,用于基于所述裝置的參數(shù)和返回類型,將所述被測試代碼中的set裝置、get裝置和init裝置剔除;
[0055]比較子單元,用于將所述instrument目標(biāo)使用的裝置和所述被測試代碼中除set裝置、get裝置和init裝置后剩余的每個裝置分別與判定條件進行比較,得到比較結(jié)果,所述判定條件通過第二正則表達式表示;
[0056]第二剔除子單元,用于當(dāng)所述比較結(jié)果表明所述裝置的參數(shù)信息滿足所述判定條件時,將滿足所述判定條件的裝置剔除。
[0057]優(yōu)選地,所述模擬單元包括:
[0058]導(dǎo)入子單元,用于導(dǎo)入與JMock工具相關(guān)的jar包,以使所述測試代碼調(diào)用JMock工具封裝的裝置;
[0059]注釋子單元,用于使用Orunwith來注釋所述JMock工具內(nèi)的測試運行器,所述測試運行器用于管理所述協(xié)同對象中的測試類;
[0060]第八創(chuàng)建子單元,用于創(chuàng)建Mockery的context對象和Mock對象;
[0061]第九創(chuàng)建子單元,用于通過contex創(chuàng)建Mock對象的實例,所述實例為利用Mock工具模擬的所述協(xié)同對象;
[0062]第十創(chuàng)建子單元,用于創(chuàng)建Except1n對象來模擬所述實例的協(xié)同行為,所述協(xié)同行為用于使處理后的所述被測試代碼可正常運行。
[0063]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點如下:
[0064]本發(fā)明提供的上述技術(shù)方案,在測試每個被測試代碼時,可以基于maven標(biāo)準(zhǔn)目錄結(jié)構(gòu),創(chuàng)建被測試代碼和測試代碼的工程目錄,然后將Cobertura測試包存儲至工程目錄中資源目錄指定的存儲位置中,并將被測試代碼和測試代碼的工程目錄與預(yù)先創(chuàng)建的構(gòu)建文件關(guān)聯(lián),使得構(gòu)建文件可以調(diào)用Cobertura測試包將Ant工具和Cobertura工具結(jié)合來對被測試代碼進行單元測試并得到所述被測試代碼的代碼覆蓋率情況,這樣對于每個被測試代碼來說,只需要基于maven標(biāo)準(zhǔn)目錄結(jié)構(gòu)創(chuàng)建工程目錄,基于工程目錄來存儲所用的Cobertura測試包并關(guān)聯(lián)構(gòu)建文件來獲得代碼覆蓋率情況,從而無需針對每個被測試代碼來重新進行Ant構(gòu)建過程,提高測試的通用性。
【附圖說明】
[0065]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0066]圖1為本發(fā)明實施例提供的代碼測試方法的一種流程圖;
[0067]圖2為本發(fā)明實施例提供的工程目錄的一種示意圖;
[0068]圖3為本發(fā)明實施例提供的可視化測試環(huán)境的一種示意圖;
[0069]圖4為圖1所示代碼測試方法中預(yù)先構(gòu)建構(gòu)建文件的流程圖;
[0070]圖5為圖1所示代碼測試方法中步驟104的流程圖;
[0071]圖6為圖1所示代碼測試方法中步驟105的流程圖;
[0072]圖7為本發(fā)明實施例提供的代碼測試裝置的一種結(jié)構(gòu)示意圖;
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1