tft每日頭條

 > 生活

 > 單元測試的具體措施

單元測試的具體措施

生活 更新时间:2025-01-15 13:22:01

  1、衡量測試效果的基本指标:白盒覆蓋

  衡量測試效果的基本指标是白盒覆蓋率,即統計測試對代碼邏輯單位的覆蓋狀況。代碼的邏輯單位主要有:語句(塊),條件、判定、分支、路徑。常用的白盒覆蓋有六種:語句覆蓋、條件覆蓋、分支覆蓋、判定條件覆蓋、修正判定條件覆蓋、和路徑覆蓋。每種覆蓋都有它的局限性,因此,實踐中要多種覆蓋組合應用。

  除MC/DC外,其他覆蓋率的計算公式很簡單:

  覆蓋率 = 已覆蓋邏輯單位數 / 全部邏輯單位數 * 100%,如:

  語句覆蓋率 = 已覆蓋語句塊數 / 全部語句塊數 * 100%;

  C/DC = (已覆蓋判定數 已覆蓋條件數) / (全部判定書 全部條件數) * 100%,這裡的判定數和條件數是指條件和判定計算結果,即判定值和條件值。

  修正判定條件覆蓋,即MC/DC是歐美航空标準。MC/DC主要用于檢測判定内的條件之間的關系是否正确,對邏輯操作符&&和||是相當敏感的,但是并不檢查從函數入口到出口的代碼組合的覆蓋,缺陷還是相當明顯的。路徑覆蓋檢查入口到出口的各種代碼組合的覆蓋,顯然,MC/DC和路徑覆蓋的組合,才是最強的覆蓋指标。

單元測試的具體措施(怎樣才能保證單元測試的效果)1

  統計覆蓋率的一般方法是插裝,即在被測代碼中插入監視代碼,監視執行狀況。監視代碼必須不影響被監視代碼本身的功能邏輯。

  工具可以将覆蓋狀況清晰标示出來,語句覆蓋、條件覆蓋、MC/DC覆蓋可以在代碼中标示,分支覆蓋和路徑覆蓋可以在代碼的邏輯結構圖中标示。如上圖,紅色背景的是未覆蓋的語句。條件前面的T,表示條件的真值未覆蓋。條件前面的F,表示條件的假值未覆蓋。條件前面的M,表示MC/DC未覆蓋,也就是說,這個條件沒有獨立影響判定結果。紅色背景的是未覆蓋的分支。未覆蓋的路徑用紅色畫出。

  2、多角度保證測試效果

  對于代碼質量要求很高的項目來說,僅有白盒覆蓋是遠遠不夠的。白盒覆蓋不能發現代碼缺失,白盒覆蓋基于現有代碼,如果代碼不存在,當然不能發現。為了檢測代碼缺失,需要人工對測試數據進行檢查。白盒覆蓋也不能發現用例未反映功能。如果設計用例時,測試員不了解代碼的功能,通過閱讀代碼來設計用例,這叫跟着代碼走,這樣測試的話,再高的覆蓋率也沒有意義。這也從另一個角度說明了自動用例的局限性,完全由工具自動生成的用例,效果顯然還比不上跟着代碼走。

  開發當中還有一個特點,也是我們要注意的,就是程序員和測試員都容易遺漏邊界和非法輸入。程序員未考慮某些輸入,就會造成代碼缺失,白盒覆蓋不能發現,如果測試員也漏掉,這種錯誤就發現不了。不過幸運的是,邊界和非法輸入容易産生的是極端錯誤,如崩潰、超時,自動生成的邊界測試用例正好可以捕捉這類錯誤。

  通過前面的分析,我們可以知道應該從哪些角度保證測試效果。黑盒、白盒、自動應該相結合。

  黑盒角度,應該将測試數據分類集中起來,這樣便于人工檢查。如上圖,每個參數或者其他輸入取了什麼值,哪些組合已經覆蓋,都會自動集中起來,這樣人工檢查就很方便了。

  白盒方面,應該統計覆蓋率,并且找出遺漏用例實現高覆蓋。這在前文已經講過了,這裡不再重複。

  自動化方面,由工具自動生成用例來捕捉邊界和非法輸入産生的極端錯誤。根據預設值自動生成用例是簡單技術,預設值一般是可以修改的,如上圖。不要指望主要依靠自動生成的用例來完成測試,自動用例的合理用途是作為人工用例的補充,檢測極端錯誤。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved