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

代碼覆蓋率確定方法及系統(tǒng)、代碼覆蓋檢測方法及系統(tǒng)的制作方法

文檔序號:6364790閱讀:214來源:國知局
專利名稱:代碼覆蓋率確定方法及系統(tǒng)、代碼覆蓋檢測方法及系統(tǒng)的制作方法
代碼覆蓋率確定方法及系統(tǒng)、代碼覆蓋檢測方法及系統(tǒng)技術(shù)領(lǐng)域
本申請涉及軟件測試技術(shù)領(lǐng)域,特別是涉及一種基于日志文件的代碼覆蓋率確定方法及系統(tǒng)、代碼覆蓋檢測方法及系統(tǒng)。
背景技術(shù)
在計(jì)算機(jī)程序的測試過程中,代碼覆蓋率是評價(jià)測試活動(dòng)覆蓋產(chǎn)品代碼的指標(biāo),用來衡量測試對程序代碼的覆蓋程度。通過代碼覆蓋率統(tǒng)計(jì),我們能了解到程序中有多少的代碼被執(zhí)行了,對哪些代碼的測試覆蓋程序還不夠,從而發(fā)現(xiàn)程序可能會(huì)出現(xiàn)的問題。
常見的一種代碼覆蓋率確定方法為對被測試代碼的運(yùn)行情況進(jìn)行標(biāo)記,最后根據(jù)標(biāo)記來統(tǒng)計(jì)被運(yùn)行過的代碼數(shù)量,然后與代碼總量進(jìn)行比較確定出代碼覆蓋率。例如,一種方法為:確定被測試程序的總代碼量、被測試程序的基礎(chǔ)地址以及各代碼行的相對虛擬地址,根據(jù)基礎(chǔ)地址和相對虛擬地址在各代碼行內(nèi)設(shè)置中斷,監(jiān)測被測試程序執(zhí)行過程中是否有中斷發(fā)生,并對發(fā)生中斷的代碼行進(jìn)行標(biāo)記。最后累計(jì)已標(biāo)記的代碼行來獲取被執(zhí)行的代碼總量。被執(zhí)行的代碼總量除以被測試程序的總代碼量即為被測試程序的代碼覆蓋率。還有一種方法為:在測試之前對被測試程序的源代碼和配置進(jìn)行修改,在需要進(jìn)行代碼覆蓋率統(tǒng)計(jì)的源代碼上增加調(diào)試信息輸出設(shè)置,在測試過程中,程序內(nèi)部根據(jù)源代碼內(nèi)增加的調(diào)試信息記錄被執(zhí)行過的代碼,然后在測試結(jié)束時(shí)根據(jù)標(biāo)記獲取被執(zhí)行過的代碼,并與源代碼總量進(jìn)行比較獲取代碼覆蓋率。
前述的通過對源代碼運(yùn)行情況進(jìn)行標(biāo)記來確定代碼覆蓋率的方式都需要預(yù)先對源代碼進(jìn)行處理,當(dāng)源代碼總量巨大時(shí),此種方式無疑會(huì)產(chǎn)生巨大的處理工作量,影響測試進(jìn)度。另外,因?yàn)樾枰獙υ创a中進(jìn)行處理,此種確定代碼覆蓋率的方法僅適用于程序測試階段,在程序?qū)嶋H運(yùn)行中則無法實(shí)現(xiàn),限制了其適用范圍。發(fā)明內(nèi)容
本申請所要解決的技術(shù)問題是提供一種代碼覆蓋率確定方法及系統(tǒng)、代碼覆蓋檢測方法及系統(tǒng),能夠解決代碼覆蓋確定過程中工作量大、費(fèi)時(shí)費(fèi)力的情況。
為了解決上述問題,本申請公開了一種代碼覆蓋率確定方法,包括以下步驟:
獲取程序的源代碼,分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和位置信息;
獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件,基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量;
基于所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到所述程序的代碼覆蓋率。
進(jìn)一步地,所述基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括:
將所有包含有同一位置信息的日志文件合并為一個(gè);
統(tǒng)計(jì)合并后的日 志文件的總量,即為實(shí)際輸出日志文件的日志輸出點(diǎn)的數(shù)量。
進(jìn)一步地,所述基于日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括:統(tǒng)計(jì)實(shí)際輸出的日志文件的總量;基于所述位置信息統(tǒng)計(jì)每一個(gè)日志文件輸出點(diǎn)所輸出的日志文件實(shí)際數(shù)量,若大于1,則用實(shí)際數(shù)量減去I得到重復(fù)次數(shù);用總量減去所有的重復(fù)次數(shù)得到最終的實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。進(jìn)一步地,所述基于日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括:SI,建立數(shù)量記錄表,其中數(shù)量的初始值為O ;S2,選取一個(gè)實(shí)際輸出的日志文件,獲取其中所記載的對應(yīng)日志文件輸出點(diǎn)的位
置信息;S3,判斷數(shù)量記錄中是否包含該位置信息,若不包含,則在數(shù)量記錄中添加該位置信息,并將數(shù)量加I,進(jìn)行步驟S4 ;反之,則進(jìn)行步驟S4 ;

