软件测试之缺陷管理

一、软件缺陷的基本概念

1、软件缺陷的基本概念主要分为:缺陷故障失效这三种。

(1)缺陷(defect):存在于软件之中的偏差,可被激活,以静态的形式存在于软件内部,相当于bug;

(2)故障(Fault):软件运行中出现的状态,可引起意外情况,若不加处理,可产生失效,是一个动态行为;

(3)失效(Failure):软件运行时产生的外部异常行为结果,表现与用户需求不一致,功能能力终止,用户无法完成所需要的应用。

二、软件缺陷的三个基本概念的相互关系

1、bug一定会被激活吗?激活后一定表现为故障吗?

答案是不一定,任何一个软件即便测试的非常严格,在发布后也会存在遗漏的bug,但是这些bug在用户使用的时候不一定会被激活,因为有些bug隐藏的比较深,用户在使用的过程中不可能触发这些bug,所以这些bug一直隐藏在软件内部,没有被激活,也就是说即使软件内部有bug,软件也可以正常运行,但也有可能,在某些情况下,这些bug会被激活,表现为故障*。

2、故障一定会导致失效吗?

答案也是不一定,开发人员在做设计的时候,更多的考虑了在软件使用期间可能出现的故障,然后针对这些故障采取的一些预防的措施,比如:数据库会出现的数据丢失的问题,为了避免这种失效的出现,产品开发人员在做设计的时候,也许会采取数据库时时备份的方式,也就是在本地有一个数据库,在异地也有一个数据库,这个地方的数据库会实现时时的备份,当其中一个数据库出现了异常,那另外一个数据库还可以启动工作,所以说,缺陷不一定会导致故障,故障不一定会导致失效。

三、软件缺陷报告单

缺陷报告单是任何缺陷修改的一个起始,也就是我们测试人员在进行测试执行的时候,发现了一个缺陷,发现缺陷后,我们不要口头和开发人员交流,因为口头的交流不仅没有任何的约束力,而且有可能表达不清楚,所以我们要把缺陷落实在纸面上,也就是要测试人员填写缺陷报告单。

缺陷报告单的作用:
 
1、测试执行过程中,发现缺陷失效后(不一定是失效,也许是故障,一般来说这个缺陷在测试阶段被发现往往表现为产品失效),提出书面的报告,提供给开发人员作为定位缺陷的依据,也作为日后缺陷度量的数据依据,开发人员接到缺陷报告单后,他会根据缺陷报告单上描述的缺陷外在表现来重现这个问题,然后找出这个问题,也就是缺陷产生的根源。
 
2、缺陷报告还可以作为我们日后缺陷度量的数据依据,度量是对整个产品进行考核,比如说,我们的软件在什么时候可以发布,什么时候可以交付给客户等等问题,这个时候我们往往从缺陷度量的数据来看,比如我们子啊最后一轮进行测试的过程中,每千行代码只有0.1个缺陷,说明我们产品的质量已经非常高了,而且遗留的缺陷也就非常少了,这个时候就可以发布产品了,所以这个缺陷的统计数据时非常重要的,它可以作为缺陷度量的依据。

四、软件缺陷管理的目的

缺陷管理的目的是:对各个阶段测试发现的缺陷进行跟踪管理,以保证各级缺陷的修复率达到标准,主要实现以下目标:

(1)保证信息的一致性;

(2)保证缺陷得到有效的跟踪,缩短沟通时间,解决问题更高效;

(3)收集缺陷数据并进行数据分析,作为缺陷度量的依据。

五、软件缺陷管理工具

软件缺陷管理的流程一定要有相关的软件进行支撑,否则软件缺陷管理的流程是无法正常运行的,就类似于我们在做开发的过程中,开发JAVA相关的程序我们就需要JBOSS这样的工具,,如果我们开发C++就需要Visual C++工具,在软件缺陷跟踪中我们也需要一些工具,比如商用工具Mercury Quality Center是目前非常强大的软件测试管理工具,它的功能包括业务管理、测试用例的管理、缺陷的分析及测试脚本的管理,所有缺陷仅仅是其一个点;Rational ClearQuest它主要用于变更控制和缺陷管理这一块,此外还有Bugzilla,Mantis,Jira三个开源工具。

