一、缺陷定义与分类

1.1、软件缺陷

  定义:在软件工程整个生命周期中任何背离需求、无法正确完成用户所要求的功能的问题,包括存在于组件、设备、或系统软件中因异常条件不支持而导致系统失败等都属于缺陷。

  从产品内部看,缺陷是软件产品开发或维护过程中存在的问题、错误。
  从产品外部看,缺项是系统所需要实现的某种功能的失效或违背。

概念:符合下面5个规则中的一个,就是软件缺陷
(1)软件未实现产品说明书要求的功能
(2)软件出现了产品说明书指明不应该出现的错误
(3)软件实现了产品说明书未提到的功能
(4)软件未实现产品说明书虽未明确提及但应该实现的目标
(5)软件难以理解、不易使用、运行缓慢或者—从测试员的角度看—最终用户会认为不好

拓展:软件错误、软件失效、软件故障

①软件错误:导致期望的运行结果和实际运行结果间出现差异的一些问题;
②软件故障:指软件运行过程中出现的一种不希望或不可接受的内部状态;
③ 软件失效:软件无法满足日益发展的需求;

1.2、 软件缺陷的描述与分类

  • 软件缺陷的描述

仅仅是描述一个缺陷,需要三大核心要素(字段)。
标题:用简洁的话描述该缺陷,主要是让开发知道这是一个什么样的缺陷
  主要操作+缺陷说明
详细描述:
  作用:便于开发重现和定位缺陷的
  测试环境:浏览器:全部/IE8,操作系统:win7 x64
  测试数据:用户名,密码,相关的业务账号
  重现步骤:缺陷发现的过程
  缺陷说明:告诉开发,你所认为的缺陷是什么,取得理解上的一致
  实际结果与预期结果进行比较来说明这个缺陷
截图:
  1.截大一点,最好截整个桌面或整个窗口
  2.尽量注意不要包含不好的信息,比如群聊窗口
  3.截图中强烈建议加上文字描述缺陷的位置和说明

  • 软件缺陷的分类

1、业务逻辑
2、数据处理
3、接口
4、UI
5、性能
6、安全性
7、兼容性
8、配置
9、文档等

二、缺陷管理流程

  2.1、缺陷产生的原因

  通常开发及测试人员所讲述的软件错误和软件缺陷是两个不同的概念,简单的来讲软件错误是指在软件声明周期内不希望或不可见接受的人为错误,其结果是导致软件缺陷的产生。在软件动态运行过程中,在某种条件下系统中软件缺陷暴露导致故障发生,最终导致软件失效。
  软件缺陷产生的原因
  ①需求规格说明书编写的不够全面、不完整、不准确而产生的缺陷;
  ②设计变更时,没有及时沟通或者沟通不顺畅;
  ③研发过程中的需求变更;
  ④程序开发人员对业务上的不理解或理解不一致;
  ⑤代码编写不严谨,缺少逗号、被除数为0等
  ⑥软件系统运行的软硬件环境带来的问题。
  正确理解了缺陷定义和产生的根源,可以帮助测试人员比较容易地找到判断缺陷的方法,因此用户的需求规格说明书或产品说明书是判断缺陷的关键。因此在识别缺陷的过程中,测试人员可以从以下几个方面入手
  ①首先测试人员要对需求规格说明书或者产品说明书等说明性文档要非常熟悉,因为这些文档反映了用户的实际业务需求;
  ②通过对所测试产品或系统的行业和业务背景知识的了解,来发现被忽视的问题;
  ③通过自己不断的积累测试经验和行业规则,发现深层次的缺陷;
  ④通过沟通来收集、学习和分享其他人判断缺陷的方法。

2.2、缺陷报告介绍

缺陷报告是测试工程师的主要的产物,也是测试团队主要的交付物之一。其作用是让研发人员能够了解到缺陷是如何产生的,便于更好的修复缺陷。
  缺陷报告的几大要素:缺陷标题、缺陷发生的模块、缺陷产生的功能点、缺陷类型、缺陷状态、缺陷产生的详细步骤、缺陷的严重性、缺陷的优先级、缺陷的状态、涉及的软件版本、提交缺陷的人员、提交日期。同时还可以提供相关联的测试用例编号。
  缺陷处理后要填写的信息:修复的版本号、修复人、拒绝/挂起人