S4,判斷是否還有實(shí)際輸出的日志文件,若是,則返回步驟S2,反之,則確定數(shù)量紀(jì)錄表中的數(shù)量值為實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。進(jìn)一步地,所述獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件包括:從程序預(yù)定的存儲(chǔ)位置讀取程序輸出的日志文件;或從程序預(yù)定的接口接收程序發(fā)送的日志文件。進(jìn)一步地,所述分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量包括:分析不同文件夾中所包含的源代碼的日志文件輸出點(diǎn)的理論數(shù)量;所述程序運(yùn)行時(shí)實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括各文件夾中實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。為了解決上述問題,本申請還公開了一種代碼覆蓋率確定系統(tǒng),包括:日志文件輸出點(diǎn)信息獲取模塊,用于獲取程序的源代碼,并分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和位置信息;實(shí)際日志文件輸出點(diǎn)數(shù)量確定模塊,用于獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件,基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量;代碼覆蓋率確定模塊,用于基于所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到所述程序的代碼覆蓋率。進(jìn)一步地,所述實(shí)際日志文件輸出點(diǎn)數(shù)量確定模塊實(shí)際日志文件輸出點(diǎn)數(shù)量確定模塊包括:讀取單元,用于從程序預(yù)定的存儲(chǔ)位置讀取程序輸出的日志文件;或接收單元,用于從程序預(yù)定的接口接收程序發(fā)送的日志文件。為了解決上述問題,本申請還公開了一種代碼覆蓋檢測方法,包括以下步驟:基于所述實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定源代碼中實(shí)際輸出日志文件的日志文件輸出點(diǎn);基于所述實(shí)際輸出日志文件的日志文件輸出點(diǎn)和理論上的日志文件輸出點(diǎn),確定出未輸出日志文件的日志文件輸出點(diǎn);
基于所述未輸出日志文件的日志文件輸出點(diǎn)確定出未被覆蓋到的代碼。
為了解決上述問題,本申請還公開了一種代碼覆蓋檢測方法,包括以下步驟:
獲取程序在不同運(yùn)行環(huán)境中的實(shí)際輸出的日志文件;
基于所有運(yùn)行環(huán)境中實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定在某些運(yùn)行環(huán)境中輸出而在其它運(yùn)行環(huán)境中未輸出日志文件的日志文件輸出點(diǎn);
基于所述未輸出日志文件的日志文件輸出點(diǎn)確定出對應(yīng)運(yùn)行環(huán)境中未被覆蓋到的代碼。
為了解決上述問題,本申請還公開了一種代碼覆蓋檢測系統(tǒng),包括:
日志文件輸出點(diǎn)確定模塊,用于基于所述實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定源代碼中實(shí)際輸出日志文件的日志文件輸出點(diǎn);
比較模塊,用于基于所述實(shí)際輸出日志文件的日志文件輸出點(diǎn)和理論上的日志文件輸出點(diǎn),確定出未輸出日志文件的日志文件輸出點(diǎn);或用于比較不同運(yùn)行環(huán)境中實(shí)際輸出日志文件,確定出在某些運(yùn)行環(huán)境中輸出而在其它運(yùn)行環(huán)境中未輸出日志文件的日志文件輸出點(diǎn);
未覆蓋代碼確定模塊,用于基于未輸出日志文件的日志文件輸出點(diǎn)確定出未被覆蓋到的代碼。
與現(xiàn)有技術(shù)相比 ,本申請包括以下優(yōu)點(diǎn):
本申請基于日志文件來確定代碼覆蓋率,通過分析源代碼中理論上應(yīng)該輸出日志文件的日志文件輸出點(diǎn),再獲取實(shí)際輸出的日志文件中記載的對應(yīng)日志輸出點(diǎn)的數(shù)量,從而可以快速的確定出代碼覆蓋率。因?yàn)槿罩疚募敵鳇c(diǎn)與若干代碼對應(yīng),如果其能正常輸出,便表示與之對應(yīng)的代碼被運(yùn)行過,反之,則說明與之對應(yīng)的代碼未被運(yùn)行過,因此通過日志文件來確定代碼覆蓋率所得到的最終值雖然不是精確的運(yùn)行過的代碼行數(shù)與未被運(yùn)行過的代碼行數(shù)的比值,但是可以準(zhǔn)確的表示出代碼運(yùn)行的狀況,可以很好滿足依據(jù)代碼覆蓋率來檢測程序、發(fā)現(xiàn)問題的要求。通過此種方式來確定代碼覆蓋率無需對源代碼進(jìn)行處理,而是借助于源代碼本身資源實(shí)現(xiàn),從而可以節(jié)省測試工作量和確定代碼覆蓋率的時(shí)間。另外,因?yàn)槲磳υ创a進(jìn)行處理,除了在測試環(huán)境中可以實(shí)現(xiàn),在實(shí)際運(yùn)行環(huán)境中也可以實(shí)現(xiàn),具有較好的適用性。
進(jìn)一步地,本申請還基于日志文件來確定未被覆蓋的代碼,可以快速的查找到源代碼中未被覆蓋運(yùn)行的代碼。特別的,通過對不同運(yùn)行環(huán)境中的日志文件進(jìn)行比較,還可以查找到不同運(yùn)行環(huán)境中未被覆蓋運(yùn)行的代碼,從而可以幫助查找到平常方法不易找到的測試死角,便于發(fā)現(xiàn)問題。
當(dāng)然,實(shí)施本申請的任一產(chǎn)品不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。


