用于代碼覆蓋率的軟件衡量標(biāo)準(zhǔn)

2018-02-24 15:41 更新

用于代碼覆蓋率的軟件衡量標(biāo)準(zhǔn)

目前存在多種軟件衡量標(biāo)準(zhǔn)用于衡量代碼覆蓋率:

行覆蓋率(Line Coverage)
行覆蓋率(Line Coverage)按單個(gè)可執(zhí)行行是否已執(zhí)行到進(jìn)行計(jì)量。

函數(shù)與方法覆蓋率(Function and Method Coverage)
函數(shù)與方法覆蓋率(Function and Method Coverage)按單個(gè)函數(shù)或方法是否已調(diào)用到進(jìn)行計(jì)量。僅當(dāng)函數(shù)或方法的所有可執(zhí)行行全部已覆蓋時(shí) PHP_CodeCoverage 才將其視為已覆蓋。

類與特質(zhì)覆蓋率(Class and Trait Coverage)
類與特質(zhì)覆蓋率(Class and Trait Coverage)按單個(gè)類或特質(zhì)的所有方法是否全部已覆蓋進(jìn)行計(jì)量。僅當(dāng)一個(gè)類或性狀的所有方法全部已覆蓋時(shí) PHP_CodeCoverage 才將其視為已覆蓋。

Opcode 覆蓋率(Opcode Coverage)
Opcode 覆蓋率按函數(shù)或方法對(duì)應(yīng)的每條 opcode 在運(yùn)行測試套件時(shí)是否執(zhí)行到進(jìn)行計(jì)量。一行(PHP的)代碼通常會(huì)編譯得到多條 opcode。進(jìn)行行覆蓋率計(jì)量時(shí),只要其中任何一條 opcode 被執(zhí)行就視為此行已覆蓋。

分支覆蓋率(Branch Coverage)
分支覆蓋率(Branch Coverage)按控制結(jié)構(gòu)的分支進(jìn)行計(jì)量。測試套件運(yùn)行時(shí)每個(gè)控制結(jié)構(gòu)的布爾表達(dá)式求值為 truefalse 各自計(jì)為一個(gè)分支。

路徑覆蓋率(Path Coverage)
路徑覆蓋率(Path Coverage)按測試套件運(yùn)行時(shí)函數(shù)或者方法內(nèi)部所經(jīng)歷的執(zhí)行路徑進(jìn)行計(jì)量。一個(gè)執(zhí)行路徑指的是從進(jìn)入函數(shù)或方法一直到離開的過程中經(jīng)過各個(gè)分支的特定序列。

變更風(fēng)險(xiǎn)反模式(CRAP)指數(shù)(Change Risk Anti-Patterns (CRAP) Index)
變更風(fēng)險(xiǎn)反模式(CRAP)指數(shù)(Change Risk Anti-Patterns (CRAP) Index)是基于代碼單元的圈復(fù)雜度(cyclomatic complexity)與代碼覆蓋率計(jì)算得出的。不太復(fù)雜并具有恰當(dāng)測試覆蓋率的代碼將得出較低的CRAP指數(shù)??梢酝ㄟ^編寫測試或重構(gòu)代碼來降低其復(fù)雜性的方式來降低CRAP指數(shù)。

Note

目前 PHP_CodeCoverage 尚不支持 Opcode覆蓋率、分支覆蓋率路徑覆蓋率。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)