看下面這段簡單明了的程式碼:
function sum(a, b) { return a b; }
現在,讓我們為它寫一些測試:
test('sum', () => { expect(sum(1, 2)).toBe(3); expect(sum(2, 3)).toBe(5); expect(sum(3, 4)).toBe(7); expect(sum(4, 5)).toBe(9); });
我們的覆蓋率是 100%,對嗎?嗯,是的,我們確實做到了,事實上我們可以說我們獲得了 400% 的覆蓋率,因為所有程式碼都經過了 4 次全面測試,但是 我們做到了嗎?
事實是我們沒有。我們正在使用有限的輸入集來測試函數,我們沒有考慮邊緣情況,也沒有使用無效的輸入來測試函數。
考慮以下因素:
sum(1, '2'); sum(1, null); sum(1, undefined);
這種情況下會發生什麼事?該函數會拋出錯誤嗎?它會回傳一個值嗎?它會破壞我們的應用程式嗎?
測試覆蓋率是一個強大的工具,但它不是最終的解決方案。這是一個可以幫助您了解有多少程式碼正在被測試的指標,但它並不能告訴您它的測試情況如何。
測試覆蓋率可以在數量上為您提供幫助,但對品質卻無濟於事。您可以編寫良好的測試,考慮邊緣情況,使用無效輸入測試程式碼,並確保您的測試有意義且有價值。
這是一篇相當短的文章,我承認,但我仍然希望它對您有用,提醒您編寫良好測試的重要性。請記住,測試覆蓋率是一種工具,而不是目標。充分利用它取決於您。
再見,
麥可。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3