多版本測試數(shù)據(jù)的處理方法和裝置的制造方法
【專利摘要】本發(fā)明公開一種多版本測試數(shù)據(jù)的處理方法,包括:獲取當(dāng)前版本與前一版本的差異化結(jié)果及獲取前一版本的代碼覆蓋率;對所述當(dāng)前版本與前一版本的差異化結(jié)果及所述前一版本的代碼覆蓋率進(jìn)行差異化處理,獲得處理后的前一版本的代碼覆蓋率;獲取當(dāng)前版本的代碼覆蓋率;將所述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行合并處理,獲得當(dāng)前版本和前一版本的總代碼覆蓋率。本發(fā)明還公開一種多版本測試數(shù)據(jù)的處理裝置。本發(fā)明實現(xiàn)了多個版本之間的測試數(shù)據(jù)的合并處理,不但便于查看,而且還便于各版本在測試過程中的質(zhì)量評估,從而提高了版本測試效率以及軟件開發(fā)效率。
【專利說明】
多版本測試數(shù)據(jù)的處理方法和裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及多版本測試數(shù)據(jù)的處理方法和裝置。
【背景技術(shù)】
[0002] 隨著智能終端的快速發(fā)展,應(yīng)用于智能終端上的應(yīng)用也越來越豐富。開發(fā)者要開 發(fā)一款應(yīng)用時,需要對開發(fā)的源文件進(jìn)行多次測試,測試成功后才能發(fā)布給用戶使用。而每 一次測試后均將產(chǎn)生對應(yīng)的測試文件,若需要了解該應(yīng)用的測試過程,必須打開每個測試 文件進(jìn)行查看,給開發(fā)者增加了不便,從而降低了應(yīng)用的開發(fā)效率。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明實施例的主要目的在于提供一種多版本測試數(shù)據(jù)的處理方法和裝置,旨在 提高了應(yīng)用開發(fā)效率。
[0004] 為實現(xiàn)上述目的,本發(fā)明實施例提供了一種多版本測試數(shù)據(jù)的處理方法,包括W 下步驟:
[0005] 獲取當(dāng)前版本與前一版本的差異化結(jié)果及獲取前一版本的代碼覆蓋率;
[0006] 對所述當(dāng)前版本與前一版本的差異化結(jié)果及所述前一版本的代碼覆蓋率進(jìn)行差 異化處理,獲得處理后的前一版本的代碼覆蓋率;
[0007] 獲取當(dāng)前版本的代碼覆蓋率;
[0008] 將所述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行合并處理,獲得 當(dāng)前版本和前一版本的總代碼覆蓋率。
[0009] 此外,為實現(xiàn)上述目的,本發(fā)明實施例還提供了一種多版本測試數(shù)據(jù)的處理裝置, 包括:
[0010] 版本差異化模塊,用于獲取當(dāng)前版本與前一版本的差異化結(jié)果;
[0011] 代碼覆蓋率獲取模塊,用于獲取前一版本的代碼覆蓋率,W及獲取當(dāng)前版本的代 碼覆蓋率;
[0012] 差異化處理模塊,用于對所述當(dāng)前版本與前一版本的差異化結(jié)果及所述前一版本 的代碼覆蓋率進(jìn)行差異化處理,獲得處理后的前一版本的代碼覆蓋率;
[0013] 合并模塊,用于將所述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行 合并處理,獲得當(dāng)前版本和前一版本的總代碼覆蓋率。
[0014] 本發(fā)明實施例利用版本代碼差異化處理和覆蓋率測試處理,先根據(jù)兩個版本之間 的代碼差異化處理結(jié)果,對前一版本的代碼覆蓋率進(jìn)行差異化處理,然后再將處理后的前 一版本的代碼覆蓋率與當(dāng)前版本的代碼覆蓋率進(jìn)行合并處理,獲得兩個版本的總的代碼覆 蓋率。因此,本發(fā)明實施例實現(xiàn)了兩個版本之間的測試數(shù)據(jù)的合并處理,不但便于查看,而 且還便于各版本在測試過程中的質(zhì)量評估,從而提高了版本測試效率W及應(yīng)用開發(fā)效率。
【附圖說明】
[0015] 圖1為本發(fā)明多版本測試數(shù)據(jù)的處理系統(tǒng)一示例的結(jié)構(gòu)示意圖;
[0016] 圖2為本發(fā)明多版本測試數(shù)據(jù)的處理系統(tǒng)另一示例的結(jié)構(gòu)示意圖;
[0017] 圖3為本發(fā)明圖2中測試服務(wù)器的硬件架構(gòu)示意圖;
[0018] 圖4為本發(fā)明多版本測試數(shù)據(jù)的處理裝置第一實施例的功能模塊示意圖;
[0019] 圖5為本發(fā)明兩版本的源文件的差異化結(jié)果及代碼行對應(yīng)關(guān)系的示例圖;
[0020] 圖6為本發(fā)明多版本測試數(shù)據(jù)的處理裝置中合并處理模塊的功能模塊示意圖;
[0021] 圖7為本發(fā)明多版本測試數(shù)據(jù)的處理裝置第二實施例的功能模塊示意圖;
[0022] 圖8為本發(fā)明多版本測試數(shù)據(jù)的處理方法第一實施例的流程示意圖;
[0023] 圖9為本發(fā)明多版本測試數(shù)據(jù)的處理方法對前一版本的代碼覆蓋率進(jìn)行差異化 處理的細(xì)化流程示意圖;
[0024] 圖10為本發(fā)明多版本測試數(shù)據(jù)的處理方法對差異化處理后的前一版本的代碼覆 蓋率和當(dāng)前版本的代碼覆蓋率進(jìn)行合并處理的細(xì)化流程示意圖;
[00巧]圖11為本發(fā)明多版本測試數(shù)據(jù)的處理方法第二實施例的流程示意圖。
[0026] 本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進(jìn)一步說明。
【具體實施方式】
[0027] W下結(jié)合說明書附圖及具體實施例進(jìn)一步說明本發(fā)明的技術(shù)方案。應(yīng)當(dāng)理解,此 處所描述的具體實施例僅僅用W解釋本發(fā)明,并不用于限定本發(fā)明。
[0028] 本發(fā)明的核必思想為:本發(fā)明提供一種多版本測試數(shù)據(jù)的處理方案,該方案中,通 過將多版本測試數(shù)據(jù)進(jìn)行整合,不但便于查看,而且還便于各版本在測試過程中的質(zhì)量評 估,從而提高了版本測試效率W及軟件開發(fā)效率。
[0029] 本發(fā)明中,版本測試數(shù)據(jù)主要包括代碼覆蓋率,當(dāng)然還可包括其他的測試數(shù)據(jù)。另 夕b本發(fā)明實施例主要W手機(jī)的版本測試為例進(jìn)行描述,當(dāng)然還可W適用于其他終端的版 本測試,例如PC、平板電腦、掌上電腦、數(shù)碼設(shè)備等智能電子設(shè)備。
[0030] 如圖1所示,若開發(fā)者需要開發(fā)一款應(yīng)用于手機(jī)上的應(yīng)用app,則可W利用測試設(shè) 備200進(jìn)行代碼的編寫,并在編寫完代碼后生成可在測試客戶端100上運行的可執(zhí)行文件, 并控制該可執(zhí)行文件在測試客戶端100上運行。該測試客戶端100用于根據(jù)測試設(shè)備200 的控制運行開發(fā)者開發(fā)的應(yīng)用app,并獲得測試信息和測試日志。然后該測試客戶端100將 該測試信息和測試日志發(fā)送至測試設(shè)備200, W供開發(fā)者查看。
[0031] 如圖2所示,若開發(fā)者需要開發(fā)一款應(yīng)用于手機(jī)上的應(yīng)用app,則可W利用自己的 開發(fā)終端進(jìn)行代碼的編碼,例如開發(fā)終端300a、開發(fā)終端30化、開發(fā)終端300c。在編寫完代 碼后,將編寫好的代碼上傳至測試服務(wù)器400上,并提交測試請求。測試服務(wù)器400接收到 該測試請求后,將生成可在測試客戶端100上運行的可執(zhí)行文件,并控制該可執(zhí)行文件在 測試客戶端100上運行。該測試客戶端100用于根據(jù)測試設(shè)備200的控制運行開發(fā)者開發(fā) 的應(yīng)用app,并獲得測試信息和測試日志。然后該測試客戶端100將該測試信息和測試日志 發(fā)送至測試服務(wù)器400。測試服務(wù)器400將該測試信息和測試日志發(fā)送至開發(fā)端,W供開發(fā) 者查看。基于安全的考慮,該測試服務(wù)器400與開發(fā)終端將位于同一安全網(wǎng)絡(luò)中,例如局域 網(wǎng)、虛擬專用網(wǎng)絡(luò)等等。
[0032] 由于開發(fā)者在將開發(fā)的應(yīng)用a卵發(fā)布之前,需要經(jīng)過反復(fù)的測試,例如集成測試、 回歸測試,并根據(jù)測試結(jié)果進(jìn)行代碼的修改,因此,開發(fā)者將通過版本號記錄每次代碼的修 改及測試。為了實現(xiàn)發(fā)布之前的多個版本的測試數(shù)據(jù)的整合,本發(fā)明提出了一種多版本測 試數(shù)據(jù)的處理裝置,該處理裝置可W獨立設(shè)置,也可W設(shè)置在上述測試設(shè)備200或測試服 務(wù)器400中。
[0033] 如圖3所示,W測試服務(wù)器400為例,該測試服務(wù)器可包括處理器101、存儲器 102、通訊模塊103、處理裝置500、覆蓋率測試裝置600、代碼管理裝置700及數(shù)據(jù)總線104。 其中,數(shù)據(jù)總線104用于測試服務(wù)器400中的各組件之間的數(shù)據(jù)通信。該通訊模塊103用于 測試服務(wù)器400與外部設(shè)備的通訊,該外部設(shè)備可包括終端、服務(wù)器等等。該通訊模塊103 可包括一個或多個組件,例如有線通訊單元、無線通訊單元等等。存儲器102用于存儲測試 服務(wù)器400運行的操作系統(tǒng)W及用戶交互數(shù)據(jù)等等。當(dāng)然,若處理裝置500、覆蓋率測試裝 置600、代碼管理裝置700為軟件結(jié)構(gòu)時,其也可存儲在存儲器102中,供處理器101調(diào)用。 該存儲器102可包括內(nèi)部存儲器和外部存儲器,例如記憶卡或外接存儲卡等等。處理器101 作為測試服務(wù)器400的處理中必,用于數(shù)據(jù)處理、調(diào)動其他組件進(jìn)行工作等等。例如,該處 理器101根據(jù)開發(fā)者的請求,調(diào)取存儲器102上相應(yīng)的程序進(jìn)行執(zhí)行,W實現(xiàn)開發(fā)者所請求 的代碼測試等功能。
[0034] 可W理解的是,上述測試服務(wù)器400并不限定于上述組件,還可W根據(jù)具體的應(yīng) 用增加其他組件,例如顯示屏105、按鍵組件106、電源107等等。其中,按鍵組件106用于 接收用戶輸入的信息,并將其發(fā)送至處理器101進(jìn)行處理;顯示屏104用于接收處理器101 發(fā)送的信息,并將其W相應(yīng)的形式展示給用戶,例如顯示屏的圖像顯示及揚聲器的聲音顯 示等等??蒞理解的是,該顯示屏105也可用于接收用戶輸入的信息,例如觸摸屏,則按鍵 組件106可包括測試服務(wù)器400上的物理按鍵和該觸摸屏上的虛擬按鍵。電源用于對測試 服務(wù)器400的各組件的運行進(jìn)行電源供應(yīng)。
[0035] 如圖4所示,上述多版本測試數(shù)據(jù)的處理裝置包括:
[0036] 版本差異化模塊110,用于獲取當(dāng)前版本與前一版本的差異化結(jié)果;
[0037] 代碼覆蓋率獲取模塊120,用于獲取前一版本的代碼覆蓋率,W及獲取當(dāng)前版本的 代碼覆蓋率;
[0038] 差異化處理模塊130,用于根據(jù)所述當(dāng)前版本與前一版本的差異化結(jié)果對所述前 一版本的代碼覆蓋率進(jìn)行差異化處理,獲得處理后的前一版本的代碼覆蓋率;
[0039] 合并處理模塊140,用于將所述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆 蓋率進(jìn)行合并處理,獲得當(dāng)前版本和前一版本的總代碼覆蓋率。
[0040] 具體地,本發(fā)明實施例中,通過處理器101調(diào)用上述代碼管理裝置700進(jìn)行版本的 差異化處理,并獲得差異化結(jié)果,并將該差異化結(jié)果發(fā)送至版本差異化模塊110。該代碼管 理裝置700主要用于管理各開發(fā)app的版本,同時該代碼管理裝置700可W使用svn diff 命令獲得兩個版本的差異,并生成差異化結(jié)果。例如,某款應(yīng)用app的兩個版本經(jīng)過差異化 后的結(jié)果如下:
[0041] $svn diff -r2: Allies, txt
[0042] (1) Index:rules, txt //顯不文件
[0043] 0)= = = = = = = = = = = = = = = = //分隔符
[0044] (3)---rules, txt (revision 2) //老版本用表不
[0045] (4)++甘ules. txt (revision 3) //新版本用"+ "表不
[0046] (5)@@-1, 4+1, 4@@ //老版本顯示1~4行;新版本顯示1~4行
[0047] (6) Be kind to others //兩個版本都有
[0048] (7)-Freedom = Qiocolate Ice Cream //只有老版本有
[0049] (8)+Freedom = Responsibility //只有新版本有
[0050] 巧化veiything in moderation //兩個版本都有
[0051] (10) Qiew with your mouth open //兩個版本都有
[0052] 根據(jù)上述差異化結(jié)果可W得出兩個版本(即revisions和revisions)之間的差 異。
[0053] 通過處理器101調(diào)用上述覆蓋率測試裝置600進(jìn)行代碼覆蓋率的測試,并獲得測 試版本的代碼覆蓋率,然后將其發(fā)送至代碼覆蓋率獲取模塊120。具體為:測試客戶端100 上將安裝覆蓋率包,當(dāng)測試客戶端100上運行測試文件后,將生成.gcda文件,并將生成 的.gcda文件發(fā)送至測試服務(wù)器400。同時覆蓋率測試裝置600上將存儲有.gcno文件。 當(dāng)接收到測試客戶端100返回的.gcda文件時,通過測試工具,例如gcovUcov,將.gcda文 件和.gcno文件結(jié)合在一起生成覆蓋率文件。該覆蓋率文件具體格式如下:
[0054] TN:<Test name〉表示測試用例名稱,即通過geninfo中的一test-name選項來命 名的測試用例名稱,默認(rèn)為空;
[00巧]SF:〈File name〉表示帶全路徑的源代碼文件名;
[005引 FN: <函數(shù)起始行號〉,< 函數(shù)名〉;
[0057] FNDA: <函數(shù)被執(zhí)行的次數(shù)〉,< 函數(shù)名〉;
[0058] FNF:< 函數(shù)總數(shù)〉;
[0059] FNH:<函數(shù)總數(shù)中被執(zhí)行到的個數(shù)〉;
[0060] DA: <代碼行號〉,< 當(dāng)前行被執(zhí)行到的次數(shù)〉;
[0061] LF:〈counts〉代碼有效行總數(shù);
[006引 LH:〈counts〉代碼有效行總數(shù)中被執(zhí)行到的個數(shù);
[0063] end_of_record -條"記錄"結(jié)束符
[0064] 上述DA記錄中,將記錄源文件中所有代碼被執(zhí)行的情況。若源文件中某代碼行未 被執(zhí)行,則該代碼行對應(yīng)的DA記錄中被執(zhí)行到的次數(shù)為0。
[0065] 由于應(yīng)用app的源文件可能不止一個,因此在覆蓋率測試裝置600進(jìn)行覆蓋率測 試時,將對每個源文件進(jìn)行覆蓋率測試,并生成覆蓋率文件。然后再將該測試版本中所有的 覆蓋率文件合并,生成該應(yīng)用app的測試版本對應(yīng)的覆蓋率文件。本發(fā)明實施例中,該覆蓋 率文件的后綴名為.info。W應(yīng)用appl為例,該應(yīng)用appl進(jìn)行覆蓋率測試后,最終獲得的 覆蓋率文件將為appl. in化文件。該appl. in化中包括應(yīng)用appl中各源文件對應(yīng)的代碼 覆蓋率。
[0066] 代碼覆蓋率獲取模塊120利用上述方式獲得當(dāng)前版本的代碼覆蓋率W及前一版 本的代碼覆蓋率。然后差異化處理模塊130將根據(jù)差異化獲取模塊110所獲取的當(dāng)前版本 與前一版本的差異化結(jié)果,對所述前一版本的代碼覆蓋率進(jìn)行差異化處理,W將前一版本 的代碼覆蓋率與當(dāng)前版本的代碼覆蓋率進(jìn)行匹配處理,獲得處理后的前一版本的代碼覆蓋 率。最后,合并模塊140將當(dāng)前版本的代碼覆蓋率和前一版本的代碼覆蓋率進(jìn)行合并處理, w獲得包含當(dāng)前版本代碼覆蓋率和前一版本的代碼覆蓋率的總代碼覆蓋率。
[0067] 本發(fā)明實施例利用版本代碼差異化處理和覆蓋率測試處理,先根據(jù)兩個版本之間 的代碼差異化處理結(jié)果,對前一版本的代碼覆蓋率進(jìn)行差異化處理,然后再將處理后的前 一版本的代碼覆蓋率與當(dāng)前版本的代碼覆蓋率進(jìn)行合并處理,獲得兩個版本的總的代碼覆 蓋率。因此,本發(fā)明實施例實現(xiàn)了兩個版本之間的測試數(shù)據(jù)的合并處理,不但便于查看,而 且還便于各版本在測試過程中的質(zhì)量評估,從而提高了版本測試效率W及軟件開發(fā)效率。
[0068] 可W理解的是,上述實施例是W兩個版本之間的測試數(shù)據(jù)的整合,但是本發(fā)明并 不限定版本的數(shù)量,可個、四個,甚至更多。而且,該版本可W任意選擇。另外,本發(fā)明 實施例的測試數(shù)據(jù)的整合,既適用于全量的代碼覆蓋率整合,也適用于增量的代碼覆蓋率 整合。
[0069] 進(jìn)一步地,上述差異化處理模塊130用于:
[0070] 根據(jù)所述當(dāng)前版本與前一版本的差異化結(jié)果,確定前一版本的代碼行與當(dāng)前版本 的代碼行的對應(yīng)關(guān)系;
[0071] 根據(jù)所述前一版本的代碼行與當(dāng)前版本的代碼行的對應(yīng)關(guān)系,對所述前一版本的 代碼覆蓋率的代碼執(zhí)行行號進(jìn)行更新。
[0072] 具體地,上述處理器101調(diào)用代碼管理裝置700的差異化命令,W獲得兩個版本的 差異化結(jié)果,并將其發(fā)送給差異化處理模塊130。該差異化處理模塊130則根據(jù)當(dāng)前版本 與前一版本的差異化結(jié)果,確定前一版本的代碼行與當(dāng)前版本的代碼行的對應(yīng)關(guān)系。W版 本2的源文件A和版本3的源文件A為例,如圖5所示,由版本2和版本3的差異化結(jié)果可 知,該版本3的源文件A在版本2的源文件A的基礎(chǔ)上增加了 4行代碼,即版本3源文件A 中的第8行-第11行。因此,版本2的源文件A的代碼行與版本3的源文件A的代碼行的 映射關(guān)系如圖5所示的箭頭所示。即版本2的源文件A的代碼行的行號1-行號7與版本 3的源文件A的代碼行的行號1-7形成映射關(guān)系,版本2的源文件A的代碼行的行號8-行 號13與版本3的源文件A的代碼行的行號12-行號17形成映射關(guān)系。
[0073] 按照上述方式,獲得兩個版本之間的所有源文件的代碼行的對應(yīng)關(guān)系后,再根據(jù) 該對應(yīng)關(guān)系,對前一版本的代碼覆蓋率中各源文件對應(yīng)的記錄進(jìn)行更新。具體為;W源文件 A為例,若前一版本的該源文件A對應(yīng)的代碼覆蓋率的DA記錄中,DA的代碼行號存在前一 版本的代碼行與當(dāng)前版本的代碼行的對應(yīng)關(guān)系,則將該記錄中DA的代碼行號更新為存在 對應(yīng)關(guān)系的當(dāng)前版本的代碼行。例如,W圖5中的對應(yīng)關(guān)系為例,該源文件A對應(yīng)的代碼覆 蓋率中DA記錄的更新將如下表1所示:
[0074] 表1.源文件A對應(yīng)的代碼覆蓋率的DA記錄更新前后對比
[00 巧]
陽076] 由上表可知,經(jīng)過上述更新,獲得的前一版本的源文件A對應(yīng)的代碼覆蓋率的DA 記錄與當(dāng)前版本的源文件A對應(yīng)的代碼覆蓋率的DA記錄匹配,W便于后續(xù)的代碼覆蓋率的 合并時直接根據(jù)DA記錄中的代碼行號進(jìn)行合并。
[0077] 根據(jù)上述方法,可W將前一版本的各源文件對應(yīng)的代碼覆蓋率進(jìn)行更新,獲得處 理后的前一版本的代碼覆蓋率文件。
[007引進(jìn)一步地,如圖6所示,上述合并處理模塊140包括:
[0079] 行號比較單元141,用于比較所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述 前一版本的代碼覆蓋率的代碼執(zhí)行行號;
[0080] 更新單元142,用于根據(jù)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一 版本的代碼覆蓋率的代碼執(zhí)行行號的比較結(jié)果,對所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行 記錄進(jìn)行更新。
[0081] 獲得處理后的前一版本的代碼覆蓋率文件后,行號比較單元141將比較當(dāng)前版本 的代碼覆蓋率的DA記錄和前一版本的代碼覆蓋率的DA記錄,獲得比較結(jié)果。更新單元142 則根據(jù)該比較結(jié)果,對所述當(dāng)前版本的代碼覆蓋率的DA記錄進(jìn)行更新,例如兩版本的代碼 覆蓋率的DA記錄中代碼執(zhí)行次數(shù)的合并,當(dāng)前版本的代碼覆蓋率的代碼有效總行數(shù)被執(zhí) 行到的次數(shù),即LH記錄。
[0082] 具體為,上述更新單元142用于:
[0083] 當(dāng)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代碼覆蓋率的 代碼執(zhí)行行號一致時,將該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本被執(zhí)行到的次數(shù)與前一版本被執(zhí) 行到的次數(shù)之和,更新至該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本的代碼執(zhí)行記錄中;
[0084] 待所有的代碼執(zhí)行行號均比較結(jié)束,計算獲得所述當(dāng)前版本的代碼覆蓋率的代碼 執(zhí)行記錄中當(dāng)前版本的代碼行被執(zhí)行到的次數(shù)之和,并將其更新至所述當(dāng)前版本的代碼覆 蓋率中。
[0085] 若兩個版本的代碼覆蓋率的DA記錄中代碼行號一致,則將該兩個版本的代碼覆 蓋率的DA記錄中的代碼執(zhí)行次數(shù)之和,更新至當(dāng)前版本的代碼覆蓋率的該DA記錄中,即 DA ;<代碼行號X前一版本當(dāng)前行被執(zhí)行到的次數(shù)+當(dāng)前版本當(dāng)前行被執(zhí)行到的次數(shù)〉。 若前一版本的代碼覆蓋率的DA記錄中的代碼行號不存在當(dāng)前版本的代碼覆蓋率的DA記錄 中,則不做處理。
[0086] 經(jīng)過上述方法將當(dāng)前版本的代碼覆蓋率的所有DA記錄均更新后,計算當(dāng)前版本 的代碼覆蓋率的代碼有效總行數(shù)被執(zhí)行到的次數(shù)LH,并更新當(dāng)前版本的代碼覆蓋率的LH 記錄。
[0087] 進(jìn)一步地,如圖7所示,上述多版本測試數(shù)據(jù)的處理裝置還包括:
[0088] 頁面生成模塊150,用于生成所述當(dāng)前版本和前一版本的總代碼覆蓋率的頁面。
[0089] 在對當(dāng)前版本的代碼覆蓋率和前一版本的代碼覆蓋率進(jìn)行合并后,生成合并后的 代碼覆蓋率的html頁面。具體為;調(diào)用genhtml命令,將合并后的代碼覆蓋率文件生成 html頁面,供開發(fā)者查看。
[0090] 對應(yīng)地,基于上述處理裝置,本發(fā)明還提出了一種多版本測試數(shù)據(jù)的處理方法。如 圖8所示,該實施例中,多版本測試數(shù)據(jù)的處理方法可包括W下步驟:
[0091] 步驟S110、獲取當(dāng)前版本與前一版本的差異化結(jié)果及獲取前一版本的代碼覆蓋 率;
[0092] 步驟S120、對所述當(dāng)前版本與前一版本的差異化結(jié)果及所述前一版本的代碼覆蓋 率進(jìn)行差異化處理,獲得處理后的前一版本的代碼覆蓋率;
[0093] 步驟S130、獲取當(dāng)前版本的代碼覆蓋率;
[0094] 步驟S140、將所述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行合并 處理,獲得當(dāng)前版本和前一版本的總代碼覆蓋率。
[0095] 具體為:通過處理器101調(diào)用上述代碼管理裝置700進(jìn)行版本的差異化處理,并獲 得差異化結(jié)果。該代碼管理裝置700主要用于管理各開發(fā)app的版本,同時該代碼管理裝 置700可W使用svn diff命令獲得兩個版本的差異,并生成差異化結(jié)果。
[0096] 通過處理器101調(diào)用上述覆蓋率測試裝置600進(jìn)行代碼覆蓋率的測試,獲得當(dāng)前 版本的代碼覆蓋率和前一版本的代碼覆蓋率。具體為:測試客戶端100上將安裝覆蓋率包, 當(dāng)測試客戶端100上運行測試文件后,將生成.gcda文件,并將生成的.gcda文件發(fā)送至測 試服務(wù)器400。同時覆蓋率測試裝置600上將存儲有.gcno文件。當(dāng)接收到測試客戶端100 返回的.gcda文件時,通過測試工具,例如gcov、Icov,將.gcda文件和.gcno文件結(jié)合在 一起生成覆蓋率文件。
[0097] 然后,根據(jù)步驟S110所獲取的當(dāng)前版本與前一版本的差異化結(jié)果,對所述前一版 本的代碼覆蓋率進(jìn)行差異化處理,W將前一版本的代碼覆蓋率與當(dāng)前版本的代碼覆蓋率進(jìn) 行匹配處理,獲得處理后的前一版本的代碼覆蓋率。最后,將當(dāng)前版本的代碼覆蓋率和前一 版本的代碼覆蓋率進(jìn)行合并處理,W獲得包含當(dāng)前版本代碼覆蓋率和前一版本的代碼覆蓋 率的總代碼覆蓋率。
[0098] 本發(fā)明實施例利用版本代碼差異化處理和覆蓋率測試處理,先根據(jù)兩個版本之間 的代碼差異化處理結(jié)果,對前一版本的代碼覆蓋率進(jìn)行差異化處理,然后再將處理后的前 一版本的代碼覆蓋率與當(dāng)前版本的代碼覆蓋率進(jìn)行合并處理,獲得兩個版本的總的代碼覆 蓋率。因此,本發(fā)明實施例實現(xiàn)了兩個版本之間的測試數(shù)據(jù)的合并處理,不但便于查看,而 且還便于各版本在測試過程中的質(zhì)量評估,從而提高了版本測試效率W及軟件開發(fā)效率。
[0099] 可W理解的是,上述實施例是W兩個版本之間的測試數(shù)據(jù)的整合,但是本發(fā)明并 不限定版本的數(shù)量,可個、四個,甚至更多。而且,該版本可W任意選擇。另外,本發(fā)明 實施例的測試數(shù)據(jù)的整合,既適用于全量的代碼覆蓋率整合,也適用于增量的代碼覆蓋率 整合。
[0100] 進(jìn)一步地,如圖9所示,上述步驟S130包括:
[0101] 步驟S131、根據(jù)所述當(dāng)前版本與前一版本的差異化結(jié)果,確定前一版本的代碼行 與當(dāng)前版本的代碼行的對應(yīng)關(guān)系;
[0102] 步驟S132、根據(jù)所述前一版本的代碼行與當(dāng)前版本的代碼行的對應(yīng)關(guān)系,對所述 前一版本的代碼覆蓋率的代碼執(zhí)行行號進(jìn)行更新。
[0103] 具體地,上述處理器101調(diào)用代碼管理裝置700的差異化命令,w獲得兩個版本的 差異化結(jié)果,然后根據(jù)當(dāng)前版本與前一版本的差異化結(jié)果,確定前一版本的代碼行與當(dāng)前 版本的代碼行的對應(yīng)關(guān)系。W版本2的源文件A和版本3的源文件A為例,如圖5所示,由 版本2和版本3的差異化結(jié)果可知,該版本3的源文件A在版本2的源文件A的基礎(chǔ)上增 加了 4行代碼,即版本3源文件A中的第8行-第11行。因此,版本2的源文件A的代碼 行與版本3的源文件A的代碼行的映射關(guān)系如圖5所示的箭頭所示。即版本2的源文件A 的代碼行的行號1-行號7與版本3的源文件A的代碼行的行號1-7形成映射關(guān)系,版本2 的源文件A的代碼行的行號8-行號13與版本3的源文件A的代碼行的行號12-行號17 形成映射關(guān)系。
[0104] 按照上述方式,獲得兩個版本之間的所有源文件的代碼行的對應(yīng)關(guān)系后,再根據(jù) 該對應(yīng)關(guān)系,對前一版本的代碼覆蓋率中各源文件對應(yīng)的記錄進(jìn)行更新。具體為:W源文件 A為例,若前一版本的該源文件A對應(yīng)的代碼覆蓋率的DA記錄中,DA的代碼行號存在前一 版本的代碼行與當(dāng)前版本的代碼行的對應(yīng)關(guān)系,則將該記錄中DA的代碼行號更新為存在 對應(yīng)關(guān)系的當(dāng)前版本的代碼行。例如,W圖5中的對應(yīng)關(guān)系為例,該源文件A對應(yīng)的代碼覆 蓋率中DA記錄的更新將如上表1所示。由上表可知,經(jīng)過上述更新,獲得的前一版本的源 文件A對應(yīng)的代碼覆蓋率的DA記錄與當(dāng)前版本的源文件A對應(yīng)的代碼覆蓋率的DA記錄匹 配,W便于后續(xù)的代碼覆蓋率的合并時直接根據(jù)DA記錄中的代碼行號進(jìn)行合并。
[0105] 根據(jù)上述方法,可W將前一版本的各源文件對應(yīng)的代碼覆蓋率進(jìn)行更新,獲得處 理后的前一版本的代碼覆蓋率文件。
[0106] 進(jìn)一步地,如圖10所示,上述步驟S140包括:
[0107] 步驟S141、比較所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代 碼覆蓋率的代碼執(zhí)行行號;
[010引步驟S142、根據(jù)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代 碼覆蓋率的代碼執(zhí)行行號的比較結(jié)果,對所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行記錄進(jìn)行 更新。
[0109] 獲得處理后的前一版本的代碼覆蓋率文件后,將比較當(dāng)前版本的代碼覆蓋率的DA 記錄和前一版本的代碼覆蓋率的DA記錄,獲得比較結(jié)果。然后根據(jù)該比較結(jié)果,對所述當(dāng) 前版本的代碼覆蓋率的DA記錄進(jìn)行更新,例如兩版本的代碼覆蓋率的DA記錄中代碼執(zhí)行 次數(shù)的合并,當(dāng)前版本的代碼覆蓋率的代碼有效總行數(shù)被執(zhí)行到的次數(shù),即LH記錄。
[0110] 上述步驟S142具體為:
[0111] 當(dāng)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代碼覆蓋率的 代碼執(zhí)行行號一致時,將該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本被執(zhí)行到的次數(shù)與前一版本被執(zhí) 行到的次數(shù)之和,更新至該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本的代碼執(zhí)行記錄中;
[0112] 待所有的代碼執(zhí)行行號均比較結(jié)束,計算獲得所述當(dāng)前版本的代碼覆蓋率的代碼 執(zhí)行記錄中當(dāng)前版本的代碼行被執(zhí)行到的次數(shù)之和,并將其更新至所述當(dāng)前版本的代碼覆 蓋率中。
[0113] 具體地,若兩個版本的代碼覆蓋率的DA記錄中代碼行號一致,則將該兩個版本的 代碼覆蓋率的DA記錄中的代碼執(zhí)行次數(shù)之和,更新至當(dāng)前版本的代碼覆蓋率的該DA記錄 中,即DA ;<代碼行號X前一版本當(dāng)前行被執(zhí)行到的次數(shù)+當(dāng)前版本當(dāng)前行被執(zhí)行到的次 數(shù)〉。若前一版本的代碼覆蓋率的DA記錄中的代碼行號不存在當(dāng)前版本的代碼覆蓋率的 DA記錄中,則不做處理。
[0114] 經(jīng)過上述方法將當(dāng)前版本的代碼覆蓋率的所有DA記錄均更新后,計算當(dāng)前版本 的代碼覆蓋率的代碼有效總行數(shù)被執(zhí)行到的次數(shù)LH,并更新當(dāng)前版本的代碼覆蓋率的LH 下己〇
[0115] 進(jìn)一步地,如圖11所示,上述步驟S140之后還包括:
[0116] 步驟S150、生成所述當(dāng)前版本和前一版本的總代碼覆蓋率的頁面。
[0117] 在對當(dāng)前版本的代碼覆蓋率和前一版本的代碼覆蓋率進(jìn)行合并后,生成合并后的 代碼覆蓋率的html頁面。具體為;調(diào)用genhtml命令,將合并后的代碼覆蓋率文件生成 html頁面,供開發(fā)者查看。
[0118] W上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制其專利范圍,凡是利用本發(fā)明 說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,直接或間接運用在其他相關(guān)的技術(shù)領(lǐng) 域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【主權(quán)項】
1. 一種多版本測試數(shù)據(jù)的處理方法,其特征在于,所述多版本測試數(shù)據(jù)的處理方法包 括以下步驟: 獲取當(dāng)前版本與前一版本的差異化結(jié)果及獲取前一版本的代碼覆蓋率; 對所述當(dāng)前版本與前一版本的差異化結(jié)果及所述前一版本的代碼覆蓋率進(jìn)行差異化 處理,獲得處理后的前一版本的代碼覆蓋率; 獲取當(dāng)前版本的代碼覆蓋率; 將所述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行合并處理,獲得當(dāng)前 版本和前一版本的總代碼覆蓋率。2. 如權(quán)利要求1所述的多版本測試數(shù)據(jù)的處理方法,其特征在于,所述對所述當(dāng)前版 本與前一版本的差異化結(jié)果及所述前一版本的代碼覆蓋率進(jìn)行差異化處理,獲得處理后的 前一版本的代碼覆蓋率包括: 根據(jù)所述當(dāng)前版本與前一版本的差異化結(jié)果,確定前一版本的代碼行與當(dāng)前版本的代 碼打的對應(yīng)關(guān)系; 根據(jù)所述前一版本的代碼行與當(dāng)前版本的代碼行的對應(yīng)關(guān)系,對所述前一版本的代碼 覆蓋率的代碼執(zhí)行行號進(jìn)行更新。3. 如權(quán)利要求1所述的多版本測試數(shù)據(jù)的處理方法,其特征在于,所述將所述當(dāng)前版 本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行合并處理,獲得當(dāng)前版本和前一版本的 總代碼覆蓋率包括: 比較所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代碼覆蓋率的代 碼執(zhí)行行號; 根據(jù)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代碼覆蓋率的代 碼執(zhí)行行號的比較結(jié)果,對所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行記錄進(jìn)行更新。4. 如權(quán)利要求3所述的多版本測試數(shù)據(jù)的處理方法,其特征在于,所述根據(jù)所述當(dāng)前 版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代碼覆蓋率的代碼執(zhí)行行號的比較 結(jié)果,對所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行記錄進(jìn)行更新包括: 當(dāng)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代碼覆蓋率的代碼 執(zhí)行行號一致時,將該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本被執(zhí)行到的次數(shù)與前一版本被執(zhí)行到 的次數(shù)之和,更新至該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本的代碼執(zhí)行記錄中; 待所有的代碼執(zhí)行行號均比較結(jié)束,計算獲得所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行 記錄中當(dāng)前版本的代碼行被執(zhí)行到的次數(shù)之和,并將其更新至所述當(dāng)前版本的代碼覆蓋率 中。5. 如權(quán)利要求1-4任一項所述的多版本測試數(shù)據(jù)的處理方法,其特征在于,所述將所 述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行合并處理,獲得當(dāng)前版本和前 一版本的總代碼覆蓋率之后還包括: 生成所述當(dāng)前版本和前一版本的總代碼覆蓋率的頁面。6. -種多版本測試數(shù)據(jù)的處理裝置,其特征在于,所述多版本測試數(shù)據(jù)的處理裝置包 括: 版本差異化模塊,用于獲取當(dāng)前版本與前一版本的差異化結(jié)果; 代碼覆蓋率獲取模塊,用于獲取前一版本的代碼覆蓋率,以及獲取當(dāng)前版本的代碼覆 蓋率; 差異化處理模塊,用于對所述當(dāng)前版本與前一版本的差異化結(jié)果及所述前一版本的代 碼覆蓋率進(jìn)行差異化處理,獲得處理后的前一版本的代碼覆蓋率; 合并模塊,用于將所述當(dāng)前版本的代碼覆蓋率和所述前一版本的代碼覆蓋率進(jìn)行合并 處理,獲得當(dāng)前版本和前一版本的總代碼覆蓋率。7. 如權(quán)利要求6所述的多版本測試數(shù)據(jù)的處理裝置,其特征在于,所述差異化處理模 塊用于: 根據(jù)所述當(dāng)前版本與前一版本的差異化結(jié)果,確定前一版本的代碼行與當(dāng)前版本的代 碼打的對應(yīng)關(guān)系; 根據(jù)所述前一版本的代碼行與當(dāng)前版本的代碼行的對應(yīng)關(guān)系,對所述前一版本的代碼 覆蓋率的代碼執(zhí)行行號進(jìn)行更新。8. 如權(quán)利要求6所述的多版本測試數(shù)據(jù)的處理裝置,其特征在于,所述合并處理模塊 包括: 行號比較單元,用于比較所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本 的代碼覆蓋率的代碼執(zhí)行行號; 更新單元,用于根據(jù)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代 碼覆蓋率的代碼執(zhí)行行號的比較結(jié)果,對所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行記錄進(jìn)行 更新。9. 如權(quán)利要求8所述的多版本測試數(shù)據(jù)的處理裝置,其特征在于,所述更新單元用于: 當(dāng)所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行行號與所述前一版本的代碼覆蓋率的代碼 執(zhí)行行號一致時,將該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本被執(zhí)行到的次數(shù)與前一版本被執(zhí)行到 的次數(shù)之和,更新至該代碼執(zhí)行行號對應(yīng)的當(dāng)前版本的代碼執(zhí)行記錄中; 待所有的代碼執(zhí)行行號均比較結(jié)束,計算獲得所述當(dāng)前版本的代碼覆蓋率的代碼執(zhí)行 記錄中當(dāng)前版本的代碼行被執(zhí)行到的次數(shù)之和,并將其更新至所述當(dāng)前版本的代碼覆蓋率 中。10. 如權(quán)利要求6-9任一項所述的多版本測試數(shù)據(jù)的處理裝置,其特征在于,所述多版 本測試數(shù)據(jù)的處理裝置還包括: 頁面生成模塊,用于生成所述當(dāng)前版本和前一版本的總代碼覆蓋率的頁面。
【文檔編號】G06F11/36GK105988926SQ201510083374
【公開日】2016年10月5日
【申請日】2015年2月13日
【發(fā)明人】袁宜霞
【申請人】騰訊科技(深圳)有限公司