欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于代碼覆蓋率的測試方法和裝置的制造方法

文檔序號:9810445閱讀:542來源:國知局
一種基于代碼覆蓋率的測試方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及測試技術(shù)領(lǐng)域,特別是涉及一種基于代碼覆蓋率的測試方法和一種基 于代碼覆蓋率的測試裝置。
【背景技術(shù)】
[0002] 在對應(yīng)用進(jìn)行測試時,代碼覆蓋度是衡量測試的重要指標(biāo)之一。
[0003]無論是單元測試、API (Application Programming Interface,應(yīng)用程序編程接 口)測試還是功能性測試,最終都是調(diào)用了產(chǎn)品的代碼。
[0004] 測試結(jié)束后,通過代碼覆蓋率數(shù)據(jù),可以知道測試得是否充分,測試的弱點在哪些 方面,進(jìn)而可以指導(dǎo)設(shè)計能夠增加覆蓋率的測試用例。
[0005] 其中,以Android(安卓)平臺中,代碼覆蓋率主要使用測試工具Jacoco進(jìn)行統(tǒng)計。
[0006] 在此種方式中,需要修改應(yīng)用的源代碼,增加一個接口,當(dāng)測試完成后,在接口中 調(diào)用通過測試工具Jacoco的getExecutionData方法,導(dǎo)出覆蓋率數(shù)據(jù)。
[0007] 如果測試過程中,被測試應(yīng)用異常退出,如進(jìn)程崩潰等,將無法獲取到之前測試操 作的覆蓋率數(shù)據(jù),只能重新進(jìn)行測試,浪費資源。
[0008] 測試完成,為了導(dǎo)出覆蓋率數(shù)據(jù),需要修改被測試應(yīng)用的源代碼,對外提供觸發(fā)接 口,將覆蓋率數(shù)據(jù)寫到本地,破壞了被測試應(yīng)用的完整性,容易對測試產(chǎn)生影響。

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

