談談BUG嚴重級別(severity)管理

在軟件工程理論中,BUG嚴重級別(severity)是用於指示軟件質量問題致使的負面影響的程度。但在大部分實際的軟件開發組織中,對BUG嚴重級別(severity)的定義和使用經常充斥着大量的爭議和分歧。甚至有些組織即便有專門的BUG嚴重級別定義文檔,可是因爲其描述的寬泛和模糊性,使得爭議和分歧並無獲得有效的減輕。本文將嘗試探討工程實踐中的一些具體問題,並提出筆者的一些觀點。app

BUG嚴重級別定義對於軟件開發組織來說,是一個很是重要的事情。由於它影響了以下幾個方面:測試

  • 影響修復某個BUG的必要性和優先級
  • 衡量軟件質量的重要因子之一

接下來探討下工程實踐的具體問題:資源

  1. 沒有明確的BUG嚴重級別定義,或者BUG嚴重級別定義很是寬泛和模糊
    這個問題是一個普通存在的問題,也是測試團隊和開發團隊爭議的重要源頭。有些測試團隊會把全部的軟件崩潰重啓問題都設置爲較高嚴重級別,可是有時會遭到開發團隊的反對,理由是此種崩潰重啓問題只發生在一些不重要的功能的異常處理路徑上。這個問題能夠用汽車故障做類比,汽車行駛過程當中行車電腦出現崩潰問題和車機娛樂系統鏈接某款手機的藍牙出現崩潰問題,通常人都不會把兩個問題放在一個嚴重級別,由於前者的影響是極大可能致使交通事故,然後者的影響只是使用某款手機帶來不便。還有一些測試團隊將某項重要功能的任何發現BUG都設置爲較高嚴重級別,可是其問題在於,BUG發生在主路徑(happy path)和異常處理路徑具備明顯不一樣的影響程度。後者在用戶實際使用過程當中執行到的機率較低,且一般能夠有辦法能夠避開。最後提到一點,多數狀況下測試團隊和開發團隊對同一功能同一執行路徑下的BUG嚴重等級一般具備至關的共識,通常都認同致使系統沒法啓動的問題比起功能輸出錯誤結果的問題有更高的嚴重等級。所以,BUG嚴重級別定義問題的根源經常在於沒有考慮功能重要等級的明肯定義和主路徑/異常處理路徑的區分。
  2. 隨意指定BUG的嚴重級別致使開發團隊問題修復的工做優先級混亂或者沒法評估軟件質量
    基於BUG嚴重級別是衡量軟件質量的重要因子,開發團隊應當根據BUG的嚴重級別來調整BUG修復工做的優先級。但在工程實踐中,BUG報告者有兩種極端:一種極端是將全部發現的BUG一概設置爲最高或較高等級,究其緣由是某些BUG報告者但願他所報告的問題都能以較高優先級處理;另一種極端是將全部發現的BUG一概設置爲最低等級,這種狀況通常是BUG系統默認嚴重級別爲最低,而報告者沒有意識到他應該根據實際狀況設置真實的嚴重級別或者報告者不知道如何定義嚴重級別。若是開發團隊按照錯誤的BUG嚴重級別制定工做優先級計劃,會致使整個團隊以錯誤的優先級來開展工做。但在工程實踐中,理智的開發團隊領導者一般會根據實際本身的嚴重性級別判斷來制定修復計劃。但這也意味着BUG嚴重級別被徹底忽略,軟件質量的評估變得異常困難。
  3. 將BUG嚴重級別和BUG重現機率混淆在一塊兒
    當測試團隊報告了一個較高嚴重等級的BUG。可是開發團隊提出異議,認爲這個BUG雖然會致使使用某項主要功能出現問題可是復現機率低(<10%),因此嚴重等級應該下降。這個就是將BUG嚴重級別和BUG重現機率混淆在一塊兒。BUG嚴重級別和BUG重現機率是兩個相互獨立的指標,能夠認爲沒有交疊的地方。BUG重現機率通常來講與測試有前置條件相關,若是測試前置條件充分,理論上全部的BUG均可以100%復現。重現機率低於100%只能說明執行當前測試用例產生某個或多個未知的前置條件的機率小於100%,或者說執行當前測試用例出現這種負面影響的機率小於100%。而BUG嚴重級別是指示出現這個負面結果的影響。舉一個例子,若是某個BUG在以前的測試復現機率爲10%, 後面測試用例通過修改後測試復現機率變爲80%。很明顯,這個BUG的嚴重等級不該該由於測試用例的修改而改變。對因而否要修復某個BUG,應同時考慮嚴重等級和重現機率兩個因素,這個依賴於開發組織特定的質量控制策略。通常來講,若是某個BUG嚴重性極高但復現機率低,採起的行動策略應該是設法改進測試用例或者建立新的測試用例提升復現率,以提升問題修復的可能性。若是嚴重性和復現機率都很低,不須要浪費開發資源在這類問題上。對於只出現過一次再不能復現的BUG,筆者的建議是通常狀況下不作修復,由於不能復現的問題經常缺乏必要的信息用於問題的定位,即便修復後也不能經過測試加以驗證。補充一次,若是測試團隊常常性上報此類問題,一般意味測試用例或測試環境的一致性有很大的問題,應該優先對此加以改進。

筆者對BUG嚴重級別管理有以下建議:開發

  1. 每一個開發組織應該有一份公開且通過評審的文檔明肯定義BUG嚴重級別。
  2. BUG嚴重級別應該由功能的重要等級,主路徑/異常處理路徑,BUG產生錯誤的影響共同決定。BUG產生錯誤的影響通常可分爲三級:不可恢復錯誤(系統沒法啓動,系統沒法升級等),影響功能使用,不影響功能使用(字符顯示拼寫錯誤等)
  3. 在BUG管理系統中,嚴重級別不該該容許被直接設置,而應該由BUG報告者輸入對應的用例名稱/路徑,BUG產生錯誤影響級別,由系統自動生成對應的嚴重級別。
相關文章
相關標籤/搜索