我已經開始使用Quick和Nimble編寫iOS的第一個BDD測試,並且我有一個關於測試覆蓋率的問題。BDD和測試覆蓋率
我意識到,在傳統的單元測試中,開發人員的目標是擁有100%的測試覆蓋率。不過,我還沒有讀過BDD。如果我正確理解BDD,當我測試我的代碼的行爲時,那麼實現的細節並不重要;重要的是,我從我的代碼中獲得預期的結果,對嗎?
我開始試圖獲得100%的代碼覆蓋率,但它似乎開始寫脆性測試,因爲不是專注於我的代碼的結果,而是試圖覆蓋我的代碼可以採用的所有路徑。
- 我是否正確理解BDD?
- 針對100%的代碼覆蓋率是否擊敗了BDD的目的?
BDD和TDD的區別並不在於測試覆蓋面,而是關注軟件中的行爲而不是測試實現細節(測試API而不是實現,有人稱之爲), BDD和TDD都將導致100%的代碼覆蓋率,因爲其中一個主要想法是在任何實現代碼之前先編寫測試。 –
您可以同時擁有100%的測試覆蓋率,但BDD將確保您開發出正確的產品。 –
「我意識到,在傳統的單元測試中,開發人員的目標是擁有100%的測試覆蓋率」。他們當然不會。 100%的測試覆蓋率意味着代碼的所有分支至少被遍歷一次,如覆蓋工具所證明的那樣。這通常是不必要的,除非你正在編寫高度保密的代碼(正式的方法可能更合適)。一個單元意味着要測試一個單元的正確功能,以便在錯誤修復和重構後,可以輕鬆檢查功能是否正確。如果打算覆蓋100%,那麼也必須重寫單元測試。 –