1.2 軟件缺陷管理
上一節已經提到,軟件由于其自身的特點和目前的開發模式,隱藏在軟件內部的缺陷無法根除。軟件測試工作就是查找軟件中存在的缺陷,反饋給開發人員使之修改,從而確保軟件的質量,因此軟件測試要求測試人員對軟件缺陷有一個深入理解。本節將針對軟件缺陷的相關知識進行詳細講解。
1.2.1 軟件缺陷產生的原因
軟件缺陷就是通常所說的Bug,它是指軟件中(包括程序和文檔)存在的影響軟件正常運行的問題。IEEE(Institute of Electrical and Electronics Engineers,電氣電子工程師協會)729—1983標準對軟件缺陷有一個標準的定義:從產品內部看,缺陷是產品開發或維護過程中存在的錯誤、毛病等各種問題;從產品外部看,缺陷是系統運行過程中某種功能的失效或違背。
軟件缺陷的產生主要是由軟件產品的特點和開發過程決定的,比如需求不清晰、需求頻繁變更、開發人員水平有限等。歸結起來,軟件缺陷產生的原因主要有以下幾點。
(1)需求不明確。軟件需求不清晰或者開發人員對需求理解不明確,導致軟件在設計時偏離客戶的需求目標,造成軟件功能或特征上的缺陷。此外,在開發過程中,客戶頻繁變更需求也會影響軟件最終的質量。
(2)軟件結構復雜。如果軟件系統結構比較復雜,很難設計出一個具有很好層次結構或組件結構的框架,這就會導致軟件在開發、擴充、系統維護上的困難。即使能夠設計出一個很好的架構,復雜的系統在實現時也會隱藏著相互作用的難題,而導致隱藏的軟件缺陷。
(3)編碼問題。在軟件開發過程中,程序員水平參差不齊,再加上開發過程中缺乏有效的溝通和監督,問題累積越來越多,如果不能逐一解決這些問題,會導致最終軟件中存在很多缺陷。
(4)項目期限短。現在大部分軟件產品開發周期都很短,開發團隊要在有限的時間內完成軟件產品的開發,壓力非常大,因此開發人員往往是在疲勞、壓力大、受到干擾的狀態下開發軟件,這樣的狀態下,開發人員對待軟件問題的態度是“不嚴重就不解決”。
(5)使用新技術。現代社會,每種技術發展都日新月異。使用新技術進行軟件開發時,如果新技術本身存在不足或開發人員對新技術掌握不精,也會影響軟件產品的開發過程,導致軟件存在缺陷。
1.2.2 軟件缺陷的分類
軟件缺陷有很多,從不同的角度可以將缺陷分為不同的種類。
按照測試種類可以將軟件缺陷分為界面類、功能類、性能類、安全性類、兼容性類等。
按照缺陷的嚴重程度可以將缺陷劃分為嚴重、一般、次要、建議。
按照缺陷的優先級不同可以將缺陷劃分為立即解決、高優先級、正常排隊、低優先級。
按照缺陷的發生階段不同可以將缺陷劃分為需求階段缺陷、構架階段缺陷、設計階段缺陷、編碼階段缺陷、測試階段缺陷。
按照不同標準將軟件缺陷劃分成不同的種類,具體如表1-1所示。
表1-1 按照不同標準劃分缺陷類型

1.2.3 軟件缺陷的處理流程
軟件測試過程中,每個公司都制訂了軟件的缺陷處理流程,每個公司的軟件缺陷處理流程不盡相同,但是它們遵循的最基本流程是一樣的,都要經過提交、分配、確認、處理、復測、關閉等環節,如圖1-7所示。