圖1是本申請的代碼覆蓋率確定方法實(shí)施例一的流程圖2是本申請的代碼覆蓋率確定方法實(shí)施例二的流程圖3是本申請的代碼覆蓋檢測方法實(shí)施例一的流程圖4是本申請的代碼覆蓋檢測方法實(shí)施例二的流程圖;圖5是本申請的代碼覆蓋率確定系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖;圖6是本申請的代碼覆蓋檢測系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本申請作進(jìn)一步詳細(xì)的說明。參照圖1,示出本申請的一種基于日志文件的代碼覆蓋率確定方法實(shí)施例一,包括以下步驟:步驟101,獲取程序的源代碼,分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和位
置信息。一般來說,為了能夠在程序后期維護(hù)、檢查過程中更容易發(fā)現(xiàn)和解決實(shí)際問題,源代碼中都會(huì)設(shè)置日志文件輸出點(diǎn),記錄對應(yīng)的代碼行的運(yùn)行情況。一個(gè)日志文件輸出點(diǎn)通常會(huì)對應(yīng)若干代碼行,如果這些代 碼行能夠正常運(yùn)行,就會(huì)有對應(yīng)的日志文件輸出。這些日志文件輸出點(diǎn)通常會(huì)有預(yù)定的格式標(biāo)示出來,通過掃描分析程序的源代碼,便可以獲取到設(shè)置的日志文件輸出點(diǎn)、該日志文件輸出點(diǎn)在源代碼中的位置信息,以及對應(yīng)的對他日志內(nèi)容(例如日志寫入的記錄,日志級別等等),從而便可以得出日志文件輸出點(diǎn)的理論數(shù)量,即假設(shè)程序的所有源代碼都正常執(zhí)行時(shí),輸出日志文件的日志文件輸出點(diǎn)的總量。常見的掃描過程為:對日志程序的特征進(jìn)行整個(gè)源代碼的掃描,確定整個(gè)源代碼中所有日志的信息,也可以通過ctag等方式來替代全文掃描。 步驟102,獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件,基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。因?yàn)槌绦蜻\(yùn)行過程中,如果應(yīng)該輸出日志文件位置的代碼行被運(yùn)行過,則必定會(huì)有對應(yīng)的日志文件輸出,通過統(tǒng)計(jì)程序運(yùn)行時(shí)輸出日志文件,并分析其中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息,便可以統(tǒng)計(jì)出實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量,即可統(tǒng)計(jì)出被運(yùn)行過的代碼。其中,程序運(yùn)行時(shí)輸出的日志文件一般會(huì)按照預(yù)訂路徑存儲(chǔ),可以直接從存儲(chǔ)的地方讀取這些日志文件,也可以修改程序運(yùn)行時(shí)的輸出日志文件的存儲(chǔ)路徑或者在程序中添加接口,使其直接將日志文件輸出給代碼覆蓋率確定系統(tǒng)。可以理解,為了避免影響程序的正常運(yùn)行,可以設(shè)定程序輸出日志文件到代碼覆蓋率確定系統(tǒng)的頻率,例如,每半小時(shí)或者一小時(shí)輸出一次,或者在程序運(yùn)行完成后一次性輸出。確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量可以通過多種方式確定。若每一個(gè)日志文件輸出點(diǎn)只輸出一個(gè)日志文件,則可以實(shí)際輸出日志文件的總量即為實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。但是在實(shí)際運(yùn)行中,可能會(huì)出現(xiàn)同一日志文件輸出點(diǎn)輸出多個(gè)日志文件的情況,為了保證結(jié)果的準(zhǔn)確性,還需要去除重復(fù)的部分。具體可以通過如下方式來實(shí)現(xiàn):第一種為:首先分析所有實(shí)際輸出的日志文件的內(nèi)容,獲取其中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置,然后將所有包含有同一位置信息的日志文件合并為一個(gè);統(tǒng)計(jì)合并后的日志文件的總量,即為實(shí)際輸出日志文件的日志輸出點(diǎn)的數(shù)量。
第二種為:統(tǒng)計(jì)實(shí)際輸出的日志文件的總量;基于日志文件中記載的對應(yīng)日志輸出點(diǎn)的位置信息統(tǒng)計(jì)每一個(gè)日志文件輸出點(diǎn)所輸出的日志文件實(shí)際數(shù)量,若大于I,則用實(shí)際數(shù)量減去I得到重復(fù)次數(shù);用總量減去所有的重復(fù)次數(shù)得到最終的實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。例如,實(shí)際輸出的日志文件的總量200,某一位置輸出的日志文件實(shí)際數(shù)量為10,則用10減I之后得到重復(fù)的次數(shù)為9,然后再用200減去9。其他位置若有相同情況,也采用相同方法,直到所有重復(fù)次數(shù)都已減完得到的最終數(shù)即為實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。第三種為:SI,建立數(shù)量記錄表,其中數(shù)量的初始值為O ;S2,選取一個(gè)實(shí)際輸出的日志文件,獲取其中所記載的對應(yīng)日志文件輸出點(diǎn)的位
置信息;S3,判斷數(shù)量記錄中是否包含該位置信息,若不包含,則在數(shù)量記錄中添加該位置信息,并將數(shù)量加I,進(jìn)行步驟S4 ;反之,則進(jìn)行步驟S4 ; S4,判斷是否還有實(shí)際輸出的日志文件,若是,則返回步驟S2,反之,則確定數(shù)量紀(jì)錄表中的數(shù)量值為實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量??梢岳斫?,除了上述方式,還可以根據(jù)實(shí)際情況采用其他方式,只要能將其中的重復(fù)部分減去即可,本申請對此并不限制,步驟103,基于所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到所述程序的代碼覆蓋率。源代碼中日志文·件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量的比值即為代碼覆蓋率。。本申請的代碼覆蓋率因?yàn)椴簧婕皩?shí)際代碼數(shù)量,因此得到的代碼覆蓋率與實(shí)際的代碼覆蓋率可能并不是絕對數(shù)值上的相同。但是,可以理解的是,代碼覆蓋率的確定不是僅僅得到一個(gè)絕對數(shù)值,而是需要從這個(gè)代碼覆蓋率中去查找源代碼中可能會(huì)出現(xiàn)的問題,所以,采用本申請的代碼覆蓋率的方法得到的雖然不是代碼覆蓋率的準(zhǔn)確數(shù)值,但是其中輸出的日志文件表示的是與該日志文件輸出點(diǎn)對應(yīng)的若干代碼行被運(yùn)行過,可以準(zhǔn)確的體現(xiàn)出源代碼中各部分代碼整體運(yùn)行的情況。例如,如果一個(gè)日志文件輸出點(diǎn)在實(shí)際運(yùn)行時(shí)并沒有日志文件輸出,就說明這個(gè)地方的源代碼出現(xiàn)了問題,即使這個(gè)日志文件輸出點(diǎn)對應(yīng)的若干代碼行中有一部分被運(yùn)行過,在確定代碼覆蓋率時(shí)也可以不考慮這幾行,因?yàn)榭紤]與否都不會(huì)影響查找源代碼的問題。參照圖2,示出本申請的基于日志文件的代碼覆蓋率方法實(shí)施例二,因?yàn)橐粋€(gè)程序通常包含多個(gè)功能模塊,在編寫源代碼的過程中,通常會(huì)將各功能模塊對應(yīng)的代碼分別放置在不同的文件夾中,以便更好的查找區(qū)分。因此本申請的代碼覆蓋率方法實(shí)施例二還包括以下步驟:步驟201,獲取程序的源代碼,分析不同文件夾中所包含的源代碼的日志文件輸出點(diǎn)的理論數(shù)量。步驟202,獲取程序運(yùn)行時(shí)各文件夾中實(shí)際輸出日志文件的日志輸出點(diǎn)的數(shù)量。步驟203,基于所述各文件夾中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到各文件夾的代碼覆蓋率。通過分析各文件夾的代碼覆蓋率可以更為直觀的確定程序的源代碼中問題所在的地方。例如通過計(jì)算得出,某一文件夾的代碼覆蓋率為100%,而另一文件夾的代碼覆蓋率為30%,那么可以判斷出后一文件夾對應(yīng)的源代碼可能有問題存在,從而可以方便后續(xù)維護(hù)修改源代碼時(shí)定位。
可以理解,采用此種方式確定源代碼整體的代碼覆蓋率時(shí),可以直接將步驟201和步驟202的數(shù)量分別加總,然后采用與實(shí)施例一相同的方式來實(shí)現(xiàn),在此不再贅述。
另外,因?yàn)槌绦蜻\(yùn)行時(shí)輸出的日志文件會(huì)包括以下字段信息:時(shí)間、級別(Fatal/Error/Warning/Info/Debug等)、日志文件輸出點(diǎn)在源代碼的哪個(gè)文件及哪一行輸出,和日志的具體內(nèi)容。通過對這些日志文件中的信息的分析可以準(zhǔn)確得出在某一次運(yùn)行過程中,日志文件的輸出情況,并能夠準(zhǔn)確的與源代碼中的具體代碼行進(jìn)行對應(yīng)。例如,程序運(yùn)行時(shí)輸出的一個(gè)日志文件如下所示:
[2011-09-21 11:44:57.009137](時(shí)間)
[WARNING]
[18316]
[build/debug64/component/sub_path/file.cpp:1181]
—TARGET_ID—:sys/component
PROFILING:Tubo start the fuxi work item:1316576697
可以看出,該日志文件時(shí)間為“2011-09-21 11:44:57.009137”,級別為“WARNING”,其對應(yīng)的日志文件輸出點(diǎn)在源代碼中的位置為“build/debug64/component/sub_path/file.cpp: 1181,,。
因此,本申請還可以基于日志文件中的信息來實(shí)現(xiàn)代碼覆蓋的檢測,確定出運(yùn)行環(huán)境中某一程序的代碼覆蓋程度。
參照圖3,示出一種基于日志文件的代碼覆蓋檢測方法實(shí)施例一,包括:
步驟301,基于所述實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定源代碼中實(shí)際輸出日志文件的日志文件輸出點(diǎn)。
步驟302,基于所述實(shí)際輸出日志文件的日志文件輸出點(diǎn)和理論上的日志文件輸出點(diǎn),確定出未輸出日志文件的日志文件輸出點(diǎn)。
步驟303,基于所述未輸出日志文件的日志文件輸出點(diǎn)確定出未被覆蓋到的代碼。
因?yàn)槿罩疚募杏涊d的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,從而可以確定源代碼被運(yùn)行的代碼所對應(yīng)的日志文件輸出點(diǎn)所在位置,通過與理論上的日志文件輸出點(diǎn)進(jìn)行比較,便可以確定出未輸出日`志文件的日志文件輸出點(diǎn),從而確定出未被覆蓋到的代碼。
優(yōu)選地,程序的測試通常會(huì)在不同環(huán)境中進(jìn)行,從而盡可能的模擬出其實(shí)際運(yùn)行環(huán)境,實(shí)現(xiàn)多角度檢測。例如,單元測試、集成測試、生產(chǎn)環(huán)境等等,不同的運(yùn)行環(huán)境,代碼覆蓋率并不會(huì)完全相同,也即其實(shí)際輸出的日志文件也可能會(huì)不同。因此,參照圖4,示出本申請的基于日志文件的代碼覆蓋檢測方法實(shí)施例二,其可以用于比較不同運(yùn)行環(huán)境中的代碼覆蓋程度,包括以下步驟:
步驟401,獲取程序在不同運(yùn)行環(huán)境中的實(shí)際輸出的日志文件。
步驟402,基于所有運(yùn)行環(huán)境中實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定在某些運(yùn)行環(huán)境中輸出而在其它運(yùn)行環(huán)境中未輸出日志文件的日志文件輸出點(diǎn)。步驟403,基于所述未輸出日志文件的日志文件輸出點(diǎn)確定出對應(yīng)運(yùn)行環(huán)境中未被覆蓋到的代碼。若某一日志文件輸出點(diǎn)的源代碼位置未在所有環(huán)境下的日志文件中記載,則說明這一個(gè)源代碼位置對應(yīng)的日志文件輸出點(diǎn)在某些環(huán)境下并未輸出日志文件,則可以確定在未記載該源代碼位置的日志文件所對應(yīng)的環(huán)境中存在未覆蓋到的代碼。例如,程序的運(yùn)行環(huán)境包括單元測試環(huán)境,集成測試環(huán)境以及生產(chǎn)環(huán)境三種。通過比較三種運(yùn)行環(huán)境日志文件中的記錄如果發(fā)現(xiàn)在單元測試環(huán)境和集成測試環(huán)境中有對應(yīng)的日志文件,而在生產(chǎn)環(huán)境中沒有,則說明在單元測試環(huán)境和集成測試環(huán)境中覆蓋的一些代碼,在生產(chǎn)環(huán)境中并未被覆蓋到。因此,通過對日志文件記載的信息進(jìn)行比較,便可以快速的找到未被覆蓋到的代碼,從而便于后續(xù)對程序的修改和維護(hù)。參照圖5,示出本申請的代碼覆蓋率確定系統(tǒng)實(shí)施例一,包括日志文件輸出點(diǎn)信息獲取模塊10、實(shí)際日志文件輸出點(diǎn)數(shù)量確定模塊20和代碼覆蓋率確定模塊30。日志文件輸出點(diǎn)信息獲取模塊10,用于獲取程序的源代碼,并分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和位置信息。實(shí)際日志文件輸出點(diǎn)數(shù)量確定模塊20,用于獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件,基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。優(yōu)選地,其包括讀取單元或接收單元。讀取單元,用于從程序預(yù)定的存儲(chǔ)位置讀取程序輸出的日志文件。接收單元,用于從程序預(yù)定的接口接收程序發(fā)送的日志文件。其中,實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量可以采用但不限于如下方式確定:第一種為:首先分析所有實(shí)際輸出的日志文件的內(nèi)容,獲取其中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置,然后將所有包含有同一位置信息的日志文件合并為一個(gè);統(tǒng)計(jì)合并后的日志文件的總量 ,即為實(shí)際輸出日志文件的日志輸出點(diǎn)的數(shù)量。第二種為:統(tǒng)計(jì)實(shí)際輸出的日志文件的總量;基于日志文件中記載的對應(yīng)日志輸出點(diǎn)的位置信息統(tǒng)計(jì)每一個(gè)日志文件輸出點(diǎn)所輸出的日志文件實(shí)際數(shù)量,若大于I,則用實(shí)際數(shù)量減去I得到重復(fù)次數(shù);用總量減去所有的重復(fù)次數(shù)得到最終的實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。第三種為:SI,建立數(shù)量記錄表,其中數(shù)量的初始值為O ;S2,選取一個(gè)實(shí)際輸出的日志文件,獲取其中所記載的對應(yīng)日志文件輸出點(diǎn)的位
置信息;S3,判斷數(shù)量記錄中是否包含該位置信息,若不包含,則在數(shù)量記錄中添加該位置信息,并將數(shù)量加I,進(jìn)行步驟S4 ;反之,則進(jìn)行步驟S4 ;S4,判斷是否還有實(shí)際輸出的日志文件,若是,則返回步驟S2,反之,則確定數(shù)量紀(jì)錄表中的數(shù)量值為實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。代碼覆蓋率確定模塊30,用于基于所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到所述程序的代碼覆蓋率。參照圖6,示出本申請的基于日志文件的代碼覆蓋檢測系統(tǒng),包括日志文件輸出點(diǎn)確定模塊50、比較模塊60和未覆蓋代碼確定模塊70。
日志文件輸出點(diǎn)確定模塊50,用于基于所述實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定源代碼中實(shí)際輸出日志文件的日志文件輸出點(diǎn)。
比較模塊60,用于基于所述實(shí)際輸出日志文件的日志文件輸出點(diǎn)和理論上的日志文件輸出點(diǎn),確定出未輸出日志文件的日志文件輸出點(diǎn);或用于比較不同運(yùn)行環(huán)境中實(shí)際輸出日志文件,確定出在某些運(yùn)行環(huán)境中輸出而在其它運(yùn)行環(huán)境中未輸出日志文件的日志文件輸出點(diǎn)。
未覆蓋代碼確定模塊70,用于基于未輸出日志文件的日志文件輸出點(diǎn)確定出未被覆蓋到的代碼。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
以上對本申請所提供的代碼覆蓋率確定方法及系統(tǒng)、代碼覆蓋檢測方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本申請的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對 本申請的限制。
權(quán)利要求
1.一種代碼覆蓋率確定方法,其特征在于,包括以下步驟: 獲取程序的源代碼,分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和位置信息; 獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件,基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量; 基于所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到所述程序的代碼覆蓋率。
2.如權(quán)利要求1所述的代碼覆蓋率確定方法,其特征在于,所述基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括: 將所有包含有同一位置信息的日志文件合并為一個(gè); 統(tǒng)計(jì)合并后的日志文件的總量,即為實(shí)際輸出日志文件的日志輸出點(diǎn)的數(shù)量。
3.如權(quán)利要求1所述的代碼覆蓋率確定方法,其特征在于,所述基于日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括: 統(tǒng)計(jì)實(shí)際輸出的日志文件的總量; 基于所述位置信息統(tǒng)計(jì)每一個(gè)日志文件輸出點(diǎn)所輸出的日志文件實(shí)際數(shù)量,若大于I,則用實(shí)際數(shù)量減去I得到重復(fù)次數(shù); 用總量減去所有的重復(fù)次數(shù)得到最終的實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。
4.如權(quán)利要求1所述的代碼覆蓋率確定方法,其特征在于,所述基于日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括: SI,建立數(shù)量記錄表,其中數(shù)量的初始值為O ; S2,選取一個(gè)實(shí)際輸出的日志文件,獲取其中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息; S3,判斷數(shù)量記錄中是否包含該位置信息,若不包含,則在數(shù)量記錄中添加該位置信息,并將數(shù)量加I,進(jìn)行步驟S4 ;反之,則進(jìn)行步驟S4 ; S4,判斷是否還有實(shí)際輸出的日志文件,若是,則返回步驟S2,反之,則確定數(shù)量紀(jì)錄表中的數(shù)量值為實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。
5.如權(quán)利要求1至4任一項(xiàng)所述的代碼覆蓋率確定方法,其特征在于,所述獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件包括: 從程序預(yù)定的存儲(chǔ)位置讀取程序輸出的日志文件;或 從程序預(yù)定的接口接收程序發(fā)送的日志文件。
6.如權(quán)利要求1至4任一項(xiàng)所述的代碼覆蓋率確定方法,其特征在于,所述分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量包括:分析不同文件夾中所包含的源代碼的日志文件輸出點(diǎn)的理論數(shù)量; 所述程序運(yùn)行時(shí)實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量包括各文件夾中實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量。
7.一種代碼 覆蓋率確定系統(tǒng),其特征在于,包括: 日志文件輸出點(diǎn)信息獲取模塊,用于獲取程序的源代碼,并分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和位置信息; 實(shí)際日志文件輸出點(diǎn)數(shù)量確定模塊,用于獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件,基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量; 代碼覆蓋率確定模塊,用于基于所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到所述程序的代碼覆蓋率。
8.如權(quán)利要求7所述的代碼覆蓋率確定系統(tǒng),其特征在于,所述實(shí)際日志文件輸出點(diǎn)數(shù)量確定模塊實(shí)際日志 文件輸出點(diǎn)數(shù)量確定模塊包括: 讀取單元,用于從程序預(yù)定的存儲(chǔ)位置讀取程序輸出的日志文件;或 接收單元,用于從程序預(yù)定的接口接收程序發(fā)送的日志文件。
9.一種代碼覆蓋檢測方法,其特征在于,包括以下步驟: 基于所述實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定源代碼中實(shí)際輸出日志文件的日志文件輸出點(diǎn); 基于所述實(shí)際輸出日志文件的日志文件輸出點(diǎn)和理論上的日志文件輸出點(diǎn),確定出未輸出日志文件的日志文件輸出點(diǎn); 基于所述未輸出日志文件的日志文件輸出點(diǎn)確定出未被覆蓋到的代碼。
10.一種代碼覆蓋檢測方法,其特征在于,包括以下步驟: 獲取程序在不同運(yùn)行環(huán)境中的實(shí)際輸出的日志文件; 基于所有運(yùn)行環(huán)境中實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定在某些運(yùn)行環(huán)境中輸出而在其它運(yùn)行環(huán)境中未輸出日志文件的日志文件輸出點(diǎn); 基于所述未輸出日志文件的日志文件輸出點(diǎn)確定出對應(yīng)運(yùn)行環(huán)境中未被覆蓋到的代碼。
11.一種代碼覆蓋檢測系統(tǒng),其特征在于,包括: 日志文件輸出點(diǎn)確定模塊,用于基于所述實(shí)際輸出的日志文件中記載的對應(yīng)日志文件輸出點(diǎn)在源代碼中的位置信息,確定源代碼中實(shí)際輸出日志文件的日志文件輸出點(diǎn); 比較模塊,用于基于所述實(shí)際輸出日志文件的日志文件輸出點(diǎn)和理論上的日志文件輸出點(diǎn),確定出未輸出日志文件的日志文件輸出點(diǎn);或用于比較不同運(yùn)行環(huán)境中實(shí)際輸出日志文件,確定出在某些運(yùn)行環(huán)境中輸出而在其它運(yùn)行環(huán)境中未輸出日志文件的日志文件輸出點(diǎn); 未覆蓋代碼確定模塊,用于基于未輸出日志文件的日志文件輸出點(diǎn)確定出未被覆蓋到的代碼。
全文摘要
本申請?zhí)峁┝艘环N代碼覆蓋率確定方法,包括以下步驟獲取程序的源代碼,分析所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和位置信息;獲取程序運(yùn)行時(shí)實(shí)際輸出的日志文件,基于每一個(gè)日志文件中所記載的對應(yīng)日志文件輸出點(diǎn)的位置信息確定實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量;基于所述源代碼中日志文件輸出點(diǎn)的理論數(shù)量和實(shí)際輸出日志文件的日志文件輸出點(diǎn)的數(shù)量得到所述程序的代碼覆蓋率。本申請還提供了一種實(shí)現(xiàn)前述方法的代碼覆蓋率確定系統(tǒng)以及代碼覆蓋檢測方法及系統(tǒng)。本申請的代碼覆蓋率確定方法及系統(tǒng)、代碼覆蓋檢測方法及系統(tǒng),能夠節(jié)省測試工作量和確定代碼覆蓋率的時(shí)間,快速確定出代碼覆蓋率。
文檔編號G06F11/36GK103246602SQ20121003307
公開日2013年8月14日 申請日期2012年2月14日 優(yōu)先權(quán)日2012年2月14日
發(fā)明者蔡華, 周琦, 孫廷韜 申請人:阿里巴巴集團(tuán)控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
元朗区| 宜兰县| 米脂县| 清水河县| 海丰县| 宿迁市| 凤冈县| 西安市| 肃北| 申扎县| 荔波县| 电白县| 宁陵县| 武汉市| 阿图什市| 甘泉县| 崇明县| 眉山市| 平安县| 潼关县| 武功县| 连平县| 汉寿县| 黔江区| 韶关市| 仪陇县| 黑龙江省| 临沭县| 砀山县| 昌平区| 和平县| 蓝田县| 明星| 凭祥市| 秀山| 高尔夫| 彭山县| 丘北县| 贡觉县| 鲜城| 甘泉县|