在軟體工程理論中,BUG嚴重級別(severity)是用于指示軟體質量問題導致的負面影響的程度,但在大部分實際的軟體開發組織中,對BUG嚴重級別(severity)的定義和使用常常充斥著大量的爭議和分歧,甚至有些組織即使有專門的BUG嚴重級別定義檔案,但是由于其描述的寬泛和模糊性,使得爭議和分歧并沒有得到有效的減輕,本文將嘗試探討工程實踐中的一些具體問題,并提出筆者的一些觀點,
BUG嚴重級別定義對于軟體開發組織來講,是一個非常重要的事情,因為它影響了如下幾個方面:
- 影響修復某個BUG的必要性和優先級
- 衡量軟體質量的重要因子之一
接下來探討下工程實踐的具體問題:
- 沒有明確的BUG嚴重級別定義,或者BUG嚴重級別定義非常寬泛和模糊
這個問題是一個普通存在的問題,也是測驗團隊和開發團隊爭議的重要源頭,有些測驗團隊會把所有的軟體崩潰重啟問題都設定為較高嚴重級別,但是有時會遭到開發團隊的反對,理由是此種崩潰重啟問題只發生在一些不重要的功能的例外處理路徑上,這個問題可以用汽車故障作類比,汽車行駛程序中行車電腦出現崩潰問題和車機娛樂系統連接某款手機的藍牙出現崩潰問題,一般人都不會把兩個問題放在一個嚴重級別,因為前者的影響是極大可能導致交通事故,而后者的影響只是使用某款手機帶來不便,還有一些測驗團隊將某項重要功能的任何發現BUG都設定為較高嚴重級別,但是其問題在于,BUG發生在主路徑(happy path)和例外處理路徑具有明顯不同的影響程度,后者在用戶實際使用程序中執行到的概率較低,且通常可以有辦法可以避開,最后提到一點,多數情況下測驗團隊和開發團隊對同一功能同一執行路徑下的BUG嚴重等級通常具有相當的共識,一般都認同導致系統無法啟動的問題比起功能輸出錯誤結果的問題有更高的嚴重等級,因此,BUG嚴重級別定義問題的根源常常在于沒有考慮功能重要等級的明確定義和主路徑/例外處理路徑的區分, - 隨意指定BUG的嚴重級別導致開發團隊問題修復的作業優先級混亂或者無法評估軟體質量
基于BUG嚴重級別是衡量軟體質量的重要因子,開發團隊應當根據BUG的嚴重級別來調整BUG修復作業的優先級,但在工程實踐中,BUG報告者有兩種極端:一種極端是將所有發現的BUG一律設定為最高或較高等級,究其原因是某些BUG報告者希望他所報告的問題都能以較高優先級處理;另外一種極端是將所有發現的BUG一律設定為最低等級,這種情況一般是BUG系統默認嚴重級別為最低,而報告者沒有意識到他應該根據實際情況設定真實的嚴重級別或者報告者不知道如何定義嚴重級別,如果開發團隊按照錯誤的BUG嚴重級別制定作業優先級計劃,會導致整個團隊以錯誤的優先級來開展作業,但在工程實踐中,理智的開發團隊領導者通常會根據實際自己的嚴重性級別判斷來制定修復計劃,但這也意味著BUG嚴重級別被完全忽略,軟體質量的評估變得例外困難, - 將BUG嚴重級別和BUG重現概率混淆在一起
當測驗團隊報告了一個較高嚴重等級的BUG,但是開發團隊提出異議,認為這個BUG雖然會導致使用某項主要功能出現問題但是復現概率低(<10%),所以嚴重等級應該降低,這個就是將BUG嚴重級別和BUG重現概率混淆在一起,BUG嚴重級別和BUG重現概率是兩個相互獨立的指標,可以認為沒有交疊的地方,BUG重現概率一般來說與測驗有前置條件相關,如果測驗前置條件充分,理論上所有的BUG都可以100%復現,重現概率低于100%只能說明執行當前測驗用例產生某個或多個未知的前置條件的概率小于100%,或者說執行當前測驗用例出現這種負面影響的概率小于100%,而BUG嚴重級別是指示出現這個負面結果的影響,舉一個例子,如果某個BUG在之前的測驗復現概率為10%, 后面測驗用例經過修改后測驗復現概率變為80%,很明顯,這個BUG的嚴重等級不應該因為測驗用例的修改而改變,對于是否要修復某個BUG,應同時考慮嚴重等級和重現概率兩個因素,這個依賴于開發組織特定的質量控制策略,一般來說,如果某個BUG嚴重性極高但復現概率低,采取的行動策略應該是設法改進測驗用例或者創建新的測驗用例提高復現率,以提高問題修復的可能性,如果嚴重性和復現概率都很低,不需要浪費開發資源在這類問題上,對于只出現過一次再不能復現的BUG,筆者的建議是一般情況下不做修復,因為不能復現的問題常常缺少必要的資訊用于問題的定位,即使修復后也不能通過測驗加以驗證,補充一次,如果測驗團隊經常性上報此類問題,通常意味測驗用例或測驗環境的一致性有很大的問題,應該優先對此加以改進,
筆者對BUG嚴重級別管理有如下建議:
- 每個開發組織應該有一份公開且經過評審的檔案明確定義BUG嚴重級別,
- BUG嚴重級別應該由功能的重要等級,主路徑/例外處理路徑,BUG產生錯誤的影響共同決定,BUG產生錯誤的影響一般可分為三級:不可恢復錯誤(系統無法啟動,系統無法升級等),影響功能使用,不影響功能使用(字符顯示拼寫錯誤等)
- 在BUG管理系統中,嚴重級別不應該允許被直接設定,而應該由BUG報告者輸入對應的用例名稱/路徑,BUG產生錯誤影響級別,由系統自動生成對應的嚴重級別,
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/995.html
標籤:其他
上一篇:專案微管理36 - 集智
下一篇:專案微管理37 - 陣痛