圖1-7 軟件缺陷處理流程
關于圖1-7所示的軟件缺陷處理環節的具體講解如下所示。
(1)提交:測試人員發現缺陷之后,將缺陷提交給測試組長。
(2)分配:測試組長接收到測試人員提交的缺陷之后,將其移交給開發人員。
(3)確認:開發人員接收到移交的缺陷之后,會與團隊甚至測試人員一起商議,確定該缺陷是否是一個缺陷。
(4)拒絕/延期:如果經過商議之后,缺陷不是一個真正的缺陷則拒絕處理,關閉缺陷;如果經過商議之后,確定其是一個真正的缺陷,則可以根據缺陷的嚴重程度或優先級等選擇立即處理或延期處理。
(5)處理:開發人員修改缺陷。
(6)復測:開發人員修改好缺陷之后,測試人員重新進行測試(復測),檢測缺陷是否確實已經修改。如果未被正確修改,則重新提交缺陷。
(7)關閉:測試人員重新測試之后,如果缺陷已經被正確修改,則將缺陷關閉,整個缺陷處理完成。
多學一招:軟件缺陷報告
在實際軟件測試過程中,測試人員在提交軟件測試結果時都會按照公司規定的模板(Word、Excel、缺陷管理軟件等)將缺陷的詳細情況記錄下來生成缺陷報告,每個公司的缺陷報告模板并不相同,但一般都會包括缺陷的編號、類型、嚴重程度、優先級、測試環境等,有時還會有測試人員的建議。
假如有一款軟件(軟件名稱為“掌上問答”)的登錄功能存在缺陷,測試人員在測試時發現當輸入的用戶名超過10個字符時就無法登錄,對于這樣一個缺陷,按該公司的缺陷報告模板做一份缺陷報告,如表1-2所示。
表1-2 軟件缺陷報告

在編寫缺陷報告時要注意以下事項。
(1)每個缺陷都有一個唯一的編號,這是缺陷的標識。
(2)缺陷要有重現步驟。
(3)一個缺陷生成一份報告。
(4)缺陷報告要整潔、完整。
1.2.4 常見的軟件缺陷管理工具
軟件缺陷管理是軟件開發項目中一個很重要的環節,選擇一個好的軟件缺陷管理工具可以有效地提高軟件項目的進展。軟件缺陷管理工具有很多,免費的、收費的應有盡有,下面介紹幾個比較常用的軟件缺陷管理工具。
1. Bugzilla
Bugzilla是Mozilla公司提供的一款免費的軟件缺陷管理工具。Bugzilla能夠建立一個完整的缺陷跟蹤體系,包括缺陷跟蹤、記錄、缺陷報告、處理解決情況等。
使用Bugzilla管理軟件缺陷時,測試人員可以在Bugzilla上提交缺陷報告,Bugzilla會將缺陷轉給相應的開發者,開發者可以使用Bugzilla做一個工作表,標明要做的事情的優先級、時間安排和跟蹤記錄。
2. 禪道
禪道是一款優秀的國產項目管理軟件,它集產品管理、項目管理、質量管理、缺陷管理、文檔管理、組織管理和事務管理于一體,是一款功能完備的項目管理軟件,完美地覆蓋了項目管理的核心流程。
禪道分為專業和開源兩個版本,專業版是收費軟件,開源版是免費軟件,對于日常的項目管理,開源版本已經足夠使用。
3. Jira
Jira是Atlassian公司開發的項目與實務跟蹤工具,被廣泛用于缺陷跟蹤、客戶實務、需求收集、流程審批、任務跟蹤、項目跟蹤和敏捷管理等工作領域。Jira配置靈活、功能全面、部署簡單、擴展豐富、易用性好,是目前比較流行的基于Java架構的管理工具。
Jira軟件有兩個認可度很高的特色:第1個是Atlassian公司對該開源項目免費提供缺陷跟蹤服務;第2個是用戶在購買Jira軟件時源代碼也會被購置進來,方便做二次開發。
- OpenStack Cloud Computing Cookbook(Third Edition)
- Learning LibGDX Game Development(Second Edition)
- Python快樂編程:人工智能深度學習基礎
- Delphi程序設計基礎:教程、實驗、習題
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- C#程序設計(慕課版)
- Mastering Python Scripting for System Administrators
- JavaScript前端開發與實例教程(微課視頻版)
- Java持續交付
- 網站構建技術
- QGIS By Example
- Java:High-Performance Apps with Java 9
- 快速入門與進階:Creo 4·0全實例精講
- 機器學習微積分一本通(Python版)
- C++編程兵書