1. 程式人生 > >軟體測試【01】-軟體缺陷

軟體測試【01】-軟體缺陷

什麼是軟體缺陷:

IEEE 729‐1983:

  • 從產品內部看,軟體缺陷是軟體產品開發或維護過程中所存在 的錯誤、毛病等各種問題;
  • 從外部看,軟體缺陷是系統所需要實現的某種功能的失效或違 背。

Ron Patton (Software Testing, 2005):

至少滿足以下5個規則之一,才稱為發生了一個軟體缺陷

  1. 軟體未實現產品說明書要求的功能
  2. 軟體出現了產品說明書指明不應該出現的錯誤
  3. 軟體實現了產品說明書未提到的功能
  4. 軟體未實現產品說明書雖未明確提及但應該實現的目標
  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或者其他的軟體不正確狀態。

enter description here
這裡需要注意的是,有時候即使你的程式當中存在Error和Fault,但是在不同的操作和輸入下,也不一定出現Failure

軟體缺陷的構成

enter description here
很讓人驚訝的是軟體缺陷很大程度上是由客戶需求造成的,前期的需求沒做好,或者是在後期的需求變更都會導致很大的軟體缺陷問題。那麼規格說明書缺陷造成的主要原因是什麼呢?

客觀原因

1. 需求分析階段的溝通障礙
  • 產品功能:軟體開發人員和非計算機專業使用者對要開發的產品 的功能理解不一致
  • 產品特性:由於軟體產品還沒有設計、開發,對於產品的表現 只能憑經驗去估計和想象,有些特性還不夠清晰
2. 使用者的需求變化
  • 使用者的需求總是在不斷變化的,這些變化如果沒有在產品規格 說明書中得到正確的終描述,會引起說明書上下文矛盾

主觀原因

  • 對規格說明書重視不夠,在設計和寫作上投入不足
  • 經常只有設計師或專案經理得到比較全面的規格資訊

軟體缺陷在不同階段的分佈

軟體缺陷分佈
有的企業因為專案軟體有過多的缺陷,為了節省修復精力,會選擇放棄重來的策略,例如win8.0和win8.1(其實是兩個不同的團隊做的核心),因為早期win8.0的過多缺陷,微軟放棄win8.0而選擇了另外一個團隊做的win8.1核心。ps:據說迅雷兩年以內出了十多個版本的下載器?這是為什麼呢?:)