使用商用的软件缺陷管理工具或软件测试工具,好处是由商家提供一系列支持、工具的相关制定以及后期的升级服务,所以商用软件缺陷管理工具从整体的易用性和可用性来看,要比开源工具好得多,开源工具最大的好处就是便宜,不用去花钱购买,但是易用性和可用性相对来说就弱一些。

六、软件缺陷管理的相关角色

软件开发和软件测试的任何一个流程,都应该有流程的入口,流程的出口,还有流程的具体过程以及参与到这些过程中的相关角色。

在软件跟踪的流程当中,有以下几类角色

(1)软件开发人员;

(2)软件测试人员;

(3)软件测试项目经理;

(4)软件开发项目经理;

(5)CCB(Change Control Board):变更控制委员会。所谓的变更控制委员会,他是在开发人员和测试人员对缺陷出现争议的时候,做出最后的裁判;

(6)配置管理员:就是测试人员提交BUG,开发人员修改,修改完check in ,那么在check in这个过程中需要配置管理员参与进来,只有经过配置管理员授权,开发人员才有资格把代码从本地Check in到服务器中去,所以配置管理员在软件缺陷管理中也很重要。

软件缺陷报告的内容以及缺陷的相关属性

一、软件缺陷报告的内容

1、Bug Title/Summary:缺陷标题/简单描述

对测试执行过程中实际出现的问题的描述,尽量要简单概要。

2、Repro Step:重现步骤

(1)描述问题的基本环境,包括操作系统、硬件环境、网络环境、被测试软件的运行环境;

(2)简单概括的描述清楚软件出现异常时,测试人员的操作步骤和使用数据;

(3)缺陷原因的分析;比如说:因为不支持字符集,而导致的乱码...等等。

(4)要写清楚,重复操作了多少次,这个bug依然出现。(不能操作一次就提交bug,因为有可能是自己操作失误。)

(5)相关附件:为了让开发人员更好的了解Bug。 (如果从GUI界面上可以反映出软件的异常,可以截取界面,粘贴在问题单上 或者 日志、数据包);

(6)属性(在下面详细说明):缺陷报告中除了对缺陷的基本描述外,我们还要对其属性进行说明。

二、软件缺陷的相关属性

测试人员在提交缺陷的时候,需要把缺陷,发现缺陷的过程以及缺陷的一些表现都要描述出来,除此之外这些缺陷还有一定的相关属性,也要填写出来。

下面我们列举六个比较重要的缺陷属性。

属性1、缺陷发现人

在提交缺陷的时候测试人员一般是缺陷的发现人,这个字段也很重要,比如到QC里面统计一下本季度哪一个测试人员发现的BUG比较多。

属性2、缺陷发现时间

缺陷发现时间也是一个统计的计数点,或者数据点,缺陷趋势图就是按照时间轴来排列的,如果缺少了缺陷发现时间,这个图是做不出来的,没有缺陷趋势图,我们就不能进行产品的度量,就不知道产品在什么时候发布是比较合适的。

属性3、缺陷状态

软件缺陷状态这个属性是非常重要的,在任何的软件报告中,这一个属性是一定要有的。
下面我们主要列出了在QC中常用的几种状态:

New:缺陷的初始状态;
 
Open:开发人员开始修改缺陷;
 
Fixed:开发人员修改缺陷完毕;
 
Closed:回归测试通过;
 
Reopen:回归测试失败;
 
Postpone:推迟修改;
 
Rejected:开发人员认为不是程序问题,不用修改;
 
Duplicate:与已提交的Defect重复;
 
Abandon:被Reject和Duplicate的Defect,测试人员确认后的确不是问题,将Defect置为此状态。

New是缺陷的初始状态,所谓初始状态就是发现问题,发现问题,提交问题后,这个缺陷就处于New状态;

提交给开发人员后,开发人员接受这个问题,那么就把这个缺陷的状态就更改为Open;

开发人员修改缺陷之后,就会把这个缺陷的状态改为Fixed;

然后提交给测试人员,测试人员进行回归测试,回归测试通过,就把状态改为Closed;

我们可以看到New--Open--fixed--closed这个状态是一个比较理想的缺陷流程,也就是测试人员提交问题,开发人员接受并修改问题,然后测试人员进行回归测试通过。

但是我们一般在缺陷跟踪流程当中也会遇到一些问题:

