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

獲取代碼覆蓋信息的方法及裝置制造方法

文檔序號(hào):6625876閱讀:287來(lái)源:國(guó)知局
獲取代碼覆蓋信息的方法及裝置制造方法
【專(zhuān)利摘要】一種獲取代碼覆蓋信息的方法,包括:加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記;接收代碼覆蓋信息生成指令;統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記,提取相應(yīng)的代碼覆蓋信息;將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。此外,還提供了一種獲取代碼覆蓋信息的裝置。上述獲取代碼覆蓋信息的方法及裝置能夠避免重復(fù)的測(cè)試過(guò)程,從而提高測(cè)試效率。
【專(zhuān)利說(shuō)明】獲取代碼覆蓋信息的方法及裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件測(cè)試【技術(shù)領(lǐng)域】,特別是涉及一種獲取代碼覆蓋信息的方法及裝置。

【背景技術(shù)】
[0002]在現(xiàn)有的軟件測(cè)試技術(shù)中,通常需要統(tǒng)計(jì)測(cè)試過(guò)程中的代碼覆蓋信息,其描述的是測(cè)試過(guò)程中被執(zhí)行的待測(cè)軟件的源代碼數(shù)量、位置以及占整體源代碼的比例等參數(shù)。
[0003]現(xiàn)有的獲取代碼覆蓋信息方法通常運(yùn)行多個(gè)單元測(cè)試樣例代碼,然后在軟件測(cè)試結(jié)束后統(tǒng)計(jì)待測(cè)軟件在內(nèi)存中的讀寫(xiě)地址,從而統(tǒng)計(jì)待測(cè)軟件中被執(zhí)行的代碼數(shù)量和位置,生成包含代碼覆蓋信息的報(bào)表。
[0004]然而,由于待測(cè)軟件并非正式發(fā)布的軟件產(chǎn)品,自身本就可能存在較多bug,因此,在遇到執(zhí)行單元測(cè)試樣例代碼出現(xiàn)錯(cuò)誤導(dǎo)致待測(cè)軟件崩潰(crash)中止執(zhí)行時(shí),則無(wú)法生成代碼覆蓋報(bào)告,需要測(cè)試人員在代碼修改后重復(fù)執(zhí)行測(cè)試流程,才能生成完整的代碼覆蓋報(bào)告,導(dǎo)致測(cè)試的效率較低。


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

[0005]基于此,有必要提供一種能夠提高測(cè)試效率的獲取代碼覆蓋信息的方法。
[0006]一種獲取代碼覆蓋信息的方法,包括:
[0007]加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記;
[0008]接收代碼覆蓋信息生成指令;
[0009]統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記,提取相應(yīng)的代碼覆蓋信息;
[0010]將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
[0011]此外,還有必要提供一種能夠提高測(cè)試效率的獲取代碼覆蓋信息的裝置。
[0012]一種獲取代碼覆蓋信息的裝置,包括:
[0013]代碼插樁模塊,用于加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記;
[0014]指令接收模塊,用于接收代碼覆蓋信息生成指令;
[0015]插樁統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記,提取相應(yīng)的代碼覆蓋信息;
[0016]報(bào)告生成模塊,用于將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
[0017]上述獲取代碼覆蓋信息的方法及裝置中,只要在測(cè)試過(guò)程中接收到任意方式觸發(fā)的代碼覆蓋信息生成指令(用戶(hù)輸入、定時(shí)觸發(fā)、結(jié)束觸發(fā)等方式)即獲取已測(cè)試過(guò)程涉及的代碼覆蓋信息,并以整合的方式寫(xiě)入代碼覆蓋報(bào)表存儲(chǔ)。使得在待測(cè)程序出現(xiàn)崩潰時(shí),能夠避免部分重復(fù)的測(cè)試過(guò)程,從而提高測(cè)試效率。

【專(zhuān)利附圖】