[0009] 鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上 述問題的一種基于代碼覆蓋率的測試方法和相應(yīng)的一種基于代碼覆蓋率的測試裝置。
[0010] 依據(jù)本發(fā)明的一個方面,提供了一種基于代碼覆蓋率的測試方法,包括:
[0011] 當(dāng)啟動待測試的應(yīng)用時,啟動在所述應(yīng)用中注入的插件代理;
[0012] 當(dāng)測試所述應(yīng)用時,由所述插件代理生成代碼覆蓋率數(shù)據(jù);
[0013] 由所述插件代理啟動一檢測線程;
[0014] 由所述檢測線程讀取所述覆蓋率數(shù)據(jù)。
[0015] 可選地,還包括:
[0016] 在待測試的應(yīng)用的、由源代碼編譯的應(yīng)用文件中,插入標(biāo)識變量。
[0017] 可選地,所述由所述插件代理生成代碼覆蓋率數(shù)據(jù)的步驟包括:
[0018] 由所述插件代理統(tǒng)計基于被已執(zhí)行代碼所觸發(fā)的標(biāo)識變量、基于未被代碼所觸發(fā) 的標(biāo)識變量,獲得代碼覆蓋率數(shù)據(jù)。
[0019] 可選地,所述由所述檢測線程讀取所述覆蓋率數(shù)據(jù)的步驟包括:
[0020] 每間隔一定時間,由所述檢測線程讀取所述覆蓋率數(shù)據(jù),直至所述應(yīng)用退出。
[0021] 可選地,還包括:
[0022] 由所述檢測線存儲所述覆蓋率數(shù)據(jù)。
[0023] 可選地,所述由所述檢測線存儲所述覆蓋率數(shù)據(jù)的步驟包括:
[0024] 將當(dāng)前讀取的覆蓋率數(shù)據(jù)覆蓋在先存儲的覆蓋率數(shù)據(jù)。
[0025] 可選地,還包括:
[0026] 當(dāng)檢測到所述應(yīng)用的進(jìn)程崩潰時,輸出最新的覆蓋率數(shù)據(jù)。
[0027] 根據(jù)本發(fā)明的另一方面,提供了一種基于代碼覆蓋率的測試裝置,包括:
[0028] 插件代理啟動模塊,適于在啟動待測試的應(yīng)用時,啟動在所述應(yīng)用中注入的插件 代理;
[0029]代碼覆蓋率數(shù)據(jù)生成模塊,適于在測試所述應(yīng)用時,由所述插件代理生成代碼覆 蓋率數(shù)據(jù);
[0030]檢測線程啟動模塊,適于由所述插件代理啟動一檢測線程;
[0031 ]覆蓋率數(shù)據(jù)讀取模塊,適于由所述檢測線程讀取所述覆蓋率數(shù)據(jù)。
[0032] 可選地,還包括:
[0033] 離線插粧模塊,適于在待測試的應(yīng)用的、由源代碼編譯的應(yīng)用文件中,插入標(biāo)識變 量。
[0034] 可選地,所述代碼覆蓋率數(shù)據(jù)生成模塊還適于:
[0035]由所述插件代理統(tǒng)計基于被已執(zhí)行代碼所觸發(fā)的標(biāo)識變量、基于未被代碼所觸發(fā) 的標(biāo)識變量,獲得代碼覆蓋率數(shù)據(jù)。
[0036] 可選地,所述覆蓋率數(shù)據(jù)讀取模塊還適于:
[0037] 每間隔一定時間,由所述檢測線程讀取所述覆蓋率數(shù)據(jù),直至所述應(yīng)用退出。
[0038] 可選地,還包括:
[0039] 覆蓋率數(shù)據(jù)存儲模塊,適于由所述檢測線存儲所述覆蓋率數(shù)據(jù)。
[0040] 可選地,所述覆蓋率數(shù)據(jù)存儲模塊還適于:
[0041]將當(dāng)前讀取的覆蓋率數(shù)據(jù)覆蓋在先存儲的覆蓋率數(shù)據(jù)。
[0042] 可選地,還包括:
[0043]覆蓋率數(shù)據(jù)輸出模塊,適于在檢測到所述應(yīng)用的進(jìn)程崩潰時,輸出最新的覆蓋率 數(shù)據(jù)。
[0044]本發(fā)明實施例通過插件代理的檢測線程讀取插件代理生成的代碼覆蓋率數(shù)據(jù),避 免了由應(yīng)用提供接口讀取代碼覆蓋率數(shù)據(jù),避免了對其源代碼進(jìn)行修改,保證了應(yīng)用的完 整性,減少對測試的影響。
[0045] 本發(fā)明實施例通過檢測線程不斷存儲覆蓋率數(shù)據(jù),使得應(yīng)用進(jìn)程崩潰時,可以輸 出最新的覆蓋率數(shù)據(jù),獲得進(jìn)程崩潰前的覆蓋率數(shù)據(jù),避免了重新進(jìn)行測試,減少了資源的 浪費。
[0046] 上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠 更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【附圖說明】
[0047] 通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通 技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明 的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0048] 圖1示出了根據(jù)本發(fā)明一個實施例的一種基于代碼覆蓋率的測試方法實施例1的 步驟流程圖;
[0049] 圖2示出了根據(jù)本發(fā)明一個實施例的一種基于代碼覆蓋率的測試方法實施例2的 步驟流程圖
[0050] 圖3示出了根據(jù)本發(fā)明一個實施例的一種基于代碼覆蓋率的測試裝置實施例1的 結(jié)構(gòu)框圖;以及
[0051] 圖4示出了根據(jù)本發(fā)明一個實施例的一種基于代碼覆蓋率的測試裝置實施例2的 結(jié)構(gòu)框圖。
【具體實施方式】
[0052]下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開 的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例 所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍 完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0053]參照圖1,示出了根據(jù)本發(fā)明一個實施例的一種基于代碼覆蓋率的測試方法實施 例1的步驟流程圖,具體可以包括如下步驟:
[0054] 步驟101,當(dāng)啟動待測試的應(yīng)用時,啟動在所述應(yīng)用中注入的插件代理;
[0055] 在本發(fā)明實施例中,可以將測試過程中讀取代碼覆蓋率,覆蓋多個測試平臺,如 Android(安卓)、I0S、Windows Phone、Windows等等。
[0056] 為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實施例,在本發(fā)明實施例中,將Android作 為測試平臺應(yīng)用測試工具Jacoco進(jìn)行的一種示例進(jìn)行說明。
[0057] 應(yīng)用本發(fā)明實施例,可以在待測試的應(yīng)用的、由源代碼編譯的應(yīng)用文件中,插入標(biāo) 識變量,即離線插粧。
[0058]具體而言,離線插粧,是指在java代碼生成字節(jié)碼時,在代碼間插入特定的標(biāo)識變 量。
[0059] 這個過程不會修改源代碼,而是修改源代碼編譯之后的字節(jié)碼文件,如class文 件。
[0000] Jacoco工具支持gradle等構(gòu)件工具,能自動實現(xiàn)插粧過程。
[0061 ] 通過構(gòu)建任務(wù)中指定testCoverageEnabled值為true,最后生成的就是插粧之后 的應(yīng)用文件。
[0062] 例如,某個源代碼生成的class文件為:
[0064]插入標(biāo)識變量后的class文件為:
[0066] 其中,array0fBoolean[0]和arrayOfBoolean[ 1 ]就是插粧后的變量標(biāo)識,由 Jacoco工具統(tǒng)一管理,默認(rèn)值是false。
[0067] 若啟動待測試的應(yīng)用,Jacoco工具也會隨之啟動。
[0068]如果待測試的應(yīng)用中包含多進(jìn)程,根據(jù)Jacoco工具的內(nèi)部機制,每個進(jìn)程都會單 獨啟動一個插件代理。
[0069] 步驟102,當(dāng)測試所述應(yīng)用時,由所
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
自治县| 醴陵市| 安塞县| 灌阳县| 菏泽市| 韩城市| 吴忠市| 易门县| 叶城县| 保靖县| 安丘市| 邮箱| 碌曲县| 宿松县| 冕宁县| 乌鲁木齐县| 新泰市| 云浮市| 达拉特旗| 河东区| 深水埗区| 桃园县| 普宁市| 县级市| 黄冈市| 车致| 巴青县| 靖安县| 秦安县| 汉沽区| 图木舒克市| 徐州市| 丰顺县| 东丰县| 炉霍县| 郴州市| 读书| 焦作市| 安康市| 耒阳市| 沁源县|