代碼覆蓋率的測(cè)試方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及測(cè)試領(lǐng)域,特別是一種代碼覆蓋率的測(cè)試方法及裝置。
【背景技術(shù)】
[0002] 代碼覆蓋率(codecoverage)是反映測(cè)試用例對(duì)被測(cè)程序覆蓋程度的重要指標(biāo), 也是衡量測(cè)試完整性的一個(gè)參考值。
[0003] 在Android(安卓)平臺(tái)上,Jara代碼覆蓋率的測(cè)試可W使用Emma、Jacoco(Java codeCOverage)等開(kāi)源工具,通過(guò)運(yùn)些開(kāi)源工具可W方便地生成覆蓋率報(bào)告。然而,運(yùn)類工 具需要集成在Eclipse或AndroidStudio之類的IDE(IntegratedDevelopment 化viro皿ent,集成開(kāi)發(fā)環(huán)境)中,并通過(guò)點(diǎn)擊IDE上的相關(guān)控件生成報(bào)告,運(yùn)就必須要求測(cè) 試人員對(duì)運(yùn)類I呢比較熟悉。
[0004] W在An化oidStudio上使用Jacoco為例,需要在An化oid工程的構(gòu)建工具gradle 里進(jìn)行一系列比較復(fù)雜的配置,重新clean工程(clean工程是指在An化oidStudio中刪除 原先編譯好的相關(guān)文件,并重新編譯),導(dǎo)出插粧后的安裝包,進(jìn)而安裝和測(cè)試,拷貝需要的 文件到指定的路徑,最后點(diǎn)擊AmlroidStudio上的指定按鈕生成代碼覆蓋率報(bào)告。
[0005]發(fā)明人發(fā)現(xiàn),在上述方案中,開(kāi)發(fā)和測(cè)試過(guò)程沒(méi)有分開(kāi),導(dǎo)出插粧后的安裝包是開(kāi) 發(fā)工作,而后面安裝、測(cè)試W及生成覆蓋率報(bào)告是測(cè)試工作,而由于Jacoco在Android Studio中使用方式的固定性,使得上述過(guò)程只能由開(kāi)發(fā)獨(dú)自完成,亟待解決運(yùn)一問(wèn)題。
【發(fā)明內(nèi)容】
[0006]鑒于上述問(wèn)題,提出了本發(fā)明W便提供一種克服上述問(wèn)題或者至少部分地解決上 述問(wèn)題的代碼覆蓋率的測(cè)試方法及相應(yīng)的裝置。
[0007]依據(jù)本發(fā)明的一方面,提供了 一種代碼覆蓋率的測(cè)試方法,包括:
[000引新建特定的測(cè)試資源發(fā)布通道,其中,所述測(cè)試資源發(fā)布通道用于將測(cè)試資源部 署到測(cè)試環(huán)境中;
[0009]當(dāng)接收到對(duì)被測(cè)程序進(jìn)行測(cè)試的指令時(shí),利用所述測(cè)試資源發(fā)布通道將所述被測(cè) 程序部署到測(cè)試環(huán)境;
[0010] 在所述測(cè)試環(huán)境中對(duì)所述被測(cè)程序進(jìn)行測(cè)試,獲取所述被測(cè)程序的代碼覆蓋率數(shù) 據(jù)。
[0011] 可選地,在利用所述測(cè)試資源發(fā)布通道將所述被測(cè)程序部署到測(cè)試環(huán)境之前,所 述方法還包括:
[0012] 對(duì)被測(cè)程序的源碼進(jìn)行插粧處理;
[0013]對(duì)插粧處理后的源碼進(jìn)行編譯并打包,得到所述被測(cè)程序。
[0014] 可選地,利用所述測(cè)試資源發(fā)布通道將所述被測(cè)程序部署到測(cè)試環(huán)境,包括:
[0015]調(diào)用所述測(cè)試資源發(fā)布通道的第一接口接收所述被測(cè)程序;W及
[0016]調(diào)用所述測(cè)試資源發(fā)布通道的第二接口將接收的所述被測(cè)程序部署到所述測(cè)試 環(huán)境。
[0017]可選地,在所述測(cè)試環(huán)境中對(duì)所述被測(cè)程序進(jìn)行測(cè)試,得到所述被測(cè)程序的代碼 覆蓋率數(shù)據(jù),包括:
[0018]在所述測(cè)試環(huán)境中,調(diào)用第一線程執(zhí)行所述被測(cè)程序的測(cè)試用例,生成所述測(cè)試 用例的測(cè)試信息,其中,所述測(cè)試信息中包括代碼覆蓋率數(shù)據(jù);
[0019]新增獨(dú)立于所述第一線程的第二線程,其中,所述第二線程具備代碼覆蓋率數(shù)據(jù) 的獲取功能;
[0020] 在所述第一線程的執(zhí)行過(guò)程中,觸發(fā)所述第二線程從所述測(cè)試信息中獲取代碼覆 蓋率數(shù)據(jù)。
[0021 ] 可選地,所述方法還包括:
[0022] 利用所述測(cè)試資源發(fā)布通道將所述被測(cè)程序的源碼提交給代碼覆蓋率工具;
[0023]在測(cè)試完成后,調(diào)用代碼覆蓋率工具,由所述代碼覆蓋率工具根據(jù)所述代碼覆蓋 率數(shù)據(jù)、所述被測(cè)程序的源碼W及所述被測(cè)程序的代碼,生成代碼覆蓋率報(bào)告。
[0024]可選地,根據(jù)所述代碼覆蓋率數(shù)據(jù)、所述被測(cè)程序的源碼W及所述被測(cè)程序的代 碼,生成代碼覆蓋率報(bào)告,包括:
[0025]對(duì)比分析所述代碼覆蓋率數(shù)據(jù)、所述被測(cè)程序的源碼W及所述被測(cè)程序的代碼, 得到代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù);
[00%]根據(jù)所述代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù),生成代碼覆蓋率報(bào)告。
[0027]可選地,所述代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù)包括下列至少之一:
[0028]指令覆蓋率數(shù)據(jù)、分支覆蓋率數(shù)據(jù)、圈復(fù)雜度覆蓋率數(shù)據(jù)、行覆蓋率數(shù)據(jù)、方法覆 蓋率數(shù)據(jù)、類覆蓋率數(shù)據(jù)。
[0029]可選地,根據(jù)所述代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù),生成代碼覆蓋率報(bào)告,包括:
[0030]計(jì)算各類代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù)的百分比值,并確定所述各類代碼覆蓋率的統(tǒng)計(jì) 數(shù)據(jù)的重要程度系數(shù);
[0031]對(duì)所述各類代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù)的百分比值和重要程度系數(shù)進(jìn)行加權(quán)求和,得 到綜合數(shù)值;
[0032]根據(jù)所述綜合數(shù)值,生成代碼覆蓋率報(bào)告。
[0033]可選地,所述測(cè)試資源發(fā)布通道包括web前臺(tái)頁(yè)面。
[0034]可選地,在生成代碼覆蓋率報(bào)告之后,所述方法還包括:
[0035] 在所述web前臺(tái)頁(yè)面展示所述代碼覆蓋率報(bào)告。
[0036]依據(jù)本發(fā)明的另一方面,還提供了 一種代碼覆蓋率的測(cè)試裝置,包括:
[0037]發(fā)布通道提供模塊,適于新建特定的測(cè)試資源發(fā)布通道,其中,所述測(cè)試資源發(fā)布 通道用于將測(cè)試資源部署到測(cè)試環(huán)境中;
[0038]導(dǎo)入模塊,適于當(dāng)接收到對(duì)被測(cè)程序進(jìn)行測(cè)試的指令時(shí),利用所述測(cè)試資源發(fā)布 通道將所述被測(cè)程序部署到測(cè)試環(huán)境;
[0039]獲取模塊,適于在所述測(cè)試環(huán)境中對(duì)所述被測(cè)程序進(jìn)行測(cè)試,獲取所述被測(cè)程序 的代碼覆蓋率數(shù)據(jù)。
[0040]可選地,所述裝置還包括:
[0041]插粧模塊,適于在所述導(dǎo)入模塊利用所述測(cè)試資源發(fā)布通道將所述被測(cè)程序部署 到測(cè)試環(huán)境之前,對(duì)被測(cè)程序的源碼進(jìn)行插粧處理;
[0042] 編譯模塊,適于對(duì)插粧處理后的源碼進(jìn)行編譯并打包,得到所述被測(cè)程序。
[0043] 可選地,所述導(dǎo)入模塊還適于:
[0044] 調(diào)用所述測(cè)試資源發(fā)布通道的第一接口接收所述被測(cè)程序;W及
[0045] 調(diào)用所述測(cè)試資源發(fā)布通道的第二接口將接收的所述被測(cè)程序部署到所述測(cè)試 環(huán)境。
[0046] 可選地,所述獲取模塊還適于:
[0047] 在所述測(cè)試環(huán)境中,調(diào)用第一線程執(zhí)行所述被測(cè)程序的測(cè)試用例,生成所述測(cè)試 用例的測(cè)試信息,其中,所述測(cè)試信息中包括代碼覆蓋率數(shù)據(jù);
[0048] 新增獨(dú)立于所述第一線程的第二線程,其中,所述第二線程具備代碼覆蓋率數(shù)據(jù) 的獲取功能;
[0049] 在所述第一線程的執(zhí)行過(guò)程中,觸發(fā)所述第二線程從所述測(cè)試信息中獲取代碼覆 蓋率數(shù)據(jù)。
[0050] 可選地,所述裝置還包括:
[0051] 提交模塊,適于利用所述測(cè)試資源發(fā)布通道將所述被測(cè)程序的源碼提交給代碼覆 蓋率工具;
[0052] 生成模塊,適于在測(cè)試完成后,調(diào)用代碼覆蓋率工具,由所述代碼覆蓋率工具根據(jù) 所述代碼覆蓋率數(shù)據(jù)、所述被測(cè)程序的源碼W及所述被測(cè)程序的代碼,生成代碼覆蓋率報(bào) 告。
[0化3] 可選地,所述生成模塊還適于:
[0054] 對(duì)比分析所述代碼覆蓋率數(shù)據(jù)、所述被測(cè)程序的源碼W及所述被測(cè)程序的代碼, 得到代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù);
[0055] 根據(jù)所述代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù),生成代碼覆蓋率報(bào)告。
[0056] 可選地,所述代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù)包括下列至少之一:
[0057] 指令覆蓋率數(shù)據(jù)、分支覆蓋率數(shù)據(jù)、圈復(fù)雜度覆蓋率數(shù)據(jù)、行覆蓋率數(shù)據(jù)、方法覆 蓋率數(shù)據(jù)、類覆蓋率數(shù)據(jù)。
[0化引可選地,所述生成模塊還適于:
[0059] 計(jì)算各類代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù)的百分比值,并確定所述各類代碼覆蓋率的統(tǒng)計(jì) 數(shù)據(jù)的重要程度系數(shù);
[0060] 對(duì)所述各類代碼覆蓋率的統(tǒng)計(jì)數(shù)據(jù)的百分比值和重要程度系數(shù)進(jìn)行加權(quán)求和,得 到綜合數(shù)值;
[0061] 根據(jù)所述綜合數(shù)值,生成代碼覆蓋率報(bào)告。
[0062] 可選地,所述測(cè)試資源發(fā)布通道包括web前臺(tái)頁(yè)面。
[0063] 可選地,所述裝置還包括:
[0064] 展示模塊,適于在所述生成模塊生成代碼覆蓋率報(bào)告之后,在所述web前臺(tái)頁(yè)面展 示所述代碼覆蓋率報(bào)告。
[0065] 在本發(fā)明實(shí)施例中,新建特定的測(cè)試資源發(fā)布通道,當(dāng)接收到對(duì)被測(cè)程序進(jìn)行測(cè) 試的指令時(shí),利用測(cè)試資源發(fā)布通道將被測(cè)程序部署到測(cè)試環(huán)境,隨后在測(cè)試環(huán)境中對(duì)被 測(cè)程序進(jìn)行測(cè)試,獲取被測(cè)程序的代碼覆蓋率數(shù)據(jù)。由此可見(jiàn),本發(fā)明實(shí)施例在測(cè)試代碼覆 蓋率時(shí),可w利用測(cè)試資源發(fā)布通道將被測(cè)程序部署到測(cè)試環(huán)境,從而將開(kāi)發(fā)和測(cè)試工作 分開(kāi),減輕了開(kāi)發(fā)的負(fù)擔(dān),提高了測(cè)試效率。
[0066]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說(shuō)明書(shū)的內(nèi)容予W實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠 更明顯易懂,W下特舉本發(fā)明的【具體實(shí)施方式】。
[0067]根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明 了本發(fā)明的上述W及其他目的、優(yōu)點(diǎn)和特征。
【附圖說(shuō)明】
[0068]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通 技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明 的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0069]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的代碼覆蓋率的測(cè)試方法的流程圖;
[007