這個系列的主題是在 iOS 專案的測試,在這一篇提一下測試的覆蓋率。
寫在前面
不要把目標定為測試覆蓋率 100%,也不要把測試覆蓋率與積效掛勾
不要把目標定為測試覆蓋率 100%,也不要把測試覆蓋率與積效掛勾
常見的有語句覆蓋率、分支覆蓋率、條件覆蓋率等。語句覆蓋率是指被執行過的語句數佔總語句數的百分比。分支覆蓋率是指被執行過的分支數佔總分支數的百分比。條件覆蓋率是指被執行過的條件數佔總條件數的百分比。不同的計算方式有不同的優缺點,需要根據具體的測試目標和場景選擇合適的方法。
知道專案測試覆蓋率的好處有以下幾點:
然而,覆蓋率不是愈高愈好,因為覆蓋率只能衡量測試的廣度,而非深度。一個高覆蓋率的測試可能只是重複執行了相同或類似的情境,而沒有考慮到邊界值、異常情況或使用者需求的變化。反之,一個低覆蓋率的測試可能已經涵蓋了最重要或最高風險的功能和邏輯。因此,覆蓋率只是一個參考指標,不能作為測試品質的唯一標準。在使用覆蓋率時,還需要考慮其他因素,如專案的目標、範圍、複雜度、風險等,以及測試的目的、方法、策略等,才能做出合理的判斷和決策。
step1:
step2: Product 下拉式選單中,按下 Test。也可以用快鍵 Command + U
step3: 跑完後,你可以看到每個檔案在測試中跑過的 Coverage
也可以展開細項
Step 4 (可選): 如果要看一個物件裡面是哪些 func 被覆蓋到,可以將 Coverage 打開
step6: 可以從右側看到哪些 func 不在測試裡
暗紅色的部分,就是測試程式碼發動的時候,不會跑到的地方。還記得文章一開始的時候有說,不要去追求 100% coverage 嗎?是不是看到紅色,就要把他補完呢?那 Xcode 又是用哪一種覆蓋率的算法呢?
我沒辦法給一個很明確的答案,但真的不建議去追求覆蓋率,所以也不要追求 100% covearge。