James Shore:不要使用單元測試的程式碼覆蓋率
如果您正在使用測試驅動開發,請不要衡量單元測試的程式碼覆蓋率,這比無用的統計更糟糕; 它會積極地引導你誤入歧途。
你應該怎麼做?這取決於你想要完成什麼。
改進程式碼和測試實踐
如果您正在嘗試改進團隊的編碼和測試實踐,請執行轉義缺陷的根本原因分析1,然後改進您的設計和流程,以防止再次發生此類缺陷。
如果等待缺陷逃逸對您來說風險太大,那麼經驗豐富的QA測試人員會進行探索性測試並對結果進行根本原因分析,無論哪種方式,這裡的想法是分析您的Bug,以瞭解要改進的內容,程式碼覆蓋率不會告訴您。
提高程式設計師程式碼質量
如果您正在嘗試提高程式設計師的程式碼質量,教授測試技能,加快測試迴圈,重構更多,使用進化設計,並嘗試結對程式設計或mob程式設計。
教授測試技能並加快測試迴圈,使程式設計師更容易編寫有價值的測試。測試覆蓋範圍不會做到的, 它只是鼓勵編寫毫無價值的測試來使數字上升。
重構更多並使用進化設計使您的設計更簡單,更易於理解。這減少了與設計相關的缺陷。
結對程式設計或mob程式設計可以增強團隊的自律能力,每個人偶爾都會感到懶惰,但是當你結對程式設計或mob程式設計時,所涉及的每個人只會在同一時間變得懶惰。它還使您的程式碼質量更高,更易於理解,因為協同工作可以讓程式設計師看到彼此程式碼中的弱點,並提出更優雅的解決方案。
改善測試紀律
有些人使用程式碼覆蓋率指標來強化他們想要的習慣。不幸的是,習慣不能強制執行,只能培養。我想起了一個我工作的地方,管理者想要好的程式碼提交日誌。他們配置了他們的工具來對每次提交強制執行註釋。他們最常見的評論是啥?“a” ,後來他們更改了工具,以便在每次提交時強制執行多字註釋。現在最常見的評論是“aa a”。
執法不會改變思想。相反,使用輔導和學科增強實踐,如結對程式設計或mob程式設計。
提高要求程式碼質量
如果您正在努力改善程式碼滿足客戶需求的程度,請儘早讓客戶代表參與進來,例如在“早期Sprint結束之前”。他們不會總是立刻告訴你你錯過了什麼,但是你越早給他們機會這樣做,你就越有可能學到你需要知道的東西。
提高非功能性質量
如果您正在嘗試提高可靠性或效能等“非功能”特性,請使用實際監控,使用故障快速程式碼和專用測試平臺。非功能屬性作為一個整體從系統中出現,因此即使是覆蓋率為100%的程式碼庫也會出現問題。
這是關於TDD的事情
TDD的定義是,如果沒有失敗的測試,您就不會編寫程式碼,而是在一次覆蓋一個分支的緊密迴圈中執行此操作。所以,如果你正在做TDD,你的任何程式碼要覆蓋是依據事實覆蓋。如果你仍然有缺陷,那麼別的東西就錯了。
如果人們不知道如何正確地進行TDD,程式碼覆蓋率指標將無濟於事。如果他們不想覆蓋他們的程式碼,程式碼覆蓋率指標將無濟於事。如果出現其他問題,您就明白了,程式碼覆蓋率指標無濟於事。他們充其量只是一種分心,而且是最糟糕的遊戲指標。找出你真正想要改進的內容並直接關注它。
PS:Ryan Norris 在Twitter上有一個很棒的故事,關於程式碼覆蓋如何幫助他的團隊扭轉遺留程式碼庫。Martin Fowler 寫過關於偶爾的程式碼覆蓋率審查是如何有用的健全性檢查。
相關文章
- 單元測試接入覆蓋率
- C++語言的單元測試與程式碼覆蓋率C++
- 基於Jacoco的單元測試程式碼覆蓋率統計
- 單元測試的覆蓋率計算
- Mockito提升單元測試覆蓋率Mockito
- 程式碼覆蓋率與測試覆蓋率比較
- go 程式碼覆蓋率測試Go
- Linux下lcov單元測試覆蓋率Linux
- 開源專案核心程式碼單元測試 100% 覆蓋率實戰
- 測試開發之單元測試-實現Git增量程式碼的Jacoco覆蓋率統計Git
- iOS 覆蓋率檢測原理與增量程式碼測試覆蓋率工具實現iOS
- 測試覆蓋率 之 Cobertura的使用
- 從零開始做Vue前端架構(6)單元測試 & 程式碼覆蓋率Vue前端架構
- 單元測試必備:Asp.Net Core程式碼覆蓋率實戰,打造可靠應用 !ASP.NET
- pHp程式碼覆蓋率PHP
- idea2022.1 檢視單測覆蓋率展示分支覆蓋率Idea
- 自動化會提高測試覆蓋率,那測試覆蓋率是什麼?
- Jacoco--測試覆蓋率工具
- [lua][openresty]程式碼覆蓋率檢測的解決方式REST
- PouchContainer 整合測試覆蓋率統計AI
- 測試覆蓋率二改實現
- 什麼是程式碼覆蓋率
- 使用 coverlet 檢視.NET Core應用的測試覆蓋率
- 在做服務端程式碼覆蓋率或者準備做程式碼覆蓋率的兄弟們,來聊聊???服務端
- Web端進行PHP程式碼函式覆蓋率測試的解決方案WebPHP函式
- 圖資料庫 Nebula Graph 的程式碼變更測試覆蓋率實踐資料庫
- 自動化單元工具EvoSuie的程式碼覆蓋報告UI
- JaCoCo計算程式碼覆蓋率原理
- 北大李戈團隊提出大模型單測生成新方法,顯著提升程式碼測試覆蓋率大模型
- 如何制定介面自動化測試的覆蓋率?
- jacoco-1-java程式碼測試覆蓋率之本地環境初體驗Java
- 從零入門專案整合Karate和Jacoco,配置測試程式碼覆蓋率
- Java 程式碼覆蓋率調研報告Java
- java覆蓋率檢測-jacocoJava
- 基於JaCoCo的Android測試覆蓋率統計(二)Android
- 生成Github JS 倉庫的測試覆蓋率徽標GithubJS
- 【譯】Visual Studio Enterprise 中的程式碼覆蓋率特性
- 如何使用 jacoco 統計多個 docker 容器服務的測試覆蓋率Docker