2.3、缺陷管理流程

①总体流程

②缺陷提交流程

③缺陷修复流程

④缺陷验证流程

⑤缺陷拒绝处理流程

⑥挂起缺陷处理流程

⑦争议缺陷处理流程

三、缺陷度量与缺陷报告

3.1、缺陷度量

  缺陷度量是软件度量的一部分,其本身并不能发现缺陷、剔除缺陷,但是有助于这些问题的解决。另外,当正确、持续地进行了缺陷度量时,产品以及过程的质量属性的数据为实施和管理过程改进活动提供了有效的基础。
  软件产品的质量度量,主要集中在软件的缺陷度量上。
  缺陷度量就是对项目过程中产生的缺陷数据进行采集和量化,将分散的缺陷数据统一管理,使其有序而清晰,然后通过采用一系列数学函数,对数据进行处理,分析缺陷密度和趋势等信息,从而提高产品质量和改进开发过程。
  (1)组织级缺陷度量,目的是了解组织的整体缺陷情况,了解客户对组织的质量满意度,建立组织基线,确定改进活动。
  (2)项目级缺陷度量,目的是了解项目实时质量情况(很多项目只在最后度量,包括那些迭代式开发的项目,实际上为时已晚),预测缺陷造成的发布后维护工作量,了解客户对项目的质量满意度。
  (3)个体缺陷度量,目的是了解个体缺陷产生的详细原因,并实施行动进行改进。
  前两种度量大家接触较多,但第三种度量常常被忽略。这常常导致:项目反复得到关于自己的质量评价,但很难了解如何去提高;测试组常常能做一些改进(如增加测试覆盖、延长测试周期)来提高缺陷排除效率,但开发组没有降低缺陷产生数量的有效措施;软件开发遵循了编码规范,但似乎对提高质量没有太多帮助。

3.2、缺陷报告

缺陷报告要素
报告编号 唯一的索引标识
标题 简单的描述,传达缺陷的基本信息
报告人 缺陷报告的原始作者
日期 首次报告该缺陷的日期
版本号 软件的哪个版本出现了该缺陷
优先级 开发人员处理和修复缺陷的先后的先后顺序
严重级 描述所报告的缺陷的严重程度
缺陷描述 缺陷的简单描述
运行环境 缺陷报告发生的环境中操作系统的信息
重现步骤 对发现的缺陷进行详细的描述
实验结果 运行测试用例产生的实际结果
预期结果 由需求报告得知的运行测试用例可能产生结果
附件 添加图片或结果文件的方式直观展示缺陷

四、缺陷管理工具介绍

4.1、Bugzilla(免费,跨平台)

Bugzilla是一个Bug追踪系统设计用来帮助你管理软件开发。
Bugzilla是一开源Bug Tracking System,是专门为Unix定制开发的。但是在windows平台下依然可以成功安装使用.
Testopia是一款和Bugzilla集成到一起的test case management系统.
它的强大功能表现在以下几个方面:
1. 强大的检索功能
2. 用户可配置的通过Email公布Bug变更
3. 历史变更记录
4. 通过跟踪和描述处理Bug
5. 附件管理
6. 完备的产品分类方案和细致的安全策略
7. 安全的审核机制
8. 强大的后端数据库支持
9. Web,Xml,Email和控制界面
10. 友好的网络用户界面
11. 丰富多样的配置设定
12. 版本间向下兼容

4.2、BugFree(免费)

  BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理系统。简单实用、免费并且开放源代码(遵循GNU GPL)。

4.3、、Quality Center(商业,前身Mercury TestDirector ,跨平台)

  HP Quality Center; 提供了基于 Web 的系统,可在广泛的应用环境下自动执行软件质量测试和管理。仪表盘技术使您可以了解验证功能和将业务流程自动化,并确定生产中阻碍业务成果的瓶颈。HP Quality Center 使 IT 团队能够在开发流程完成前就参与应用程序测试。这样将缩短发布时间表,同时确保最高水平的质量。
企业级的软件质量解决方案。