1、比如说回归测试失败,这个状态就是Reopen,也就是说测试人员在进行回归测试的时候失败了,就要把这个缺陷的状态改为Reopen,然后再提交给开发人员进行修改,开发人员修改完之后,把这个缺陷的状态改为Fixed,然后又提交给测试人员,测试人员再一次进行回归测试,直到回归测试成功,把这个缺陷的状态改为Closed。

2、Postpone:推迟修改,比如当我们把问题提交给开发人员的时候,开发人员觉得也接受这个问题,但是暂时无法修改,那就可以把这个问题置为推迟状态,此时这个缺陷的状态就是Postpone。

3、当我们提交的Defect与别热提交的相同时,缺陷就被置为Duplicate状态。

4、比如说开发人员觉得测试人员提交的不是问题,不用修改,可以将这个BUG置为Reject状态。

5、被Reject和Duplicate的Defect,我们最终要把它置为Abandon状态。

属性4、缺陷严重程度(Severity)

缺陷的严重程度就是:站在用户的交付,bug出现之后对软件质量的破坏程度,也就是说这个软件缺陷的存在将对这个软件的功能和性能产生怎么样的影响。

一般来说,软件的严重程度分为五个等级:

第一个等级:致命的软件缺陷(Fatal)

造成系统或应用程序崩溃、死机、系统挂起,或造成数据丢失,主要功能完全丧失,导致本模块以及相关模块异常等问题。如代码错误,死循环,数据库发生死锁、与数据库连接错误或数据通讯错误,未考虑异常操作,功能错误等。
第二个等级:严重错误的软件缺陷(critical)

严重错误的软件缺陷(critical):系统的主要功能部分丧失、数据不能保存,系统的次要功能完全丧失。问题局限在本模块,导致模块功能失效或异常退出。如致命的错误声明,程序接口错误,数据库的表、业务规则、缺省值未加完整性等约束条件。
第三个等级:一般错误的软件缺陷(major)

一般错误的软件缺陷(major):次要功能没有完全实现但不影响使用。如:提示信息不太准确,或用户界面差,操作时间长,模块功能部分失效等,打印内容、格式错误,删除操作未给出提示,数据库表中有过多的空字段等。
第四个等级:较小错误的软件缺陷(Minor)

较小错误的软件缺陷(Minor),使操作者不方便或遇到麻烦,但它不影响功能性的操作和执行,如错别字、界面不规范(字体大小不统一,文字排列不整齐,可输入区域和只读区域没有明显的区分标志),辅助说明描述不清楚。
第五个等级:建议问题的软件缺陷(Enhancemental)

建议问题的软件缺陷(Enhancemental):由问题提出人对测试对象的改进意见或测试人员提出的建议、质疑。

属性5、缺陷的优先级(Priority)

站在 开发/项目 的角度,综合权衡修改bug的时间、成本、技术和风险,决定bug修改的先后顺序。

优先级每个公司都有自己的标准,例如某公司的标准为:
 
P0:必须当天修改,8小时内修改;(优先级最高的)
 
P1:1~2内修改;
 
P2:2~4天内;
 
P3:一周内;
 
P4:发布周期内或者不修改。

属性6、缺陷的类型

1、质量特性的角度

(1)功能;(2)性能;(3)安全性;(4)易用性;(5)可靠性。

2、功能性角度

(1)错误(Error);(2)遗漏(Missing);(3)多余的(Extra);(4)可优化(Improvement /Enhancement /suggestion)

3、缺陷产生的原因:

(1)需求不清晰,导致设计目标偏离客户端需求,从而引起功能或产品特征上的缺陷;

(2)对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造成容量或边界错误;

(3)新技术的应用,可能涉及技术或系统兼容的问题,事先没有考虑到;

(4)可能由于不支持字符集,而导致的乱码。

等等的一些原因。

属性7、缺陷所属版本

在软件开发测试的过程中,版本的管理是非常重要的,也就属于配置管理的范畴,测试人员开始测试的时候肯定从配置库里面提取最新的版本;

