此文為了記錄學習,很不錯的文章和思路,所以分享給大家。
背景
對蘋果開發者而言,由于平臺審核周期較長,客戶端代碼導致的線上問題影響時間往往比較久。如果在開發、測試階段能夠提前暴露問題,就有助于避免線上事故的發生。代碼覆蓋率檢測正是幫助開發、測試同學提前發現問題,保證代碼質量的好幫手。
對于開發者而言,代碼覆蓋率可以反饋兩方面信息:
1、自測的充分程度。
2、代碼設計的冗余程度。
盡管代碼覆蓋率對代碼質量有著上述好處,但在 iOS 開發中卻使用的不多。我們調研了市場上常用的 iOS 覆蓋率檢測工具,這些工具主要存在以下四個問題:
1、第三方工具有時生成的檢測報告文件會出錯甚至會失敗,開發者對覆蓋率生成原理不了解,遇到這類問題容易棄用工具。
2、第三方工具每次展示全量的覆蓋率報告,會分散開發者的很多精力在未修改部分。而在絕大多數情況下,開發者的關注重點在本次新增和修改的部分。
3、Xcode 自帶的覆蓋率檢測只適用于單元測試場景,由于需求變更頻繁,業務團隊開發單元測試的成本很高。
4、已有工具很難和現有開發流程結合起來,需要額外進行測試,運行覆蓋率腳本才能獲取報告文件。
為了解決上述問題,我們深入調研了覆蓋率報告的生成邏輯,并結合團隊的開發流程,開發了一套嵌入在代碼提交流程中、基于單次代碼提交(git commit)生成報告、對開發者透明的增量代碼測試覆蓋率工具。開發者只需要正常開發,通過模擬器測試開發代碼,commit 本次代碼(commit 和測試順序可交換),推送(git push)到遠端,就可以在本地看到這次提交代碼的詳細覆蓋率報告了。
本文分為兩部分,先從介紹通用覆蓋率檢測的原理出發,讓讀者對覆蓋率的收集、解析有直觀的認識。之后介紹我們增量代碼測試覆蓋率工具的實現。