4.4、IBM Rational ClearQuest (商业,跨平台)

  IBM Rational ClearQuest 是一款强大的软件开发测试工具。集成并自动化软件及系统开发的业务过程。V7.0 提供增强的需求跟踪、构建跟踪、企业测试管理,及部署跟踪的功能。这提供了从开发到部署的完整的审计跟踪,并扩展了跨生命周期的可追溯性。软件增强了开发流程并使之自动化,同时还提高了软件生命周期的可理解性、可预测性和可控制性。

4.5、JIRA(商业)

JIRA是集项目计划、任务分配、需求管理、错误跟踪于一体的商业软件。
JIRA功能全面,界面友好,安装简单,配置灵活,权限管理以及可扩展性方面都十分出色。
JIRA创建的默认问题类型包括New Feature、Bug、Task和Improvement四种,还可以自己定义,所以它也一是过程管理系统。
Jira融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA。
JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。同时,开源则是其另一特色,在用户购买其软件的同时,也就将源代码也购置进来,方便做二次开发。

4.6、Mantis(开源)

  Mantis是一个基于PHP技术的轻量级的缺陷跟踪系统,其功能与前面提及的JIRA系统类似,都是以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上可能没有JIRA那么专业,界面也没有JIRA漂亮,但在实用性上足以满足中小型项目的管理及跟踪。更重要的是其开源,不需要负担任何费用。不过目前的版本还存在一些问题,期待在今后的版本中能够得以完善。

4.7、Bugzero 免费开源,跨平台)

  BUGZERO? 是一个多功能,基于网络 (web-based) 并在浏览器 (browser) 下运行的 Bug缺陷管理和跟踪系统 (bug tracking system),可用来记录,跟踪,并归类处理软件开发过程出现的 Bug 和硬件系统中存在的缺陷(defect)。 BUGZERO 也是一个完整的服务管理软件,包括集成服务台热线流程管理(Help Desk),可用来记录各种日常事务,变更请求,和问题报告,及追踪和处理各种客户讯问,反馈,和意见。
  BUGZERO 提供了一个可靠的中央数据库使公司内部团队成员以及外部客户能在任何地点任何时间进行协调和信息交流,并且使任何记录都有据可查。它使你省时省力。BUGZERO 不但使用方便,而且功能齐全,变通性好,能够灵活设置各种实际工作流程,满足你特定的业务和产品环境下的需求。这种灵活、易用的缺陷跟踪流程不仅增强了项目开发的质量,同时也提高了整个机构的生产效率。

4.8、BugTracker(免费开源,跨平台)

  Bugtracker是一个完整的bug/issue管理系统.它使用Java Servlet作为web前台,MySQL数据库作为后台。

4.9、JTrac(开源)

  JTrac是一个开源且可高度配置的问题追踪的Web应用程序。它是一个一般性问题,跟踪网络应用程序,可方便地实现定制,增加自定义字段和下拉式。其特点包括可定制的工作流程,实地一级的权限,电子邮件集成,文件附件和详细的历史观点。

4.10、BugNet(开源)

  BugNet是一个不错的开源bug跟踪和项目管理系统

4.11、BugOnline(开源)

  BugOnline 是一个开源的BUG管理系统。其功能强大,易于使用。
  基于asp.net2.0 ,sql server 2005(包括Express 版),Ajax等技术.
  BugOnline 的一些特性:

①、在线消息及E-mail自动通知功能。有新Bug及Bug分配给用户同时将自动通知用户。
②、优秀的人员分配,工作量统计功能。
③、居于项目角色的权限管理,工作规划,流程化。
④、Bug状态统计,便于掌控项目进度。
⑤、基于SSL的数据传输,确保数据不被截取,保证安全性。(也可设定为非SSL)
⑥、强大的报表功能。

4.12、eTraxis(开源)

  eTraxis是基于网页的免费bug跟踪系统。主要特点是:完全自定义模板,先进的过滤器, LDAP支持,电子邮件通知,订阅报刊,提醒,灵活的权限管理,图形化的项目指标等。

4.13、URTracker(商业)

  URTracker 是一款通用的流程化的问题跟踪管理软件。它可以:

①、帮助您集中管理各种类型的问题、工作任务、人员交互等事务;
②、跟踪每个事务的处理过程;
③、控制问题处理的流程;
④、提供一个有效的协作平台,简化团队成员的交互,提升沟通效率;
⑤、积累知识信息;
⑥、帮助您进行统计和分析;

