單元測試實踐的主要問題與解決(8)

(承上篇)

3.3  如何解決“做不好”

    現在來看做不好的問題。做不好的主要原因,是高標準的測試覆蓋難以實現。

    爲什麼要關注測試覆蓋呢?因爲未覆蓋的單位,通常對應未測試的數據分類,也就是說,可以用覆蓋率來檢查測試的完整性,衡量測試效果。

    應該在完成功能測試的基礎上,統計覆蓋率,找出遺漏用例來完成白盒覆蓋,而不是功能測試做一遍,白盒覆蓋又做一遍。

    下面,我用一個案例來演示講解覆蓋。

    首先是覆蓋率統計,工具可以支持六種覆蓋:語句、條件、分支、C/DC(判定條件覆蓋)、路徑覆蓋、MC/DC(修正判定條件覆蓋)。

   

    哪些單位沒覆蓋呢?這個紅色且帶淡紅色背景的,是未覆蓋語句;這個T是未覆蓋的條件真值;這個F是未覆蓋的條件假值;這個M是未覆蓋的MC/DC。

   

    淡紅色背景的分支是未覆蓋分支,淡綠色背景的是已覆蓋分支。路徑是從入口到出口的路線,這條用綠色畫出的是已覆蓋的路徑。

   

    這條用紅色畫出的是未覆蓋路徑。

   

    如何完成覆蓋呢?點擊未覆蓋的單位,比如這個T,右鍵菜單選擇“用例設計”。

   

    工具會自動計算出一個近似用例,所謂近似用例,就是經過最小修改就可以覆蓋選中單位的用例。

    如何修改呢?工具提供了修改提示,按這個藍色粗體的提示修改就可以了。這裏的提示是A >1,把它改爲大於1的數,如2。在實際工作中,輸出也要根據功能進行修改,這裏忽略。

   

    執行測試後,可以看到剛纔那個T已經覆蓋了。點擊F,打開用例設計器。

   

    這裏的提示是B不等於0,把B改爲不等於0,比如1。

   

    現在來覆蓋這個T。

   

    把X改爲大於1的數,如2。

   

    現在,代碼這邊已經完成全部覆蓋了,看一下覆蓋率,還有一條路徑未覆蓋。

   

    在這裏選擇未覆蓋的路徑,打開用列設計器。

   

     提示是:A不等於2,X小於等於1,X本來就小於1,不用改它,把A改爲不等於2的數就行了,如3。

   

    現在,完成了全部覆蓋。

   


總結

    我們用可視化來解決“不願做”,用自動化來解決“沒時間”,這兩者結合起來,就是ETDD開發模式。

    造成做不了的主要原因是代碼的耦合關係形成的內部輸入問題,我們用底層模擬來解決內部輸入,真正可以做到“無論別人怎麼樣,我總是對的”。

    在覆蓋方面,我們利用工具不僅統計覆蓋率,清晰標示未覆蓋單位,而且,用例設計器可以幫助我們快速找出遺漏用例,實現高覆蓋,解決做不好的問題。

   


---------------------------------------------------------------------------

(全文完。感謝廣大網友的關注和支持!!)







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章