您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何使用覆蓋率指標來度量測試套件Test Suite的質量,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
有兩種比較流行的測試覆蓋率的度量方法:
代碼覆蓋率
分支覆蓋率
覆蓋率度量會顯示一個測試套件(Test Suite)會執行多少代碼,范圍從 0 至 100%。
除了上述兩種方法之外,還有很多其它的度量方法。它們都是被用來評估一個測試套件的質量的。
通常人們會認為,這個覆蓋率越高越好。不幸的是,這沒那么簡單,覆蓋率度量確實能提供非常有價值的反饋,但是它們無法有效的評估出測試套件的質量。這一點與代碼可進行單元測試的能力一樣:覆蓋率度量是一個非常好的負向指示(能評估出測試套件是否較差),但它無法評估出測試套件是否很好。
第一種,也是使用最多的度量方式就是代碼覆蓋率(code coverage,也叫測試覆蓋率 test coverage)。它的公式如下:
例如:
可以看到有效代碼行數變成了 3 行(8、9、10),它們都是綠色,說明都被覆蓋了。從工具也可以看到覆蓋率變成了 100%:
想要使用復制覆蓋率,你得想辦法把代碼里所有可能的分支求和,然后再檢測測試走了多少分支。
例子:
還是之前的例子,IsStringLong 方法里面一共有兩種情況,也就是兩個分支。而測試只會運行小于等于 5 這種情況,所以分支覆蓋率為 50%:
而我們只考慮了其中一種。所以您可能會遇到許多極端情況,并且無法查看測試是否將所有情況都考慮在內。
這并不是說覆蓋率度量應該考慮外部庫的代碼路徑(它們不應該),而是說明你不能指望這些度量來評估單元測試的質量好壞。覆蓋率度量無法判斷您的測試是否詳盡無遺; 也不能說明是否有足夠的測試。
要把覆蓋率度量當成一個指標,而不是一個目標。
就如同生病住院的病人,體溫高可能表示發燒,它是一個有用的觀察。但是醫院不能把不擇手段降低病人的體溫當成治病的目標。
通常,如果系統核心某塊的測試的覆蓋率較高的話是很好的,但是如果把高覆蓋率當成目標就不好了。
就個人而言:我認為覆蓋率低于 60% 肯定不好,這說明有大量的代碼未測試。但是更高的覆蓋率數字并不能代表什么。所以度量覆蓋率只是驗證測試套件質量的第一步而已。
看完上述內容,你們對如何使用覆蓋率指標來度量測試套件Test Suite的質量有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。