【附圖說(shuō)明】
[0018]圖1為一個(gè)實(shí)施例中獲取代碼覆蓋信息的方法的流程圖;
[0019]圖2為一個(gè)接收輸入設(shè)備輸入的代碼覆蓋信息生成指令的應(yīng)用場(chǎng)景中獲取代碼覆蓋信息的過(guò)程示意圖;
[0020]圖3為一個(gè)通過(guò)定時(shí)器生成代碼覆蓋信息生成指令的應(yīng)用場(chǎng)景中獲取代碼覆蓋信息的過(guò)程示意圖;
[0021]圖4為一個(gè)通過(guò)檢測(cè)測(cè)試流程結(jié)束來(lái)生成代碼覆蓋信息生成指令的應(yīng)用場(chǎng)景中獲取代碼覆蓋信息的過(guò)程示意圖;
[0022]圖5為一個(gè)實(shí)施例中獲取代碼覆蓋信息的裝置的結(jié)構(gòu)示意圖;
[0023]圖6為另一個(gè)實(shí)施例中獲取代碼覆蓋信息的裝置的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0024]代碼覆蓋(code coverage)信息是軟件測(cè)試中的一種度量,描述程序中源代碼被測(cè)試的比例、位置和程度,所得比例也稱(chēng)為代碼覆蓋率。例如,若某段代碼在測(cè)試過(guò)程中的代碼覆蓋率為80%,則表示該測(cè)試過(guò)程中該段代碼的80%被調(diào)用執(zhí)行了,即對(duì)80%的程序語(yǔ)句完成了測(cè)試,但還有20%的代碼由于測(cè)試時(shí)輸入的測(cè)試樣本不夠全面,導(dǎo)致某些條件分支下的程序語(yǔ)句沒(méi)有被執(zhí)行,或者某些函數(shù)沒(méi)有被調(diào)用。現(xiàn)有技術(shù)中的包含代碼覆蓋信息的報(bào)表中還可包含具體的程序語(yǔ)句執(zhí)行情況,在文件中將執(zhí)行過(guò)的程序語(yǔ)句均顯示出來(lái),方便測(cè)試人員查看。
[0025]而在現(xiàn)有的軟件測(cè)試中,測(cè)試人員先編寫(xiě)多個(gè)單元測(cè)試樣例代碼文件,通常先在源代碼中添加插樁標(biāo)記。插樁標(biāo)記即為一段用于統(tǒng)計(jì)的代碼,例如,當(dāng)代碼被調(diào)用時(shí),向內(nèi)存中特定的區(qū)域?qū)懭氡徽{(diào)用的函數(shù)的內(nèi)存地址等信息(即緩存該信息)。開(kāi)始測(cè)試后,添加了插樁標(biāo)記的源代碼即被加載到內(nèi)存中編譯執(zhí)行或解釋執(zhí)行,然后測(cè)試人員執(zhí)行多個(gè)預(yù)先定義的單元測(cè)試樣例代碼,在執(zhí)行完所有單元測(cè)試樣例代碼后,統(tǒng)計(jì)前述內(nèi)存中特定的區(qū)域中寫(xiě)入的內(nèi)存地址,生成相應(yīng)的代碼覆蓋信息。
[0026]而對(duì)于某些沒(méi)有源代碼僅有編譯后的二進(jìn)制文件的程序,測(cè)試人員則通常不方便自行對(duì)其添加插樁標(biāo)記,需要使用常用的插樁工具軟件對(duì)二進(jìn)制代碼添加插樁標(biāo)記,例如,微軟的visual stud1開(kāi)發(fā)工具的測(cè)試模塊中,在運(yùn)行單元測(cè)試樣例代碼時(shí),即自帶了為二進(jìn)制代碼文件進(jìn)行插樁并生成代碼覆蓋率的功能。其他的像e_a工具(可作為java程序開(kāi)發(fā)工具eclipse的測(cè)試插件),C/C++程序的gcov動(dòng)態(tài)鏈接庫(kù),也提供了相應(yīng)的插樁機(jī)制,現(xiàn)有的測(cè)試工具軟件可利用上述插樁工具對(duì)二進(jìn)制文件進(jìn)行插樁,從而生成代碼覆蓋信息。
[0027]但是,如前所述,現(xiàn)有的這些測(cè)試工具軟件存在下述問(wèn)題:即由于測(cè)試流程的順序執(zhí)行,因此總是在運(yùn)行完所有單元測(cè)試樣例代碼后才會(huì)統(tǒng)計(jì)由插樁工具添加的插樁標(biāo)記的執(zhí)行情況,使得在測(cè)試過(guò)程中若待測(cè)程序崩潰(例如某個(gè)函數(shù)是除法,但沒(méi)有考慮分母參數(shù)為O的情況,而單元測(cè)試樣例中剛好將分母參數(shù)設(shè)置為0,導(dǎo)致程序崩潰),則已經(jīng)執(zhí)行完成的部分單元測(cè)試樣例代碼的測(cè)試過(guò)程的代碼覆蓋信息無(wú)法得到,需要在程序恢復(fù)后重復(fù)執(zhí)行測(cè)試流程,在不發(fā)生崩潰的情況下測(cè)試完畢后方可得到相應(yīng)的代碼覆蓋信息,導(dǎo)致重復(fù)測(cè)試過(guò)程較多,從而使得測(cè)試效率低下。
[0028]因此,為解決上述問(wèn)題,特提出了獲取代碼覆蓋信息的方法。該方法完全依賴(lài)于計(jì)算機(jī)程序,該計(jì)算機(jī)程序可運(yùn)行于基于馮洛伊曼體系的計(jì)算機(jī)系統(tǒng)上。該計(jì)算機(jī)程序可以插件、函數(shù)庫(kù)(例如java語(yǔ)言中的jar包)或動(dòng)態(tài)鏈接庫(kù)(例如C/C++語(yǔ)言中的dll文件)的形式由現(xiàn)有的測(cè)試軟件或開(kāi)發(fā)工具加載調(diào)用。
[0029]在一個(gè)實(shí)施例中,如圖1所示,該方法包括:
[0030]步驟S102,加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記。
[0031]在一個(gè)待測(cè)的程序文件為源代碼文件或待測(cè)程序本身為解釋執(zhí)行的程序語(yǔ)言(例如python等)的應(yīng)用場(chǎng)景中,該方法的運(yùn)行可依賴(lài)于測(cè)試人員預(yù)先編寫(xiě)腳本程序。在測(cè)試開(kāi)始后,執(zhí)行該腳本程序批量為源代碼文件中的程序語(yǔ)句添加插樁標(biāo)記,例如,該腳本程序中可預(yù)先定義批量在函數(shù)定義語(yǔ)句中,條件分支判斷中,switch語(yǔ)句中等位置添加標(biāo)記性代碼的邏輯,標(biāo)記性代碼可以是用于向內(nèi)存中緩存函數(shù)名稱(chēng)、該函數(shù)的內(nèi)存地址等的函數(shù)。執(zhí)行添加插樁標(biāo)記的腳本程序后,當(dāng)測(cè)試過(guò)程中編譯執(zhí)行或解釋執(zhí)行該源代碼到此標(biāo)記處時(shí),則執(zhí)行標(biāo)記性代碼記錄執(zhí)行到的程序語(yǔ)句名稱(chēng)或內(nèi)存地址。
[0032]而在一個(gè)待測(cè)的程序文件為二進(jìn)制文件(已編譯)的應(yīng)用場(chǎng)景中,該方法的運(yùn)行可依賴(lài)于前述的插樁程序(插樁程序也可以對(duì)源代碼的程序文件進(jìn)行插樁)。也就是說(shuō),可調(diào)用插樁程序的插樁函數(shù)加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記。插樁工具通過(guò)在二進(jìn)制文件中寫(xiě)入二進(jìn)制碼或在加載二進(jìn)制文件到內(nèi)存中時(shí)在相應(yīng)的內(nèi)存區(qū)域添加字節(jié)碼來(lái)實(shí)現(xiàn)插樁。
[0033]例如,前述的emma插樁工具即為通過(guò)向.class文件(java語(yǔ)言的二進(jìn)制文件)中插入字節(jié)碼的方式來(lái)跟蹤記錄被運(yùn)行代碼信息的。emma插樁工具支持兩種模式:On thefly 和 Offline 模式。
[0034]On the fly模式往加載的類(lèi)中加入字節(jié)碼,相當(dāng)于用emma插樁工具替換了原有的系統(tǒng)的應(yīng)用級(jí)類(lèi)加載器(applicat1n class loader),在通過(guò)應(yīng)用級(jí)類(lèi)加載器加載待測(cè)的.class文件時(shí)則在加載過(guò)程中添加字節(jié)碼。
[0035]上述兩種模式添加的字節(jié)碼即為插樁標(biāo)記。
[0036]也就是說(shuō),待測(cè)的源代碼或二進(jìn)制代碼文件需要加載到內(nèi)存中才能運(yùn)行,從而進(jìn)行測(cè)試。而本實(shí)施例中,在測(cè)試開(kāi)始時(shí),可利用插樁工具加載待測(cè)的源代碼或二進(jìn)制代碼文件,而不是將其直接加載。
[0037]步驟S104,接收代碼覆蓋信息生成指令。
[0038]步驟S106,統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記,提取相應(yīng)的代碼覆蓋信息。
[0039]步驟S108,將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
[0040]代碼覆蓋信息生成指令即為用于觸發(fā)該方法運(yùn)行所依賴(lài)的插件、函數(shù)庫(kù)或動(dòng)態(tài)鏈接庫(kù)執(zhí)行相應(yīng)的統(tǒng)計(jì)插樁標(biāo)記的代碼的計(jì)算機(jī)指令。該方法運(yùn)行所依賴(lài)的插件、函數(shù)庫(kù)或動(dòng)態(tài)鏈接庫(kù)可設(shè)置函數(shù)檢測(cè)是否有代碼覆蓋信息生成指令輸入,若是,則統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記。
[0041]在本實(shí)施例中,前述作為插樁標(biāo)記添加的代碼,可在被執(zhí)行時(shí),向特定的內(nèi)存區(qū)域或磁盤(pán)區(qū)域?qū)懭氩鍢段恢玫膬?nèi)存地址、執(zhí)行的時(shí)間戳、函數(shù)名稱(chēng)、程序語(yǔ)句名稱(chēng)等記錄信息,每個(gè)被執(zhí)行的作為插樁標(biāo)記的代碼對(duì)應(yīng)相應(yīng)的記錄信息。在統(tǒng)計(jì)時(shí),即可在該特定的內(nèi)存區(qū)域或磁盤(pán)區(qū)域逐條讀取記錄信息。然后可按照前述的時(shí)間戳的順序?qū)懭氲秸系膱?bào)表中。
[0042]代碼覆蓋報(bào)表可以txt、xml、html文件等形式存儲(chǔ),還可根據(jù)統(tǒng)計(jì)到的記錄信息以及待測(cè)程序的代碼量計(jì)算代碼覆蓋率(即執(zhí)行的代碼占整體待測(cè)代碼的百分比)并寫(xiě)入到報(bào)表中。也可根據(jù)前述的時(shí)間戳計(jì)算代碼的執(zhí)行時(shí)間,并記錄在報(bào)表中,從而方便測(cè)試人員進(jìn)行性能分析。
[0043]在本實(shí)施例中,統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記的步驟可具體為:調(diào)用插樁程序的插樁統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記。
[0044]例如,前述的插樁程序可以是用于java程序開(kāi)發(fā)的emma工具,C/C++程序的gcov動(dòng)態(tài)鏈接庫(kù)。
[0045]在使用eclipse開(kāi)發(fā)工具開(kāi)發(fā)java程序的應(yīng)用場(chǎng)景(目前java程序開(kāi)發(fā)的常用手段,其他java語(yǔ)言的開(kāi)發(fā)工具例如IDEA等也可通過(guò)調(diào)用相應(yīng)的emma插件的jar包實(shí)現(xiàn)該功能)中,使用emma工具插樁并統(tǒng)計(jì),則調(diào)用emma工具包中的com.vladium.emma.rt.RTdumpCoverageData接口函數(shù)統(tǒng)計(jì)插樁標(biāo)記。該函數(shù)被執(zhí)行后,則可通過(guò)emma工具統(tǒng)計(jì)其在加載待測(cè)程序時(shí)添加的插樁標(biāo)記。
[0046]而在進(jìn)行C/C++的程序開(kāi)發(fā)時(shí),則可調(diào)用gcov動(dòng)態(tài)鏈接庫(kù)程序中的— _gcov_fIush接口函數(shù)統(tǒng)計(jì)插樁標(biāo)記。該函數(shù)被執(zhí)行后,則可通過(guò)調(diào)用gcov動(dòng)態(tài)鏈接庫(kù)中統(tǒng)計(jì)其在加載待測(cè)程序時(shí)添加的插樁標(biāo)記。
[0047]調(diào)用插樁程序的插樁函數(shù)添加插樁標(biāo)記,并調(diào)用插樁程序的插樁統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記??衫貌鍢冻绦蜉^成熟的插樁和統(tǒng)計(jì)算法,對(duì)二進(jìn)制待測(cè)文件進(jìn)行統(tǒng)計(jì),因此不需要提供源代碼,使得測(cè)試工具不僅能用于白盒測(cè)試,也可用于黑盒測(cè)試。
[0048]優(yōu)選的,在使用eclipse開(kāi)發(fā)java程序的應(yīng)用場(chǎng)景中,可將本方法運(yùn)行所基于的計(jì)算機(jī)程序打包成jar包并放置于相應(yīng)的classpath下,即可調(diào)用作為插樁程序的emma工具包插樁和統(tǒng)計(jì)。
[0049]進(jìn)一步的,統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記的步驟之后還包括:提取與統(tǒng)計(jì)的插樁標(biāo)記對(duì)應(yīng)的統(tǒng)計(jì)位置信息。
[0050]相應(yīng)的,在本實(shí)施例中,將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表的步驟為:根據(jù)統(tǒng)計(jì)位置信息將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
[0051]統(tǒng)計(jì)位置信息可以是內(nèi)存地址、程序語(yǔ)句名稱(chēng)或時(shí)間戳等用于定位的信息。在本實(shí)施例中,若在一次測(cè)試過(guò)程內(nèi),多次接收到代碼覆蓋信息生成指令,則將對(duì)插樁標(biāo)記進(jìn)行多次統(tǒng)計(jì),因此部分插樁標(biāo)記將被重復(fù)統(tǒng)計(jì)。引入統(tǒng)計(jì)位置信息作為參考后,在將代碼覆蓋信息寫(xiě)入代碼覆蓋報(bào)表時(shí),則可將重復(fù)的內(nèi)存地址、程序語(yǔ)句名稱(chēng)或時(shí)間戳對(duì)應(yīng)的插樁標(biāo)記的記錄信息整合。也就是說(shuō),可根據(jù)與代碼覆蓋信息對(duì)應(yīng)的內(nèi)存地址、程序語(yǔ)句名稱(chēng)或時(shí)間戳等參考信息以增量地方式將插樁標(biāo)記的記錄信息寫(xiě)入報(bào)表,從而避免重復(fù)。
[0052]進(jìn)一步的,前述的接收代碼覆蓋信息生成指令的方式可至少包括三種:
[0053]1.用戶(hù)通過(guò)輸入設(shè)備輸入代碼覆蓋信息生成指令實(shí)時(shí)獲取代碼覆蓋信息。即接收代碼覆蓋信息生成指令的步驟可具體為:接收通過(guò)輸入設(shè)備輸入的代碼覆蓋信息生成指令。
[0054]2.設(shè)置定時(shí)器,通過(guò)定時(shí)器以計(jì)劃任務(wù)的方式定時(shí)獲取代碼覆蓋信息。即接收代碼覆蓋信息生成指令的步驟之前還包括:設(shè)置定時(shí)器對(duì)象并啟動(dòng);檢測(cè)定時(shí)器對(duì)象觸發(fā)的計(jì)劃任務(wù)事件,并生成代碼覆蓋信息生成指令。
[0055]3.在測(cè)試結(jié)束后自動(dòng)獲取代碼覆蓋信息。即接收代碼覆蓋信息生成指令的步驟之前還包括:檢測(cè)源代碼或二進(jìn)制文件的執(zhí)行是否結(jié)束,若是,則觸發(fā)代碼覆蓋信息生成指令。
[0056]例如,在一個(gè)用戶(hù)通過(guò)輸入設(shè)備輸入代碼覆蓋信息生成指令的應(yīng)用場(chǎng)景中,其流程如圖2所示。測(cè)試人員可在每執(zhí)行一個(gè)單元測(cè)式樣例代碼的腳本時(shí),手動(dòng)輸入(鍵盤(pán)或鼠標(biāo)點(diǎn)擊按鈕等方式)代碼覆蓋信息生成指令。相當(dāng)于對(duì)該單元測(cè)式樣例代碼的腳本的測(cè)試過(guò)程進(jìn)行了保存。若某個(gè)單元測(cè)式樣例代碼的腳本在執(zhí)行時(shí)導(dǎo)致程序崩潰需要重啟重新進(jìn)行測(cè)試時(shí),可避免對(duì)已執(zhí)行過(guò)的測(cè)試流程進(jìn)行重復(fù)執(zhí)行,從而節(jié)約測(cè)試時(shí)間。
[0057]而在一個(gè)使用定時(shí)器定時(shí)生成指令的應(yīng)用場(chǎng)景中,其流程如圖3所示。測(cè)試人員可預(yù)先設(shè)置定時(shí)的時(shí)間參數(shù)(具體時(shí)刻或周期時(shí)長(zhǎng)),然后由定時(shí)器對(duì)象(例如java程序中的Timer類(lèi))在時(shí)刻抵達(dá)時(shí)觸發(fā)事件生成代碼覆蓋信息生成指令。若測(cè)試人員設(shè)置獲取代碼覆蓋信息的周期為5分鐘,則每隔5分鐘自動(dòng)獲取代碼覆蓋信息。若某個(gè)單元測(cè)式樣例代碼的腳本在執(zhí)行時(shí)導(dǎo)致程序崩潰需要重啟并重新進(jìn)行測(cè)試時(shí),也可避免對(duì)已執(zhí)行過(guò)的測(cè)試流程進(jìn)行重復(fù)執(zhí)行,從而節(jié)約測(cè)試時(shí)間,從而節(jié)約測(cè)試時(shí)間。而且相對(duì)于前述測(cè)試人員通過(guò)輸入設(shè)備輸入的方式,測(cè)試人員不需要頻繁輸入指令而只需要設(shè)置參數(shù)后(也可預(yù)先設(shè)置默認(rèn)的定時(shí)參數(shù))自動(dòng)進(jìn)行獲取,提高了操作的便利性。
[0058]在一個(gè)使用測(cè)試程序完自動(dòng)獲取代碼覆蓋信息的應(yīng)用場(chǎng)景中,其流程則如圖4所示。可在測(cè)試流程中加入終止測(cè)試的代碼,并在該代碼中加入觸發(fā)程序測(cè)試結(jié)束事件的代碼。則在測(cè)試流程運(yùn)行結(jié)束時(shí)執(zhí)行該代碼,并觸發(fā)相應(yīng)的事件。該方法運(yùn)行所基于的插件、函數(shù)庫(kù)或動(dòng)態(tài)鏈接庫(kù)中則可設(shè)置函數(shù)檢測(cè)該事件,從而判斷程序是否測(cè)試完成,進(jìn)而生成代碼覆蓋信息生成指令。使得測(cè)試過(guò)程在結(jié)束后能夠自動(dòng)對(duì)代碼覆蓋信息進(jìn)行獲取而不需要測(cè)試人員手動(dòng)輸入,從而提高了操作的便利性。
[0059]在一個(gè)實(shí)施例中,如圖5所示,一種獲取代碼覆蓋信息的裝置,包括:
[0060]代碼插樁模塊102,用于加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記。
[0061]指令接收模塊104,用于接收代碼覆蓋信息生成指令。
[0062]插樁統(tǒng)計(jì)模塊106,用于統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記,提取相應(yīng)的代碼覆蓋信息。
[0063]報(bào)告生成模塊108,用于將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
[0064]在本實(shí)施例中,代碼插樁模塊102用于調(diào)用插樁程序的插樁函數(shù)加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記。
[0065]插樁統(tǒng)計(jì)模塊106用于調(diào)用插樁程序的插樁統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)與代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記。
[0066]在本實(shí)施例中,插樁統(tǒng)計(jì)模塊106還用于提取與統(tǒng)計(jì)的插樁標(biāo)記對(duì)應(yīng)的統(tǒng)計(jì)位置信息。
[0067]報(bào)告生成模塊108還用于根據(jù)統(tǒng)計(jì)位置信息將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
[0068]在本實(shí)施例中,如圖6所示,該獲取代碼覆蓋信息的裝置還包括第一指令生成模塊110,用于檢測(cè)源代碼或二進(jìn)制文件的執(zhí)行是否結(jié)束,若是,則觸發(fā)代碼覆蓋信息生成指令。
[0069]在本實(shí)施例中,指令接收模塊104還用于接收通過(guò)輸入設(shè)備輸入的代碼覆蓋信息生成指令。
[0070]在本實(shí)施例中,如圖6所示,該獲取代碼覆蓋信息的裝置還包括第二指令生成模塊112,用于設(shè)置定時(shí)器對(duì)象并啟動(dòng);檢測(cè)定時(shí)器對(duì)象觸發(fā)的計(jì)劃任務(wù)事件,并生成代碼覆蓋息生成指令。
[0071]上述獲取代碼覆蓋信息的方法及裝置中,只要在測(cè)試過(guò)程中接收到任意方式觸發(fā)的代碼覆蓋信息生成指令(用戶(hù)輸入、定時(shí)觸發(fā)、結(jié)束觸發(fā)等方式)即獲取已測(cè)試過(guò)程涉及的代碼覆蓋信息,并以整合的方式寫(xiě)入代碼覆蓋報(bào)表存儲(chǔ)。使得在待測(cè)程序出現(xiàn)崩潰時(shí),能夠避免部分重復(fù)的測(cè)試過(guò)程,從而提高測(cè)試效率。
[0072]對(duì)于測(cè)試人員而言,其只需要輸入(手動(dòng)輸入、設(shè)置定時(shí)輸入等方式)代碼覆蓋信息生成指令即可實(shí)現(xiàn)對(duì)代碼覆蓋信息的獲取,因此也增加了測(cè)試人員對(duì)測(cè)試過(guò)程的控制力度。
[0073]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory, RAM)等。
[0074]以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專(zhuān)利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專(zhuān)利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【權(quán)利要求】
1.一種獲取代碼覆蓋信息的方法,包括: 加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記; 接收代碼覆蓋信息生成指令; 統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記,提取相應(yīng)的代碼覆蓋信息; 將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
2.根據(jù)權(quán)利要求1所述的獲取代碼覆蓋信息的方法,其特征在于,所述加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記的步驟為: 調(diào)用插樁程序的插樁函數(shù)加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記; 所述統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記的步驟為: 調(diào)用所述插樁程序的插樁統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記。
3.根據(jù)權(quán)利要求1或2所述的獲取代碼覆蓋信息的方法,其特征在于,所述統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記的步驟之后還包括: 提取與所述統(tǒng)計(jì)的插樁標(biāo)記對(duì)應(yīng)的統(tǒng)計(jì)位置信息; 所述將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表的步驟為: 根據(jù)所述統(tǒng)計(jì)位置信息將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
4.根據(jù)權(quán)利要求1所述的獲取代碼覆蓋信息的方法,其特征在于,所述接收代碼覆蓋信息生成指令的步驟之前還包括: 檢測(cè)所述源代碼或二進(jìn)制文件的執(zhí)行是否結(jié)束,若是,則觸發(fā)代碼覆蓋信息生成指令。
5.根據(jù)權(quán)利要求1所述的獲取代碼覆蓋信息的方法,其特征在于,所述接收代碼覆蓋信息生成指令的步驟為: 接收通過(guò)輸入設(shè)備輸入的代碼覆蓋信息生成指令。
6.根據(jù)權(quán)利要求1所述的獲取代碼覆蓋信息的方法,其特征在于,所述接收代碼覆蓋信息生成指令的步驟之前還包括: 設(shè)置定時(shí)器對(duì)象并啟動(dòng); 檢測(cè)所述定時(shí)器對(duì)象觸發(fā)的計(jì)劃任務(wù)事件,并生成代碼覆蓋信息生成指令。
7.一種獲取代碼覆蓋信息的裝置,其特征在于,包括: 代碼插樁模塊,用于加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記; 指令接收模塊,用于接收代碼覆蓋信息生成指令; 插樁統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記,提取相應(yīng)的代碼覆蓋息; 報(bào)告生成模塊,用于將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
8.根據(jù)權(quán)利要求7所述的獲取代碼覆蓋信息的裝置,其特征在于,所述代碼插樁模塊用于調(diào)用插樁程序的插樁函數(shù)加載待測(cè)源代碼或二進(jìn)制文件對(duì)其添加插樁標(biāo)記; 插樁統(tǒng)計(jì)模塊用于調(diào)用所述插樁程序的插樁統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)與所述代碼覆蓋信息生成指令對(duì)應(yīng)的插樁標(biāo)記。
9.根據(jù)權(quán)利要求7或8所述的獲取代碼覆蓋信息的裝置,其特征在于,所述插樁統(tǒng)計(jì)模塊還用于提取與所述統(tǒng)計(jì)的插樁標(biāo)記對(duì)應(yīng)的統(tǒng)計(jì)位置信息; 所述報(bào)告生成模塊還用于根據(jù)所述統(tǒng)計(jì)位置信息將提取的代碼覆蓋信息整合寫(xiě)入相應(yīng)的代碼覆蓋報(bào)表。
10.根據(jù)權(quán)利要求7所述的獲取代碼覆蓋信息的裝置,其特征在于,所述裝置還包括第一指令生成模塊,用于檢測(cè)所述源代碼或二進(jìn)制文件的執(zhí)行是否結(jié)束,若是,則觸發(fā)代碼覆蓋信息生成指令。
11.根據(jù)權(quán)利要求7所述的獲取代碼覆蓋信息的裝置,其特征在于,所述指令接收模塊還用于接收通過(guò)輸入設(shè)備輸入的代碼覆蓋信息生成指令。
12.根據(jù)權(quán)利要求7所述的獲取代碼覆蓋信息的裝置,其特征在于,所述裝置還包括第二指令生成模塊,用于設(shè)置定時(shí)器對(duì)象并啟動(dòng);檢測(cè)所述定時(shí)器對(duì)象觸發(fā)的計(jì)劃任務(wù)事件,并生成代碼覆蓋信息生成指令。
【文檔編號(hào)】G06F11/36GK104199773SQ201410447155
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2014年9月3日 優(yōu)先權(quán)日:2014年9月3日
【發(fā)明者】丁如敏, 沈東雄 申請(qǐng)人:騰訊科技(深圳)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
股票| 木兰县| 雅安市| 安西县| 怀集县| 封开县| 浏阳市| 馆陶县| 会理县| 宁强县| 铜山县| 绥德县| 大田县| 两当县| 沈阳市| 南昌县| 偃师市| 渑池县| 巴东县| 临沧市| 三穗县| 德阳市| 夹江县| 张家港市| 鸡东县| 高陵县| 灌阳县| 阳西县| 太和县| 澎湖县| 栖霞市| 平泉县| 阳山县| 白河县| 民乐县| 昆明市| 莱州市| 平山县| 阳朔县| 陵川县| 桓台县|