這篇文章主要是記錄閱讀下面論文的觀點(diǎn)以及自己的感受
論文:Simple Testing Can Prevent Most Critical Failures:
An Analysis of Production Failures in Distributed
Data-Intensive Systems
論文摘要
case1:嚴(yán)重系統(tǒng)錯(cuò)誤中的92%是由于對于非嚴(yán)重錯(cuò)誤的錯(cuò)誤處理導(dǎo)致的,而這些非嚴(yán)重錯(cuò)誤在軟件中也明確有出現(xiàn)
case2:嚴(yán)重錯(cuò)誤中的58%,這些錯(cuò)誤中的底層錯(cuò)誤能夠很容易得通過測試異常代碼來檢測出來
case3:系統(tǒng)中有77%的錯(cuò)誤需要超過一個(gè)輸入事件來出現(xiàn),90%錯(cuò)誤出現(xiàn)的輸入事件要求少于3個(gè)。
case4:88%的錯(cuò)誤,這些錯(cuò)誤需要多個(gè)事件才能出現(xiàn),而這些事件需要特定的順序才能觸發(fā)這些錯(cuò)誤
case5:77%的錯(cuò)誤可以由單元測試進(jìn)行復(fù)現(xiàn)
感想
- 軟件開發(fā)中,針對異?;蛘咤e(cuò)誤處理一定要小心謹(jǐn)慎,不能忽略,需要有合適并且具體的處理。并且針對這些代碼需要有單元測試來進(jìn)行覆蓋。
- 針對代碼中的異常處理,必須要有具體的處理有段。不能忽略,不能只記錄todo或者fixme而不處理,同時(shí)異常一般不要采用通用異常(類似java中dException代表大部分異常)
- 代碼中的異常處理通常是bug來源的地方,所以在cr的時(shí)候要著重檢查這些地方,同時(shí)單元測試也要盡量覆蓋這里。
- 雖然功能開發(fā)很重要,但是異常處理以及單元測試也非常重要。