iT邦幫忙

2023 iThome 鐵人賽

DAY 30
1
Mobile Development

在 iOS 專案上加上 Unit testing - 因為 You need testing系列 第 30

D30 - 在 iOS 專案加上測試-You need testing { 測試報告 }

  • 分享至 

  • xImage
  •  

這個系列的主題是在 iOS 專案的測試,在這一篇提一下測試的覆蓋率。

寫在前面

不要把目標定為測試覆蓋率 100%,也不要把測試覆蓋率與積效掛勾

不要把目標定為測試覆蓋率 100%,也不要把測試覆蓋率與積效掛勾

不要把目標定為測試覆蓋率 100%,也不要把測試覆蓋率與積效掛勾


原因之一,測試覆蓋率的計算方式有多種,你確定哪一種是你現在的框架使用的嗎?

常見的有語句覆蓋率、分支覆蓋率、條件覆蓋率等。語句覆蓋率是指被執行過的語句數佔總語句數的百分比。分支覆蓋率是指被執行過的分支數佔總分支數的百分比。條件覆蓋率是指被執行過的條件數佔總條件數的百分比。不同的計算方式有不同的優缺點,需要根據具體的測試目標和場景選擇合適的方法。

測試覆蓋率還是有他的意義

知道專案測試覆蓋率的好處有以下幾點:

  • 可以發現專案程式碼中的未測試或缺陷區域,提高錯誤偵測率和修復效率。
  • 可以評估測試的成本和效益,避免過度或不足的測試,合理分配測試資源和時間。
  • 可以提高專案的可信度和可維護性,增加客戶和使用者的信心和滿意度。

然而,覆蓋率不是愈高愈好,因為覆蓋率只能衡量測試的廣度,而非深度。一個高覆蓋率的測試可能只是重複執行了相同或類似的情境,而沒有考慮到邊界值、異常情況或使用者需求的變化。反之,一個低覆蓋率的測試可能已經涵蓋了最重要或最高風險的功能和邏輯。因此,覆蓋率只是一個參考指標,不能作為測試品質的唯一標準。在使用覆蓋率時,還需要考慮其他因素,如專案的目標、範圍、複雜度、風險等,以及測試的目的、方法、策略等,才能做出合理的判斷和決策。


在 Xcode 中得到測試報告的方法

step1:

https://ithelp.ithome.com.tw/upload/images/20231011/20140622ZMFxLat3Ff.png

step2: Product 下拉式選單中,按下 Test。也可以用快鍵 Command + U

https://ithelp.ithome.com.tw/upload/images/20231011/20140622mFY8tHAiwK.png

step3: 跑完後,你可以看到每個檔案在測試中跑過的 Coverage

https://ithelp.ithome.com.tw/upload/images/20231011/20140622ziBvcD9XpW.png

也可以展開細項

https://ithelp.ithome.com.tw/upload/images/20231011/20140622nNpWhqWfPn.png

Step 4 (可選): 如果要看一個物件裡面是哪些 func 被覆蓋到,可以將 Coverage 打開

https://ithelp.ithome.com.tw/upload/images/20231011/20140622lYUJBABZz1.png

step6: 可以從右側看到哪些 func 不在測試裡

https://ithelp.ithome.com.tw/upload/images/20231011/20140622dZEHV8fy8H.png

暗紅色的部分,就是測試程式碼發動的時候,不會跑到的地方。還記得文章一開始的時候有說,不要去追求 100% coverage 嗎?是不是看到紅色,就要把他補完呢?那 Xcode 又是用哪一種覆蓋率的算法呢?

我沒辦法給一個很明確的答案,但真的不建議去追求覆蓋率,所以也不要追求 100% covearge。


上一篇
D29 - 在 iOS 專案加上測試-You need testing { 測 UIViewController }
下一篇
D31 - 在 iOS 專案加上測試-You need testing { 沒有銀色子彈 - No silver bullet }
系列文
在 iOS 專案上加上 Unit testing - 因為 You need testing32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言