1.軟件缺陷的定義
軟件缺陷,常常又被叫做Bug,計算機軟件或程序中那些導致系統或部件不能正常運行,不符合用戶需求的缺陷。
1.1、什么樣的軟件問題可以稱之為軟件缺陷(Bug)
1、軟件未達到產品說明書標明的功能
2、軟件出現了產品說明書指明不會出現的錯誤
3、軟件功能超出產品說明書指明的范圍
4、軟件未達到產品說明書雖未指出但應該達到的目標
5、軟件難以理解、不易使用、運行速度緩慢或者從測試人員的角度看最終用戶認為不好
思考:

第一個是振鈴壞了,屬於硬件缺陷。
第二個是刪除功能不能直接刪除,應該給出相應的提示供用戶選擇,屬於易用性問題,是軟件缺陷。
第三個是服務器配置問題,並不是軟件缺陷。
第四個是性能問題,是軟件缺陷。
第五個是功能問題,是軟件缺陷。
第六個是安全性問題,是軟件缺陷。
1.2、軟件缺陷的案例描述
1、在Excel某個單元格中輸入“20”,單擊右鍵,選擇“設置單元格格式”,在數字Tab頁的分類中,選擇日期,單擊“確定”按鈕。同學們猜一猜結果會怎樣?

結果是1900/1/20
2、同上所述,輸入"60",會是怎樣?
結果是1900/2/29
從1900/1/20開始向后累加60天,大家都知道1月份是31天,60減去31結果等於29,那這么算來1900/2/29這個結果是正確的
但是1900年2月沒有29號,這是不是軟件的缺陷?

3、作為測試人員,請問你該如何編寫這個缺陷報告?
4、如下所示的缺陷報告


正確的缺陷報告

這個缺陷報告標題簡短,語言精煉;重現步驟較詳細的描述了每一步操作,第三步揭示了問題的本質,第四步描述了在多個Excel版中測試的結果,並且給出了預期結果和實際結果,形成了鮮明的對比。
在禪道中記錄如何

1.3、缺陷報告的八大要素

缺陷編號,是缺陷的唯一標識符,在禪道之類的缺陷管理工具中一般都會自動生成,這個大家不用糾結。
缺陷狀態,是缺陷跟蹤過程的進展情況,缺陷工具都會有相應的流程和狀態標識,一般不需要我們去選擇。
缺陷標題,是缺陷的概述,最好能一針見血的揭示出該缺陷的本質,這個需要后續多練習。
重現步驟,就是一步一步描述再現缺陷的操作步驟,基本要求就是開發人員按照步驟能重現Bug就可以。
嚴重程度,就是缺陷對軟件系統的影響程度,有些影響較大,有些影響較小。
優先級,就是修復缺陷的重要性或緊迫性,即哪些缺陷需要緊急修復,哪些缺陷可以后續再修復。
缺陷類型,就是根據缺陷產生的來源和根源划分出的缺陷種類。
測試環境,主要是測試環境的配置,包括操作系統和瀏覽器。
1.3.1、缺陷編號
在這里就不詳細,一般缺陷管理工具自動生成
1.3.2、缺陷狀態
按照缺陷的正常處理流程,包括新建、已打開、已指派、已修復或已解決和已關閉這五個狀態
對於禪道管理軟件的Bug狀態,目前只有三種:激活、已解決和已關閉
對於這些缺陷狀態,大家不需要糾結,一般缺陷工具會自動標識
1.3.3、標題
對缺陷或錯誤特征的概要描述,可以使用短語或短句,要求簡練、准確

1.3.4、重現步驟
第一部分,描述該缺陷重現的操作順序,要求:完整、簡潔、准確;第二部分,描述實際出現的結果;第三部分,描述預期想要的結果
1.3.5、嚴重程度
嚴重程度一般分為關鍵的、主要的、次要的和無關緊要的。
“關鍵的”屬於最嚴重的,主要是缺陷影響關鍵功能,例如崩潰、死機,主要業務流程不能跑通;
“主要的”意思是缺陷影響主要功能;
“次要的”的意思是缺陷影響次要功能;
“無關緊要的”意思是缺陷不影響功能。
思考Bug1屬於那種嚴重程度?
1.3.6、優先級
優先級一般分為緊急、高、中和低
緊急的意思就是必須立即修復/在下一次構建中修復;高的意思是必須在任何即將發布的版本中修復;中的意思是可在發布后/下次發布時修復;低的意思是能修復,也可能不修復。
思考Bug1屬於那種優先級?
1.3.7、缺陷類型
缺陷類型按照一般分類可以分為16類,禪道軟件中分為10類
思考Bug1屬於那種缺陷類型?
1.3.8、測試環境
測試環境按照一般分類可以分為操作系統、瀏覽器和手機型號3類。
對於C/S結構的軟件,測試環境只會選擇操作系統即可,對於Web軟件,測試環境主要選擇瀏覽器,對於移動端軟件,相對較復雜,測試環境這三類一般都需要選擇。
接下來我們看一下Bug1的測試環境,請問同學們選擇哪個合適?
針對這個Bug,操作系統選擇Android,手機型號可以選擇你測試時的手機型號。
1.3.9、其他要素
版本就是我們發現的缺陷所在的軟件版本,一般是軟件版本加上該版本的構建號。
分派給就是將發現的缺陷分配給相關的人員。
所屬項目/模塊就是發現的缺陷所屬的產品、項目和模塊。
提交人和提交時間就是字面意思。
附件就是通過上傳圖片或視頻,可以更好的補充說明這個缺陷。
接下來我們看一下Bug1的其他要素,請問同學們選擇哪個合適?
針對這個Bug,我們給出了一個通用的答案,大家可以參考一下。
1.4、Bug生命周期

首先測試人員提交Bug,這時Bug的狀態標識為“新建”;開發經理確認后將Bug分配給相關的開發人員去處理,此時Bug狀態為“已打開”;開發人員拿到指派給自己的Bug,開始進行處理,開發人員已經修復了該Bug后,設置Bug狀態為“已修復”;測試人員拿到已經修復的Bug進行驗證,如果驗證通過,則將該Bug設置為“已關閉”狀態;如果驗證未通過,則將該Bug設置成“重新打開”。