軟體測試【01】-軟體缺陷
阿新 • • 發佈:2019-01-30
什麼是軟體缺陷:
IEEE 729‐1983:
- 從產品內部看,軟體缺陷是軟體產品開發或維護過程中所存在 的錯誤、毛病等各種問題;
- 從外部看,軟體缺陷是系統所需要實現的某種功能的失效或違 背。
Ron Patton (Software Testing, 2005):
至少滿足以下5個規則之一,才稱為發生了一個軟體缺陷
- 軟體未實現產品說明書要求的功能
- 軟體出現了產品說明書指明不應該出現的錯誤
- 軟體實現了產品說明書未提到的功能
- 軟體未實現產品說明書雖未明確提及但應該實現的目標
- 軟體難以理解,不易使用,執行緩慢或者—從測試員的角度看—終端使用者會認為不好
軟體缺陷的主要型別/現象
- 約定的功能、特性沒有實現或者只是部分實現
- 設計不合理
- 實際結果和預期結果不一致
- 執行出錯,包括執行中斷、系統崩潰、介面混亂
- 資料結果不正確、精度不夠
- 使用者不能接受的其他問題,如存取時間過長(一半不應該超過10s的等待時間)、介面不美觀
軟體深入到了工業控制領域,特別是軍工企業的控制領域,軟體測試的地位愈加重要
軟體缺陷的分級體系
- Fatal:致命的錯誤。造成系統或應用程式崩潰、宕機、系統掛起,或 造成資料丟失、主要功能完全喪失等。
- Critical:嚴重錯誤。某些功能或特性沒有實現,主要功能部分喪失,次 要功能完全喪失,或致命的錯誤宣告
- Major:不太嚴重的錯誤。雖然不影響系統的級別使用,但沒有很好地 實現功能,沒有達到預期效果。如次要功能喪失,提示資訊不 太準確,或使用者介面差,操作時間長等。
該分級的可操性不強
軟體缺陷狀態
缺陷狀態 | 描述 |
---|---|
啟用或開啟 Active or open | 缺陷還沒有解決,在等待處理中,如新報告的缺陷 |
已修正或修復 Fixed or Resolved | 缺陷已被開發人員檢查、修復過,通過單元測試,但還沒有被測試人員驗證 |
關閉或啟用 Closed or Inactive | 缺陷經測試人員驗證後,確認已經修復 、或不存在之後的狀態 |
重新開啟 reopen | 缺陷經測試人員驗證後還依然存在,等待開發人員進一步修復 |
推遲 deferred | 這個缺陷可以在下一個版本中解決 |
保留 on hold | 由於技術原因或第三方軟體的缺陷,開 發人員不能修復的缺陷 |
不能重現 can not duplicate | 開發者不能復現這個缺陷,需要測試人員檢查缺陷復現的步驟 |
需要更多資訊 Need more inforn | 開發能復現這個缺陷,但開發者需要一些資訊,如:缺陷的日誌檔案,圖片等 |
重複 Duplicate | 這個缺陷已經被其他的軟體測試人員發現 |
不是缺陷 Notabug | 這個問題不是軟體缺陷 |
需要修改軟體規格說明書 Specmodified | 由於軟體規格說明書對軟體設計的要求,軟體開發人員無法修復這個缺陷,必須修改軟體規格說明書 |
軟體缺陷生命週期
軟體缺陷的產生原因:
- 團隊協作問題
- 技術問題
- 軟體本身問題
軟體缺陷的術語
- Error 錯誤
- Defect 缺點/缺陷
- Fault 故障
- Failure 失效
- Anomy 異常
- Variance 偏差
- Incident (小)毛病
- Inconsistency 矛盾/不一致
- Problem 問題
實際上,不要認為以上的術語是近義詞,他們代表著不同的軟體缺陷程度
軟體失效週期
Software Error ‐> Software Fault ‐> Software Failure
對比一下Faults,Error和Failure
我們不妨使用病人來類比一個有缺陷的軟體
- Error 出錯
軟體內在狀態的不正確,類似於病人的病因:例如高血壓,心律不齊,感染病毒
- Fault 故障
譬如硬體設計錯誤(design mistakes in hardware)類似於病人的“病”,例如心臟病
- Failure 失效:故障的現象
軟體的行為和原本設計的不一致,類似於病人的一系列症狀
- Bug 這個詞在軟體測試當中不是一個常用的詞,它的描述不準確,它甚至包括了Error,Fault,Failure或者其他的軟體不正確狀態。
這裡需要注意的是,有時候即使你的程式當中存在Error和Fault,但是在不同的操作和輸入下,也不一定出現Failure
軟體缺陷的構成
很讓人驚訝的是軟體缺陷很大程度上是由客戶需求造成的,前期的需求沒做好,或者是在後期的需求變更都會導致很大的軟體缺陷問題。那麼規格說明書缺陷造成的主要原因是什麼呢?
客觀原因
1. 需求分析階段的溝通障礙
- 產品功能:軟體開發人員和非計算機專業使用者對要開發的產品 的功能理解不一致
- 產品特性:由於軟體產品還沒有設計、開發,對於產品的表現 只能憑經驗去估計和想象,有些特性還不夠清晰
2. 使用者的需求變化
- 使用者的需求總是在不斷變化的,這些變化如果沒有在產品規格 說明書中得到正確的終描述,會引起說明書上下文矛盾
主觀原因
- 對規格說明書重視不夠,在設計和寫作上投入不足
- 經常只有設計師或專案經理得到比較全面的規格資訊
軟體缺陷在不同階段的分佈
有的企業因為專案軟體有過多的缺陷,為了節省修復精力,會選擇放棄重來的策略,例如win8.0和win8.1(其實是兩個不同的團隊做的核心),因為早期win8.0的過多缺陷,微軟放棄win8.0而選擇了另外一個團隊做的win8.1核心。ps:據說迅雷兩年以內出了十多個版本的下載器?這是為什麼呢?:)