[發(fā)明專利]測(cè)試程序代碼路徑覆蓋率的方法以及裝置在審
| 申請(qǐng)?zhí)枺?/td> | 201610852995.3 | 申請(qǐng)日: | 2016-09-27 |
| 公開(公告)號(hào): | CN107870853A | 公開(公告)日: | 2018-04-03 |
| 發(fā)明(設(shè)計(jì))人: | 郝旭;李金萍;朱月飛 | 申請(qǐng)(專利權(quán))人: | 北京京東尚科信息技術(shù)有限公司;北京京東世紀(jì)貿(mào)易有限公司 |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 中原信達(dá)知識(shí)產(chǎn)權(quán)代理有限責(zé)任公司11219 | 代理人: | 張一軍,姜?jiǎng)?/td> |
| 地址: | 100195 北京市海淀區(qū)杏石口路6*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 測(cè)試 程序代碼 路徑 覆蓋率 方法 以及 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)及其軟件技術(shù)領(lǐng)域,特別地涉及一種測(cè)試程序代碼路徑覆蓋率的方法以及裝置。
背景技術(shù)
在整個(gè)軟件開發(fā)生命周期過程中,代碼實(shí)現(xiàn)后,需要對(duì)軟件進(jìn)行代碼層面上的單元測(cè)試,測(cè)試代碼中的每個(gè)方法、每個(gè)函數(shù)的覆蓋率是否達(dá)標(biāo)。代碼覆蓋率(Code Coverage)是反映測(cè)試用例對(duì)被測(cè)軟件覆蓋程度的重要指標(biāo),也是衡量測(cè)試工作進(jìn)展情況的重要指標(biāo),它也是對(duì)測(cè)試工作進(jìn)行量化的重要指標(biāo)之一。根據(jù)其覆蓋內(nèi)容的不同,又可以細(xì)分為:語句覆蓋、分支覆蓋、條件覆蓋以及路徑覆蓋。在理想狀態(tài)下,一個(gè)完美的軟件,其語句覆蓋率、分支覆蓋率、條件覆蓋率、路徑覆蓋率均需達(dá)到100%,這樣的軟件才夠健壯。然而在現(xiàn)實(shí)狀態(tài)下,往往由于技術(shù)要求、代碼復(fù)雜度、完成時(shí)間節(jié)點(diǎn)、測(cè)試工具等各方面原因的限制,無法做到盡善盡美,這樣也為軟件留下了潛在的風(fēng)險(xiǎn)。
語句覆蓋率:又稱行覆蓋(Line Coverage),段覆蓋(Segment Coverage),基本塊覆蓋(Basic Block Coverage),這是最常用也是最常見的一種覆蓋方式,即度量被測(cè)代碼中每個(gè)可執(zhí)行語句是否被執(zhí)行到了。
分支覆蓋率:又稱判定覆蓋(Decision Coverage),它度量程序中每一個(gè)判定的分支是否都被測(cè)試到了。
條件覆蓋率:它度量判定語句中的每個(gè)子表達(dá)式的結(jié)果true和false是否被測(cè)試到。
路徑覆蓋率:它度量了函數(shù)的每一個(gè)分支是否都被執(zhí)行了,就是所有可能的分支都執(zhí)行一遍;有多個(gè)分支嵌套時(shí),需要對(duì)多個(gè)分支進(jìn)行排列組合。路徑覆蓋率=覆蓋的路徑數(shù)/總路徑數(shù)。
現(xiàn)有的代碼覆蓋率統(tǒng)計(jì)工具往往都只關(guān)注語句覆蓋率、分支覆蓋率和條件覆蓋率,基本忽略了路徑覆蓋率,對(duì)于代碼較復(fù)雜,各種路徑的排列組合較多的程序,軟件存在潛在的風(fēng)險(xiǎn)。目前的代碼覆蓋率的測(cè)試以及顯示方法可以參考圖1,具體包括如下步驟:(1)搭建被測(cè)試對(duì)象的測(cè)試工程;(2)編寫測(cè)試用例;(3)接著進(jìn)行插樁;(4)接著Mock被調(diào)用類;(5)執(zhí)行測(cè)試用例;(6)查看被測(cè)試對(duì)象的執(zhí)行情況,未執(zhí)行語句或分支以紅色字體標(biāo)出,未覆蓋的條件以黃色字體標(biāo)出,已覆蓋的部分以綠色字體標(biāo)出;(7)再次編寫測(cè)試用例,覆蓋未執(zhí)行部分,繼續(xù)執(zhí)行;(8)查看語句、分支和條件覆蓋率的統(tǒng)計(jì)結(jié)果;(9)達(dá)到覆蓋率要求,測(cè)試結(jié)束。
由上可知,傳統(tǒng)的覆蓋率統(tǒng)計(jì)是基于代碼行,未執(zhí)行的語句和分支標(biāo)紅顯示,未執(zhí)行的條件標(biāo)黃顯示,對(duì)于語句、分支、條件均已覆蓋,但各種路徑的排列組合尚未完全覆蓋的情況,無任何特殊標(biāo)記,無法區(qū)分,不能查看到當(dāng)前已覆蓋和未覆蓋路徑的情況,不便于測(cè)試人員有針對(duì)性的編寫路徑覆蓋測(cè)試用例;對(duì)于整個(gè)被測(cè)試程序的語句、分支、條件和路徑?jīng)]有整體的形象化的顯示,不利于對(duì)程序整體方向上的掌控和分析。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種穩(wěn)定可靠、用戶體驗(yàn)良好的方法以及系統(tǒng)。
為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種測(cè)試程序代碼路徑覆蓋率的方法。
本發(fā)明的測(cè)試程序代碼路徑覆蓋率的方法包括:按照被測(cè)程序控制流關(guān)系和預(yù)先設(shè)置的繪圖規(guī)則,繪制所述被測(cè)程序的可視化串并聯(lián)結(jié)構(gòu)圖;根據(jù)所述可視化串并聯(lián)結(jié)構(gòu)圖確定所述被測(cè)程序的具體路徑總數(shù)量;枚舉所述被測(cè)程序的所有具體路徑以得到具體路徑總列表;根據(jù)所述具體路徑總列表確定所述被測(cè)程序當(dāng)前已完成具體路徑數(shù)量,然后根據(jù)所述當(dāng)前已完成具體路徑數(shù)量和所述具體路徑總數(shù)量計(jì)算路徑覆蓋率。
可選地,在所述按照被測(cè)程序控制流關(guān)系和預(yù)先設(shè)置的繪圖規(guī)則,繪制所述被測(cè)程序的可視化串并聯(lián)結(jié)構(gòu)圖的步驟之前,還包括:對(duì)所述被測(cè)程序的源代碼進(jìn)行關(guān)鍵字插樁,然后進(jìn)行詞法分析和語法分析,以得到所述被測(cè)程序控制流關(guān)系。
可選地,所述預(yù)先設(shè)置的繪圖規(guī)則包括:根據(jù)循環(huán)結(jié)構(gòu)繪制進(jìn)入循環(huán)和不進(jìn)入循環(huán)的兩個(gè)并聯(lián)分支;根據(jù)判斷結(jié)構(gòu)繪制肯定和否定的兩個(gè)并聯(lián)分支;根據(jù)分支結(jié)構(gòu)繪制多個(gè)并聯(lián)分支;根據(jù)賦值結(jié)構(gòu)或調(diào)用結(jié)構(gòu),將嵌套內(nèi)容繪制成串聯(lián)連接形式。
可選地,所述枚舉所述被測(cè)程序的所有具體路徑的步驟包括:根據(jù)程序可視化串并聯(lián)結(jié)構(gòu)圖,基于各個(gè)串聯(lián)節(jié)點(diǎn)相互關(guān)聯(lián)、各個(gè)并聯(lián)節(jié)點(diǎn)相互獨(dú)立的原則對(duì)路徑片段進(jìn)行排列組合,記錄所述程序可視化串并聯(lián)結(jié)構(gòu)圖上顯示的所有具體路徑。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京京東尚科信息技術(shù)有限公司;北京京東世紀(jì)貿(mào)易有限公司,未經(jīng)北京京東尚科信息技術(shù)有限公司;北京京東世紀(jì)貿(mào)易有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610852995.3/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 軟件測(cè)試系統(tǒng)及測(cè)試方法
- 自動(dòng)化測(cè)試方法和裝置
- 一種應(yīng)用于視頻點(diǎn)播系統(tǒng)的測(cè)試裝置及測(cè)試方法
- Android設(shè)備的測(cè)試方法及系統(tǒng)
- 一種工廠測(cè)試方法、系統(tǒng)、測(cè)試終端及被測(cè)試終端
- 一種軟件測(cè)試的方法、裝置及電子設(shè)備
- 測(cè)試方法、測(cè)試裝置、測(cè)試設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 測(cè)試裝置及測(cè)試系統(tǒng)
- 測(cè)試方法及測(cè)試系統(tǒng)
- 一種數(shù)控切削指令運(yùn)行軟件測(cè)試系統(tǒng)及方法
- 路徑搜索系統(tǒng)、路徑搜索終端和路徑搜索方法
- 路徑計(jì)算方法、路徑計(jì)算單元及路徑計(jì)算系統(tǒng)
- 路徑顯示裝置、路徑顯示方法、路徑顯示程序及路徑顯示系統(tǒng)
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法及路徑搜索程序
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法以及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法以及路徑搜索程序
- 路徑搜索裝置、路徑搜索系統(tǒng)及路徑搜索方法
- 路徑輸出方法、路徑輸出系統(tǒng)和路徑輸出程序
- 路徑評(píng)價(jià)裝置、路徑評(píng)價(jià)系統(tǒng)、路徑評(píng)價(jià)方法以及路徑評(píng)價(jià)程序
- 覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的方法
- 一種由流程圖自動(dòng)產(chǎn)生覆蓋率代碼的方法及裝置
- 一種功能驗(yàn)證方法和裝置
- 測(cè)試覆蓋率統(tǒng)計(jì)方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)
- 覆蓋率測(cè)試方法,測(cè)試裝置,服務(wù)設(shè)備及可讀存儲(chǔ)介質(zhì)
- 覆蓋率測(cè)試方法、測(cè)試裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- PHP代碼覆蓋率報(bào)告的生成方法及裝置
- 一種通用接口覆蓋率模型驗(yàn)證環(huán)境自動(dòng)生成方法、系統(tǒng)及介質(zhì)
- 一種基于遺傳算法的覆蓋率收斂方法及系統(tǒng)
- 驗(yàn)證方法、裝置、電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)





