農林漁牧網

您現在的位置是:首頁 > 農業

領導要求單元測試覆蓋率,都996了,沒時間寫怎麼辦?

2021-11-17由 急速馬力快de原始碼控 發表于 農業

怎麼保證測試用例的覆蓋率

軟體開發時,要不要寫單元測試,寫多少,投入多少資源達到多高的覆蓋率,這個話題討論由來已久。尤其是處於早期階段的小型創業團隊,在面對時間和資源壓力時,難以平衡和取捨。

回到原點分析,得出結論不難。程式碼一定要測試,大家都同意吧。越早發現bug,越容易修復,成本也越低。所以還是投入產出比的一個考量。

一,為什麼要寫單元測試?

1. 保證程式碼質量,及早發現bug

單元測試由開發工程師來寫,相比測試工程師,更清楚深入的瞭解程式碼邏輯,而且在設計測試用例時,重新審視檢查被測試程式碼,發現問題或者重寫,這樣的經歷對於寫過單元測試的工程師並不陌生。

2. 修改過的bug,避免再次發生

軟體總是有bug的,如何才能做到bug越修越少?修復一個bug,就增加一個對應的單元測試用例,這樣隨著用例庫的豐富,程式碼質量逐漸提高。

3. 改動程式碼時,避免引入新bug

如果已有正確邏輯被測試用例覆蓋,那麼當新改動影響到它時,就能及時發現糾正錯誤。

4. 迴歸測試

增加新功能、修復bug時,測試工程師的關注點都是有針對性的,不可能每次都進行全量回歸測試。這時能做到的,就是透過執行全量單元測試,確保新提交的程式碼沒有影響到已有功能,保障迴歸測試。

領導要求單元測試覆蓋率,都996了,沒時間寫怎麼辦?

二,更多好處,歡迎補充

1. 保證程式碼可測,最佳化設計

程式碼的可測性非常重要,比如上千行的長函式、一長串的if-else,這樣的設計都需要進行最佳化改造。

2. 重構程式碼時,保證原有功能邏輯正確

單元測試可以被理解為期望的功能邏輯,所以在重構程式碼時,新函式要能夠透過已有的測試用例。

3. 持續整合和自動化部署的保障

和自動構建系統整合後,每次有程式碼提交變動時,全量執行單元測試用例庫,確保程式碼質量。

4. 單元測試是最有效的文件

單元測試完整的描述了程式碼功能,並且在程式碼改動時始終保持一致。

領導要求單元測試覆蓋率,都996了,沒時間寫怎麼辦?

三,單元測試好寫嗎?

1,好寫

程式碼要完成什麼功能,把這些期望和要求寫成單元測試,assert斷言。如果程式碼功能都描述不清楚,那麼這些程式碼可能是不需要的,更有可能是有bug的。

2,不好寫

兩方面,一是有些程式碼可測性不高,要修改設計甚至重寫;二是要達到較高的單元測試覆蓋率甚至100%,設計完善的測試用例,工作量很大。測試用例庫是一個長時間積累的過程,隨著開發功能、修復bug,逐漸補充完善。

3,時間投入難保證

在趕進度、壓工期時,時間成本和人力資源的壓力很大:是交付了再說呢?還是堅持寫單元測試?根據實際情況評估bug或者故障帶來的損失吧。

四,怎麼寫?

以Java開發為例,常用的JUnit + Mockit,使用起來非常高效。

領導要求單元測試覆蓋率,都996了,沒時間寫怎麼辦?

1,舉個例子,被測試函式parseMsg(),讀取ActiveMQ訊息內容,轉換成JSONObject

領導要求單元測試覆蓋率,都996了,沒時間寫怎麼辦?

2,測試函式,模擬輸入TestMessage,打樁埋點,驗證結果

領導要求單元測試覆蓋率,都996了,沒時間寫怎麼辦?