4.14、KisTracker

  KisTracker一款bug跟踪管理软件(原名叫:iTracker),功能强大,易于使用,是基于WEB方式的协同工作软件.
  它用于帮助公司和团队跟踪工作中的问题,管理和记录这些问题的处理过程.可以应用于:

1.产品BUG跟踪
2.任务跟踪
3.服务跟踪
4.各种处理问题跟踪
4.各种处理问题跟踪

15、TestLink(开源)

TestLink用于进行测试过程中的管理,通过使用TestLink提供的功能,
可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,
同时,它还提供了好多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。
TestLink 是sourceforge的开放源代码项目之一。作为基于web的测试管理系统,TestLink的主要功能包括:测试需求管理 测试用例管理 测试用例对测试需求的覆盖管理 测试计划的制定 测试用例的执行 大量测试数据的度量和统计功能。

软件测试 → 第二章 基础-> 软件缺陷与缺陷管理的更多相关文章

  1. Java基础知识二次学习-- 第二章 基础语法与递归补充

    第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...

  2. Linux就该这么学 20181002(第二章基础命令)

    参考链接https://www.linuxprobe.com/ 忘记密码操作 启动页面 默认按e 在linux16行后空格 rd.break ctrl + x mount -o remount,rw ...

  3. 软件测试 → 第一章 基础-> 软件与软件危机

    一. 软件概念 1.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合.2.程序是按事先设计的功能和性能要求执行的指令序列.3.数据是使程序能正常操纵信息的数据结构. ...

  4. 第二章 基础查询 2-1 SQL语句基础

    一.列的查询 基本的SELECT语句: SELECT <列名 >,...... FROM < 表名>; 注:子句是SQL的组成要素. 注:查询结果中的列的顺序和SELECT子句 ...

  5. C#高级编程 (第六版) 学习 第二章:C#基础

    第二章 基础 1,helloworld示例: helloworld.cs using System; using System.Collections.Generic; using System.Li ...

  6. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  7. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  8. 第二章:python基础,数据类型

    """第二章:python基础,数据类型2.1 变量及身份运算补充2.2 二进制数2.3 字符编码每8位所占的空间位一个比特,这是计算机中最小的表示单位.每8个比特组成一 ...

  9. 第二章(java程序设计)第三章(语言基础)

    第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...

随机推荐

  1. vue.js_10_vue的路由

    1.vue-router的基本使用 1>安装vue-rouder路由模块 <script src="js/vue-2.4.0.js"></script> ...

  2. PHP--封装干净利落的输出dump()函数

    /** * 打印函数 * */ if (! function_exists ( 'dump' )) { function dump($var, $exit = true) { echo '<pr ...

  3. DOM4J -(XML解析包)

    DOM4J - 简介 是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,采用了Java集合框架并完全支持DOM, ...

  4. Luogu P4011 孤岛营救问题(状态压缩+最短路)

    P4011 孤岛营救问题 题意 题目描述 \(1944\)年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到 ...

  5. Leetcode475.Heaters供暖器

    冬季已经来临. 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖. 现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径. 所以,你的输入将会是房屋和供暖器的位置. ...

  6. Redis源码解析:21sentinel(二)定期发送消息、检测主观下线

    六:定时发送消息 哨兵每隔一段时间,会向其所监控的所有实例发送一些命令,用于获取这些实例的状态.这些命令包括:"PING"."INFO"和"PUBLI ...

  7. SQL Server分页查询进化史

    分页查询一直SQL Server的一个硬伤,就是是经过一些进化,比起MySql的limit还是有一些差距. 一.条件过滤(适应用所有版本) 条件过滤的方法有很多,而思路就是利用集合的差集选择出目标集合 ...

  8. 原生ajax请求json数据

    <?php header("content-type:text/html;charset=utf-8"); echo '{"name":"小明& ...

  9. []==![] 为什么等于true?

    最近碰到这样一个问题: []==![]  为什么等于true? 首先分析  !的优先级较==高,先运算==两侧的操作数: typeof []; //"object" typeof ...

  10. linux 利用 alias 自定义快捷命令

    例如:alias avi='cd /home/study/goodstudy/goodgoodstudy/english/movie/avi'则后续命令行输入 avi , 就自动执行了  cd xxx ...