關于測試覆蓋率講的最多的地方應該實在測試停止標準里面。在測試停止標準里面經常出現這樣的語句“測試覆蓋率達到或超過95%”之類的概念。其實,如果你看了我前一篇文章中提到的測試覆蓋率分類的話,就知道這是一個不準確的描述。關于更準確的描述,我認為應該是“性能測試需求覆蓋率達到100%,功能需求測試覆蓋率達到100%,語句覆蓋率達到85%”這樣的句子!皽y試覆蓋率”本來就包含了很多子部分,所以提測試覆蓋率是不明智的一種做法。而我所說的語句覆蓋率85%相對于性能測試需求覆蓋率這個數據來講似乎更難獲得準確數值,不過現在已經有了很多工具用于測試“語句覆蓋率”,而不用我們自己去計算已執行的測試用例覆蓋到了數萬或者更多代碼中百分之多少,也有一些工具可以幫助我們得到代碼覆蓋率中“分支覆蓋率”等其它數據。關于覆蓋率檢測工具,我將在本系列的后續文章中給予介紹。
測試覆蓋率是測試結束標準中的一部分,這顯然不是我們今天討論的重點——測試覆蓋率有什么用?直觀上講,我們可以這樣理解:
-> 性能測試覆蓋率如果沒達到100%,表示我們有些性能測試點沒有覆蓋到,這在一個對于性能有所要求系統顯然是不可取的,這表示我們應該增加用例來覆蓋到所需要的性能測試點。
-> 重要模塊的語句覆蓋率和條件覆蓋率很低,表示我們測試用例過少,我們應當增加用例;如果我們已經寫了很多用例(相對于代碼行數來講),但是這兩項數據還是很低,那我們得檢查一下我們的用例了,是否有重復的用例?是否應該重新設計用例結構?
對于測試覆蓋率,我們有這樣一個簡單的算式,如果A模塊的條件覆蓋率為80%,B模塊也為80%,C模塊也為80%,那么我們的總覆蓋率則是 51.2%,而不是我們想當然的80%。至于為什么這樣,我就不解釋了。因此在我們審查覆蓋率報告時候,我們關注的是覆蓋率低的模塊,我們要檢查為什么低,我們要思考怎么提高,對于覆蓋率低的地方,是不是有一個等價類被我們忽略了?
測試覆蓋率的意義在瀑布式的開發模式里面可能顯得沒那么重要,但是如果在螺旋式開發模式中,如果我們沒有控制好我們上一個迭代中的測試覆蓋率,當一個版本一個版本累加下來后,你就很難確定我們哪些模塊在開發過程中沒有給予足夠的測試;在近些年興起的持續集成浪潮中,由于要求短迭代(有人建議3-5天一個迭代),如果沒有很好的測試覆蓋率保證,很難在這么快的代碼變遷中保證測試的質量。在持續集成工作中,代碼提交頻繁,我們可以通過測試覆蓋率來了快速對應新寫的,沒有對應測試的代碼。
總之,測試覆蓋率可以提供給我們兩個方面的信息:測試覆蓋率低的模塊 和 重要模塊的測試覆蓋率。這些數據可以幫助我們快速定位需要更多測試的模塊,可以幫助我們了解重要模塊的測試情況,以此來衡量我們測試用例的質量乃至測試的質量。
個人觀點,僅供參考~~(如有問題請聯系unique.wuchaodong@hotmail.com)在下一篇文章中,我將介紹關于測試覆蓋率應該達到的數據,是不是需要100%呢?
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/