比如说1.0版本,那么测试完成之后,把问题提交给开发人员,开发人员对1.0版本的源代码进行修改,那么这个修改完之后的版本肯定是1.0的下一个版本,也就是1.1版本,修改完之后测试人员要进行回归测试,这个时候测试人员进行回归测试的版本一定是最新版本,即1.1版本。
细分的话,缺陷所属版本还应该有三个属性:(1)发现缺陷的版本;(2)修改bug的版本;(3)回归测试的版本。

所以说,只有缺陷所属版本在开发过程中规定明确落实下来,我们的产品质量才能有保证,不会造成开发和测试的混乱。

属性8、缺陷修改日期

最后一个缺陷的属性是缺陷修改日期,是主要对开发人员进行考核的参数,比如测试人员在3月份提交了一个测试报告单,开发人员在12月份才修改这个问题,由此可见,开发人员修改这个问题的响应时间太长。所以缺陷修改日期往往可以作为绩效考核或者其他的一些数据统计的基础。

三、范例:优秀的缺陷跟踪单###

对WPS或者OFFICE进行测试时,发现错误。

简单描述:

--Arial 、Wingdings 和 Symbol字体会破坏新文体。

详细描述:

--软件测试环境为Windows 2000 sp4

--启动WordEdit编辑器,然后创建新文件;

--输入四行文本,重复输入”welcome to shanghai university“

--选中这四行文本,然后选择下拉菜单,并选择Arial字体;

--所有文本被转换成控制字符、数字、和其他明显的随机二进制数据;

--重复三次,结果都一样。

相关附件

--附件1:变换格式之前的文档;

--附件2:变换格式之后的文档;

软件缺陷初步分析:

--可能是格式问题,保存文件,关闭WordEdit并重新打开文件,但是数据依然被破坏;

--在改变字体前保存文件防止错误;(建议性的)

--对现存文件进行上述错误,错误不再发生;

--只在Windows 2000下发生,而不出现在Solaris、Mac和其他Windows系统。


              【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战


四、App自动化项目实战

五、一线大厂简历


六、测试开发DevOps体系

七、常用自动化测试工具


八、JMeter性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/237183.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue快速入门教程

什么是Vue? 1,vue是一套前端框架,免除原生JavaScrip中dom操作,简化书写。 2,给予MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上 官网&a…

漏洞复现--速达进存销管理系统任意文件上传

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

