錯誤、缺陷和失效
馬均飛鄭**
在日常的軟體測試過程中,經常會碰到軟體相關的問題,不同的人對問題的稱呼也不同,比如錯誤(mistake或者error)、缺陷(defect)、失效/失敗(fail或failure)等。這些不同的術語,雖然在平時討論的時候,可能含義基本上是一樣的,都是指軟體中存在的一些問題。但是它們的具體含義和定義是不一樣的。根據ieee 1990中對這些術語的定義,可以幫助我們更好的理解它們的真正含義和它們之間的相互關係: ·
錯誤(mistake):產生不正確結果的人為行為。人為的原因導致乙個不正確的結果。它可以是程式內的內部錯誤,也可能是文件內的錯誤。甚至是環境方面的問題。
·錯誤(
error):計算機計算得到的、觀察到的、測量到的數值或者條件和理論上得到的正確的數值或者條件之間存在的差異。
·缺陷(
defect):程式或者軟體中不正確的步驟、過程或者資料定義等。比如錯誤的語句或者錯誤的標量定義等。缺陷是錯誤的具體表現,可以是不正確的文件、程式段以及指令或者資料定義。·失效
/失敗(failure/fail):軟體系統或單元無法實現需求文件中規定的功能特性或者非功能特性。或者說單元/系統產生的結果與期望交付的服務或者結果存在偏差。外部的失效/失敗是內部缺陷在執行測試軟體時的外部反映。它是規範說明的期望值與實際觀察到的值、現象等存在偏差。比如不正確的系統反應、系統崩潰、系統宕機等等。
人為造成的錯誤(mistake)引入到軟體工作產品中就變成了缺陷(fault或defect),或者環境因素導致軟體中存在瑕疵。其中的軟體工作產品包括軟體生命週期中的任何輸出,比如規格說明、設計文件或者**等等。這些錯誤,引入到軟體工作產品中後,就成為了軟體的缺陷。假如存在缺陷的**,進行了執行,這些缺陷就可能會導致系統的不正常,或者導致系統的失效和失敗。執行存在缺陷的軟體系統,並不一定會產生執行錯誤或對使用者產生消極的影響,即失效。乙個缺陷的存在不一定會產生失效,而有的缺陷可以產生非常多的失效。
軟體系統的失效/失敗只是表面現象,我們測試的目的之一是發現失效/失敗。而對於開發人員,重要的是通過開發活動來發現和消除引起失效/失敗的存在軟體中的缺陷。發現缺陷(引起軟體失效的乙個根源)的過程需要花費時間和成本,同時也存在不確定性。同時錯誤(error)是用來測量得到的結果不正確的程度。
軟體中的失效/失敗的演化過程如下面的圖示。測試的乙個重要目的是讓軟體系統失敗,從而來發現軟體中存在的缺陷,在軟體提交給客戶之前可以將缺陷修改。測試的另乙個重要目的是評估軟體的整體的質量。比如,假如軟體系統中存在太多的高嚴重度的缺陷,測試團隊可以將軟體系統打回開發團隊,要求他們改進軟體產品質量。在軟體質量改進之前,測試團隊沒有必要浪費時間來繼續測試執行活動。或者提供管理人員一些軟體產品質量的資訊,可以幫助他們確定軟體產品的質量是不是可以提交給使用者使用,還是需要繼續花費時間和成本繼續測試活動,以發現更多的缺陷。
程式人員犯了乙個錯誤(mistake)
這個錯誤(mistake)在程式或軟體中就表現為缺陷(defect/fault)
執行帶有缺陷(defect/fault)的軟體或者程式,就可能觀察到失效/失敗(fail/failure)
圖 1軟體失效
/失敗的演變過程
缺陷產生的原因是多種多樣的,但是人為的因素是主要的原因,下面是一些經常導致產生缺陷的人為原因:
·總體而言,人總是容易犯錯誤的。 ·
開發人員的態度。 ·
測試人員的經驗和技術不足。 ·
開發人員測試人員和其他人員之間的溝通問題。 ·
需求變更頻繁。 ·
管理上的缺失。 ·
進度上的壓力。 ·
……
同時,有些環境方面的原因也會造成軟體缺陷的產生,例如:軟體使用的周圍環境的影響(電磁輻射的影響),軟體使用環境的影響(執行軟體的硬體系統老化等),以及現在的軟體系統越來越複雜,相互之間的影響越來越大,都會導致軟體缺陷的產生。下圖是更加全面的軟體失敗/失效的演變圖。
錯誤 周圍環境
/使用環境
缺陷
失效/失敗
圖 2軟體失效
/失敗的演變過程
缺陷可以通過靜態測試的方式發現,而對於失效和失敗,一般來說,只能通過動態測試的方式來檢測到。在軟體開發的不同階段,都有不同的技術和方法來檢測和移除可能存在的缺陷和失效。例如,在開發階段,**和設計的靜態評審就可以用來發現存在的缺陷。在動態測試過程,通過執行測試用例來發現可能的失效和失敗。
軟體錯誤 缺陷 故障 與失效
軟體錯誤 軟體生存期內的人為錯誤,導致軟體缺陷產生。是人為過程,相對於軟體本身是外部行為。軟體缺陷 存在於軟體 文件 資料 程式 中的偏差,導致軟體在某個特定條件下出現故障,這時稱軟體 缺陷被啟用。軟體故障 軟體執行過程中出現的不希望或不可接收的內部狀態。是動態行為。軟體失效 軟體執行時產生的不希望...
缺陷和缺陷報告
文章目錄 一 缺陷的基本概述 1 缺陷的定義 重要 2 缺陷屬性 二 缺陷的生命週期 重要 三 缺陷的識別 四 缺陷報告 五 測試需求 測試用例 缺陷報告的關係?軟體未實現產品說明書要求的功能 軟體出現了產品說明書指明不該出現的功能 軟體實現了產品說明書未提到的功能 軟體未實現產品說明書雖未明確提及...
識別和描述缺陷
什麼是缺陷?1.不滿足使用者確定需求。2.缺陷就是人們通常所說的bug。缺陷的識別 1.通過參考文件來確認缺陷 需求規格說明書,概要設計,詳細設計,使用者手冊等 2.通過了解軟體行業標準,行業背景來發現缺陷。3.通溝通來確認和識別缺陷。軟體缺陷產生的原因 再現與優化缺陷 再現又叫重現,優化缺陷不並不...