獲取代碼覆蓋率數(shù)據(jù)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及測試領(lǐng)域,特別是一種獲取代碼覆蓋率數(shù)據(jù)的方法及裝置。
【背景技術(shù)】
[0002]代碼覆蓋率(codecoverage)是反映測試用例對被測程序覆蓋程度的重要指標(biāo),也是衡量測試完整性的一個參考值。無論是單元測試、API (Applicat1n ProgramInterface,應(yīng)用程序接口)測試還是功能性測試,最終都是調(diào)用了程序的代碼。測試結(jié)束后,通過代碼覆蓋率數(shù)據(jù),可以知道測試是否充分,測試的弱點在哪些方面,進(jìn)而可以指導(dǎo)開發(fā)者或測試者設(shè)計能夠增加覆蓋率的測試用例。
[0003]目前,android(安卓)平臺的代碼覆蓋率測試主要使用開源工具Jacoco(Javacode coverage),其測試的流程為:I)構(gòu)建android項目,同時插入用于生成覆蓋率數(shù)據(jù)的代碼;2)執(zhí)行測試用例進(jìn)行測試;3)在測試完成后,觸發(fā)數(shù)據(jù)導(dǎo)出接口,導(dǎo)出覆蓋率數(shù)據(jù);4)生成覆蓋率報告。
[0004]然而,上述測試方法在測試完成后,為了導(dǎo)出覆蓋率數(shù)據(jù),需要修改被測程序的源碼,對外提供觸發(fā)接口,將覆蓋率數(shù)據(jù)寫到本地。因此,如何在不修改被測程序的源碼的情況下,更加有效地導(dǎo)出覆蓋率數(shù)據(jù)成為亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0005]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的獲取代碼覆蓋率數(shù)據(jù)的方法及相應(yīng)的裝置。
[0006]依據(jù)本發(fā)明的一方面,提供了一種獲取代碼覆蓋率數(shù)據(jù)的方法,包括:
[0007]當(dāng)接收到對被測程序進(jìn)行測試的指令時,調(diào)用第一線程執(zhí)行所述被測程序的測試用例,生成所述測試用例的測試參數(shù),其中,所述測試參數(shù)中包括代碼覆蓋率數(shù)據(jù);
[0008]新增獨立于所述第一線程的第二線程,其中,所述第二線程具備代碼覆蓋率數(shù)據(jù)的獲取功能;
[0009]在所述第一線程的執(zhí)行過程中,觸發(fā)所述第二線程從所述測試參數(shù)中獲取代碼覆蓋率數(shù)據(jù)。
[0010]可選地,所述方法還包括:
[0011 ]在對所述被測程序進(jìn)行測試之前,調(diào)用代碼覆蓋率工具,由所述代碼覆蓋率工具通過插粧的方式向所述被測程序的代碼中插入用于生成代碼覆蓋率數(shù)據(jù)的代碼,以及由所述代碼覆蓋率工具向所述被測程序中注入代理插件。
[0012]可選地,調(diào)用第一線程執(zhí)行所述被測程序的測試用例,生成所述測試用例的測試參數(shù),包括:
[0013]在所述第一線程的執(zhí)行過程中,由所述代理插件監(jiān)控所述用于生成代碼覆蓋率數(shù)據(jù)的代碼的執(zhí)行情況,生成包含代碼覆蓋率數(shù)據(jù)的測試參數(shù)。
[0014]可選地,所述代理插件與所述被測程序間建立了關(guān)聯(lián),當(dāng)所述被測程序啟動時,同時啟動所述代理插件。
[0015]可選地,在所述第一線程的執(zhí)行過程中,觸發(fā)所述第二線程從所述測試參數(shù)中獲取代碼覆蓋率數(shù)據(jù),包括:
[0016]在所述第一線程的執(zhí)行過程中,觸發(fā)所述第二線程從所述代理插件處獲取所述測試參數(shù)中的代碼覆蓋率數(shù)據(jù)。
[0017]可選地,在所述代理插件的進(jìn)程中新增所述第二線程。
[0018]可選地,在所述第一線程的執(zhí)行過程中,觸發(fā)所述第二線程從所述測試參數(shù)中獲取代碼覆蓋率數(shù)據(jù)之后,所述方法還包括:
[0019]將獲取的所述代碼覆蓋率數(shù)據(jù)以文件的形式保存至指定位置。
[0020]可選地,所述方法還包括:
[0021 ]在測試結(jié)束后,從所述指定位置處獲取多個代碼覆蓋率數(shù)據(jù)文件;
[0022]對所述多個代碼覆蓋率數(shù)據(jù)文件進(jìn)行合并處理,得到代碼覆蓋率數(shù)據(jù)合并文件。
[0023]可選地,對所述多個代碼覆蓋率數(shù)據(jù)文件進(jìn)行合并處理,得到代碼覆蓋率數(shù)據(jù)合并文件之后,還包括:
[0024]獲取所述被測程序的源碼;
[0025]分析所述代碼覆蓋率數(shù)據(jù)合并文件、所述被測程序的源碼以及所述被測程序的代碼,生成指定格式的覆蓋率報告。
[0026]依據(jù)本發(fā)明的另一方面,還提供了一種獲取代碼覆蓋率數(shù)據(jù)的裝置,包括:
[0027]測試參數(shù)生成模塊,適于當(dāng)接收到對被測程序進(jìn)行測試的指令時,調(diào)用第一線程執(zhí)行所述被測程序的測試用例,生成所述測試用例的測試參數(shù),其中,所述測試參數(shù)中包括代碼覆蓋率數(shù)據(jù);
[0028]線程新建模塊,適于新增獨立于所述第一線程的第二線程,其中,所述第二線程具備代碼覆蓋率數(shù)據(jù)的獲取功能;
[0029]數(shù)據(jù)獲取模塊,適于在所述第一線程的執(zhí)行過程中,觸發(fā)所述第二線程從所述測試參數(shù)中獲取代碼覆蓋率數(shù)據(jù)。
[0030]可選地,所述裝置還包括調(diào)用模塊,適于:
[0031 ]在對所述被測程序進(jìn)行測試之前,調(diào)用代碼覆蓋率工具,由所述代碼覆蓋率工具通過插粧的方式向所述被測程序的代碼中插入用于生成代碼覆蓋率數(shù)據(jù)的代碼,以及由所述代碼覆蓋率工具向所述被測程序中注入代理插件。
[0032]可選地,所述測試參數(shù)生成模塊還適于:
[0033]在所述第一線程的執(zhí)行過程中,由所述代理插件監(jiān)控所述用于生成代碼覆蓋率數(shù)據(jù)的代碼的執(zhí)行情況,生成包含代碼覆蓋率數(shù)據(jù)的測試參數(shù)。
[0034]可選地,所述代理插件與所述被測程序間建立了關(guān)聯(lián),當(dāng)所述被測程序啟動時,同時啟動所述代理插件。
[0035]可選地,所述數(shù)據(jù)獲取模塊還適于:
[0036]在所述第一線程的執(zhí)行過程中,觸發(fā)所述第二線程從所述代理插件處獲取所述測試參數(shù)中的代碼覆蓋率數(shù)據(jù)。
[0037]可選地,在所述代理插件的進(jìn)程中新增所述第二線程。
[0038]可選地,所述裝置還包括保存模塊,適于:
[0039]在所述數(shù)據(jù)獲取模塊在所述第一線程的執(zhí)行過程中,觸發(fā)所述第二線程從所述測試參數(shù)中獲取代碼覆蓋率數(shù)據(jù)之后,將獲取的所述代碼覆蓋率數(shù)據(jù)以文件的形式保存至指定位置。
[0040]可選地,所述裝置還包括數(shù)據(jù)合并模塊,適于:在測試結(jié)束后,從所述指定位置處獲取多個代碼覆蓋率數(shù)據(jù)文件;
[0041 ]對所述多個代碼覆蓋率數(shù)據(jù)文件進(jìn)行合并處理,得到代碼覆蓋率數(shù)據(jù)合并文件。
[0042]可選地,所述裝置還包括報告生成模塊,適于:
[0043]在所述數(shù)據(jù)合并模塊對所述多個代碼覆蓋率數(shù)據(jù)文件進(jìn)行合并處理,得到代碼覆蓋率數(shù)據(jù)合并文件之后,獲取所述被測程序的源碼;
[0044]分析所述代碼覆蓋率數(shù)據(jù)合并文件、所述被測程序的源碼以及所述被測程序的代碼,生成指定格式的覆蓋率報告。
[0045]在本發(fā)明實施例中,當(dāng)接收到對被測程序進(jìn)行測試的指令時,調(diào)用第一線程執(zhí)行被測程序的測試用例,生成該測試用例的包括代碼覆蓋率數(shù)據(jù)的測試參數(shù)。新增獨立于第一線程的第二線程,從而在第一線程的執(zhí)行過程中,觸發(fā)第二線程從測試參數(shù)中獲取代碼覆蓋率數(shù)據(jù)。由此可知,本發(fā)明實施例通過新增獨立于第一線程的第二線程,以使得在對被測程序進(jìn)行測試的過程中,利用第二線程具備的代碼覆蓋率數(shù)據(jù)的獲取功能,實時獲取并導(dǎo)出代碼覆蓋率數(shù)據(jù),從而解決了現(xiàn)有技術(shù)中需要修改被測程序的源碼,對外提供觸發(fā)接口導(dǎo)出代碼覆蓋率數(shù)據(jù)的問題。并且,本發(fā)明實施例通過循環(huán)的方式實時獲取代碼覆蓋率數(shù)據(jù),解決了現(xiàn)有技術(shù)中是在測試結(jié)束后導(dǎo)出數(shù)據(jù)而存在的被測程序異常退出,導(dǎo)致無法獲取代碼覆蓋率數(shù)據(jù)的問題。
[0046]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
[0047]根據(jù)下文結(jié)合附圖對本發(fā)明具體實施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會更加明了本發(fā)明的上述以及其他目的、優(yōu)點和特征。
【附圖說明】
[0048]通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0049]圖1示出了根據(jù)本發(fā)明一個實施例的獲取代碼覆蓋率數(shù)據(jù)的方法的流程圖;
[0050]圖2示出了根據(jù)本發(fā)明另一個實施例的獲取代碼覆蓋率數(shù)據(jù)的方法的流程圖;
[0051]