python:六种算法(DBO、RFO、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、六种算法简介 1、蜣螂优化算法DBO 2、红狐优化算法RFO 3、鲸鱼优化算法WOA 4、灰狼优化算法GWO 5、粒子群优化算法PSO 6、遗传算法GA 二、6种算法求解23个函数 (1)23个函数简介 参考文献: [1] Yao X, Liu Y, Lin G M. Evolution…

关于粒子群算法的一些简单尝试

粒子群算法核心思想:(鸟 粒子) (1)许多的鸟站在不同的地方; (2)每一只鸟都有自己寻找食物的初始飞行方向、飞行速度; (3)这些鸟儿每隔一段时间…

0013Java安卓程序设计-ssm酒品移动电商平台app

文章目录 **摘要**目录系统实现5.1 APP端5.2管理员功能模块开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析…

PHP基础 - 循环与条件语句

循环语句 1)for循环: 重复执行一个代码块指定的次数。 for ($i = 0; $i < 5; $i++) { // 初始化 $i 为 0,每次循环后将 $i 值增加 1,当 $i 小于 5 时执行循环echo "The number is: $i \n"; // 输出当前 $i 的值并换行 }// 循环输出结果为: // The number …

美颜技术讲解:视频美颜SDK的开发与集成

如今&#xff0c;美颜技术的应用愈发成为吸引用户的一项重要功能。本文将深入探讨视频美颜SDK的开发与集成&#xff0c;揭示其背后的技术原理和实现步骤。 一、美颜技术的背后 美颜技术并非仅仅是简单的滤镜效果&#xff0c;而是一项涉及复杂图像处理和算法的技术。在视频美颜…

Android VpnService 使用(一)

Android VpnService 使用(一) 本篇算是VpnService 使用的第一篇文章,主要讲述service创建,intent调用. 1: 申请权限 <service android:name".MyVpnService" android:permission"android.permission.BIND_VPN_SERVICE"><intent-filter><ac…

【android开发-22】android中音频和视频用法详解

1&#xff0c;播放音频 MediaPlayer是Android中用于播放音频和视频的类。它提供了许多方法来控制播放&#xff0c;例如播放、暂停、停止、释放等。下面是一个简单的MediaPlayer用法详解和参考代码例子。 首先&#xff0c;确保在布局文件中添加了一个MediaPlayer控件&#xff…

nginx配置自动压缩-gzip压缩

1.nginx配置文件 server里添加gzip配置信息。 重启nginx服务 对比效果&#xff1a;上图是没有开启gzip自动压缩&#xff0c;总共资源是1.3M&#xff0c;传输1.3MB&#xff0c;下图是开启gzip压缩&#xff0c;总共资源是1.3M&#xff0c;传输了973KB。

全网快递批量查询的得力助手

在当今社会&#xff0c;网络购物已经成为人们日常生活的重要组成部分。随着网购的普及&#xff0c;快递行业也迅速发展壮大。然而&#xff0c;这也带来了一系列问题&#xff1a;如何快速、准确地查询快递信息&#xff1f;如何批量查询多个快递&#xff1f;今天&#xff0c;我们…

Axure的安装以及简单使用

目录 Axure简介 是什么 有什么用 Axure的优缺点 优点&#xff1a; 缺点&#xff1a; 安装 汉化 Axure的使用 工具栏 页面 ​编辑 添加子页面 ​编辑 Axure简介 是什么 Axure是一款著名的原型设计工具。它允许用户创建交互式线框图、流程图、原型和其他设计文档&…

性能测试基础

性能测试分类 客户端性能&#xff1a;测试APP自身的性能&#xff0c;例如CPU、内存消耗&#xff1b;web页面元素渲染速度 服务端性能&#xff1a;测试服务端项目程序的支持的并发、处理能力、响应时间等&#xff0c;主要通过接口来做性能测试 性能测试指标 并发 同时向服务…

UART设备

UART简介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;通用异步收发传输器&#xff0c;UART作为异步串口通信协议的一种&#xff0c;工作原理是将传输数据的每个字符一位接一位地传输。 是在应用程序开发过程中使用频率最高的数据总线。 UART串…

CV计算机视觉每日开源代码Paper with code速览-2023.12.6

点击计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】Rejuvenating image-GPT as Strong Visual Representation Learners 论文地址&#xff1a;https://a…

动能资讯 | 智慧城市:城市转型升级

随着科技的迅猛发展&#xff0c;智慧城市正成为城市发展的新方向和热门话题。智慧城市以其前瞻性的规划、科技的融合和可持续的发展&#xff0c;为人们提供更高品质的生活和工作环境&#xff0c;正逐渐引领着新时代的发展。 智慧城市不仅仅是城市的现代化&#xff0c;更是城…

k8s一键部署uniswap

1、拉取uniswap源码 github地址 2、编写Dockerfile并打镜像 # Set the base image FROM node:18.10.0# WORKDIR /usr/src/app/ WORKDIR /home/gateway# Copy files COPY ./ /home/gateway/# Dockerfile author / maintainer LABEL maintainer"Michael Feng <mikehummi…

界面控件Kendo UI for jQuery中文教程 - 如何集成全新的DockManager组件

R3 2023版本在Kendo UI for jQuery套件中引入了许多改进&#xff0c;其中包括多个主题上的新组件、特性和改进。其中一个重要的新增功能是DockManager组件&#xff0c;本文将话一些时间与大家讨论一下它的功能&#xff01; P.S&#xff1a;Kendo UI for jQuery提供了在短时间内…

【数据结构】面试OJ题——链表

目录 1.移除链表元素 思路&#xff1a; 2.反转链表 思路&#xff1a; 3.链表的中间结点 思路&#xff1a; 4.链表中的倒数第K个结点 思路&#xff1a; 5.合并两个有序链表 思路&#xff1a; 6.链表分割 思路&#xff1a; 7.链表的回文结构 思路&#xff1a; 8.随机链表…

区块链扩容问题研究【06】

1.Plasma&#xff1a;Plasma 是一种基于以太坊区块链的 Layer2 扩容方案&#xff0c;它通过建立一个分层结构的区块链网络&#xff0c;将大量的交易放到子链上进行处理&#xff0c;从而提高了以太坊的吞吐量。Plasma 还可以通过智能合约实现跨链交易&#xff0c;使得不同的区块…