![软件测试(慕课版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/707/34514707/b_34514707.jpg)
1.3 软件缺陷管理
1.3.1 软件缺陷的概念
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/016-1.jpg?sign=1739695840-a3dNhpSgIx6iM7vImy71luBA1tevYSZX-0-36b65e26c9c48513b532ce0d42585bdc)
软件缺陷常常又被叫作bug。所谓软件缺陷,即计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。
一般看来,满足以下的任意一种情况都可以称为软件缺陷。
(1)软件未达到产品说明书中标明的功能。
(2)软件出现了产品说明书中指明的不会出现的功能。
(3)软件功能超出了产品说明书中指明的范围。
(4)软件未达到产品说明书中指明应达到的目。
(5)软件难以理解和使用、运行速度慢,或最终用户认为不好。
以计算器开发为例。计算器的产品规格说明书中描述:计算器应能准确无误地进行加、减、乘、除运算。如果按下加法键,没什么反应,就是第1种类型的缺陷;若计算结果出错,也是第1种类型的缺陷。
产品规格说明书还可能规定计算器不会死机,或者停止反应。如果随意敲键盘导致计算器停止接受输入,这就是第2种类型的缺陷。
如果使用计算器进行测试,发现除了加、减、乘、除之外还可以求平方根,但是产品规格说明书没有提及这一功能模块。这是第3种类型的缺陷——软件实现了产品规格说明书中未提及到的功能模块。
在测试计算器时若发现电池没电会导致计算不正确,而产品规格说明书是假定电池一直都有电的,从而发现第4种类型的错误。
软件测试人员如果发现某些地方不对,比如测试人员觉得按键太小、“=”键布置的位置不好按、在亮光下看不清显示屏等,无论什么原因,都要认定为缺陷。而这正是第5种类型的缺陷。
1.3.2 软件缺陷的属性
发现缺陷后,需要提交缺陷单,通常情况下,缺陷单需要包含以下的内容。
(1)缺陷标识(Identifier):缺陷标识是标记某个缺陷的一组符号。每个缺陷必须有一个唯一的标识。
(2)缺陷类型(Type):缺陷类型是根据缺陷的自然属性划分的缺陷种类。类别通常可以分为以下几种情况,如表1-2所示。
表1-2 缺陷类型
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/1b2.jpg?sign=1739695840-CTfKCGCwjJBZmml9YzyBsqAJbm85tPkf-0-16e84a894973eef95184e49ad5ef7d13)
(3)缺陷严重程度(Severity):缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度,如表1-3所示。
表1-3 缺陷严重程度
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/1b3.jpg?sign=1739695840-Ifb1C5JMKisxcEVs9rw3np8VWSoycTQc-0-24df759ec32a91e7d6161eb9d8243079)
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/018-1.jpg?sign=1739695840-d99zWzbItDNqj7PmhudX12npWW6uya55-0-c405a9f2d795ecaa071e373d31dd072e)
(4)缺陷优先级(Priority):缺陷的优先级指缺陷必须被修复的紧急程度,如表1-4所示。
表1-4 缺陷优先级
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/1b4.jpg?sign=1739695840-Dxy3fMY6BkiB07KIhywsM2gEcF9ghx75-0-3c176be8db5ee12a4cbcdeaa9a00083f)
(5)缺陷状态(Status):缺陷状态指缺陷通过一个跟踪修复过程的进展情况,如表1-5所示。
表1-5 缺陷状态
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/1b5.jpg?sign=1739695840-giSOkdLc1jbgTE68s1wjUtRkxU3TYvLL-0-b076fe15fbb0ebcfaa8c9bc66bd3f2c9)
(6)缺陷起源(Origin):缺陷起源指缺陷引起的故障或事件第一次被检测到的阶段,如表1-6所示。
表1-6 缺陷起源
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/1b6.jpg?sign=1739695840-I3rrPacm3bVoEzU7Sdc7dt9Ag7yh9haB-0-35c9bdf4048c71b8bd1e2f90e3c90914)
(7)缺陷来源(Source):缺陷来源指引起缺陷的起因,如表1-7所示。
表1-7 缺陷来源
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/1b7.jpg?sign=1739695840-zdKOjjue5Mo7PRVr0YgBC2XJiiOZiORv-0-6b1eb4f6eb316309d5898455f6a8e0eb)
1.3.3 缺陷生命周期
在软件开发过程中,缺陷拥有自身的生命周期。缺陷在走完其生命周期后最终会关闭。确定的生命周期保证了过程的标准化。缺陷在其生命周期中会处于许多不同的状态。缺陷的生命周期如图1-3所示。
新建:当缺陷被第1次递交的时候,它的状态即为“新建”。这也就是说缺陷未被确认其是否真正是一个缺陷。
打开:在测试者提交一个缺陷后,测试组长确认其确实为一个缺陷时把状态置为“打开”。
指派:一旦缺陷被测试组长置为“打开”,会将缺陷交给相应的开发人员或者开发组。这时缺陷状态变更为“分配”。
测试:当开发人员修复缺陷后,会将缺陷提交给测试组进行新一轮的测试。在开发人员公布已修复缺陷的程序之前,会把缺陷状态置为“测试”。这时表明缺陷已经修复并且已经交给了测试组。
![](https://epubservercos.yuewen.com/876753/18433190001772906/epubprivate/OEBPS/Images/1a3.jpg?sign=1739695840-kQqMqrnFb6xwGJMCl042inaBx1Aunivn-0-c2e83768e69b4a281b97504d1d15062a)
图1-3 软件缺陷生命周期
延期:缺陷状态被置为“延迟的”意味着缺陷将会在下一个版本中被修复。将缺陷置为“延迟的”原因有许多种。有些由于缺陷优先级不高,有些由于时间紧,有些是因为缺陷对软件不会造成太大影响。
拒绝:如果开发人员不认为其是一个缺陷,可能会不接受。同时会把缺陷状态置为“拒绝”。
确认:一旦缺陷被修复就会被置为“测试”,测试员会执行测试。如果缺陷不再出现,这就证明缺陷被修复了同时其状态被置为“确认”。
重新打开:如果缺陷被开发人员修复后仍然存在,测试人员会把缺陷状态置为“重新打开”。缺陷即将再次穿越其生命周期。
关闭:一旦缺陷被修复,测试人员会对其进行测试。如果测试人员认为缺陷不存在了,会把缺陷状态置为“关闭”。这个状态意味着缺陷被修复,通过了测试并且核实确实如此。
1.3.4 常见的缺陷管理工具
如何有效地管理软件产品中的bug,是每一家软件企业必须面临的问题。遗憾的是很多软件企业还是停留在手工作坊式的研发模式中,其研发流程、研发工具、人员管理不尽人意,无法有效地保证质量、控制进度,并使产品可持续发展。缺陷管理是软件项目开发过程中一个的重要环节,选择一个较好的缺陷管理工具进行缺陷管理尤为重要,以下列举部分主流的缺陷管理系统。
(1)Bugzilla
Bugzilla是Mozilla公司提供的一个开源的免费缺陷跟踪工具。作为一个产品缺陷的记录及跟踪工具,它能够建立一个完善的bug跟踪体系,包括报告bug、查询bug记录并产生报表、处理解决、管理员系统初始化和设置4部分。
(2)BugFree
BugFree是借鉴微软的研发流程和bug管理理念,使用PHP+MySQL独立写出的一个bug管理系统。该系统简单实用、免费并且开放源代码(遵循GNU GPL)。命名BugFree有两层意思:一是希望软件中的缺陷越来越少直到没有;二是表示它是免费且开放源代码的,大家可以自由使用传播。
(3)HP Quality Center
Quality Center是一个基于Web的商业测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括制定测试需求、计划测试、执行测试和跟踪缺陷。此外,通过Quality Center还可以创建报告和图监控测试流程。
Quality Center是一个强大的测试管理工具,合理地使用Quality Center可以提高测试的工作效率,节省时间,起到事半功倍的效果。
(4)JIRA
JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。JIRA中配置灵活、功能全面、部署简单、扩展丰富。JIRA是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。
(5)Mantis
Mantis是一个基于PHP技术的轻量级的缺陷跟踪系统,其功能与前面提及的JIRA系统类似,都是以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上可能没有JIRA那么专业,界面也没有JIRA美观,但在实用性上足以满足中小型项目的管理及跟踪。更重要的是其开源,不需要负担任何费用。不过目前的版本还存在一些问题,期待在今后的版本中能够得以完善。