抱歉,你测试的项目上线之后bug太多了!

简介: 抱歉,你测试的项目上线之后bug太多了!

聊聊缺陷逃逸率


最近群里的小伙伴经常在说,生产环境出bug了,测试同学不得不背锅,指标不好看了等等。

那什么是「缺陷逃逸率」


“缺陷逃逸率”,Defect Escape Percentage,简称DEP,是指软件产品发布后发现的缺陷数量与该软件产品在整个生命周期发现的所有缺陷数量的比率,通常用来衡量软件开发团队与测试团队对软件质量控制的水平。


缺陷逃逸率的计算公式一般是:


「缺陷逃逸率(DEP)= [R2 / (R1 + R2)] * 100%」


其中:R1指的是产品发布前发现的缺陷数;R2是产品发布之后所发现的缺陷数。

不知道你是否记得,当初做项目测试的时候,经常遇到一个问题:开发团队认为这个很简单的事情,但是不停地修改迭代,到最后发现问题很多了。在产品团队中,可能有人会说,缺陷逃逸是质量管理上一个很常见的问题,而且没有什么好讨论和研究的。那这种观点应该是错误的!对于软件开发团队来说,产品缺陷是非常常见的问题。


一、产品上的缺陷问题

当开发人员在研发一款产品,会遇到很多常见的问题,其中不乏产品缺陷。那么这些问题出现于哪里呢?


我们将这一系列问题分为两类:有可能出现于功能实现、需求执行过程中的缺陷问题。


下面将分别从各个角度介绍产品上的缺陷问题:从上述分类可以看出:有可能出现在功能实现、需求执行过程中的缺陷问题一般都是由于工作人员疏忽大意导致;有可能是因为开发团队在开发过程中缺乏技术意识而造成;可能是由于开发团队自身缺陷导致。


从以上分类中可以看出:


  • 有可能出现在开发过程中的缺陷问题一般都是由于工作人员疏忽大意导致;
  • 有可能发生在需求过程中的缺陷问题一般都是由于需求人员在需求过程中缺乏技术意识而造成;
  • 也有可能发生在功能实现过程中的缺陷问题一般都是由于开发团队对产品需求理解不到位造成;
  • 还有可能出现在需求执行过程中的缺陷问题一般都是由于用户自身不重视导致;

最后可以从产品团队人员工作态度出发来分析造成产品缺陷问题的原因!


1、功能实现过程中的缺陷问题

一般来说,在功能实现过程中,产品开发人员主要存在以下两种缺陷:


在设计时往往不太注重细节,不能做到“零缺陷”!或者设计时出现了严重的 bug等;在功能实现过程中不能严格执行操作规范和流程,

例如:没有实现用户输入密码的功能;用户输入密码后无法进行设置等。当用户登录了该功能后,仍然不能做到正确进行设置;或者用户在输入密码时出现了 Bug等;

以上缺陷如果发生在功能实现过程中可能就会发生,但是由于这些缺陷很多是比较小的缺陷,所以并不容易被发现甚至能够避免。如果这些缺陷非常小,开发人员就不需要进行检查或者及时发现,也不需要过于重视这个问题,但是如果缺陷太大了话,会导致测试人员无法快速定位问题所在,从而造成无法通过测试等问题。


2、需求与用户执行过程中的缺陷问题

当产品向用户收集需求时,用户会通过需求文档的描述表达出来。但是在需求文档中往往只是一个描述,没有其他的信息来作为辅助。


比如:需要用户的密码和用户密码管理方式。这个时候开发人员可能没有意识到这个问题,并且会利用用户隐私保护的漏洞来规避这一问题。下面将具体说明下这种缺陷问题的发生概率,并且说明开发团队的应对方法!当开发人员将需求文档发给用户时,用户会对需求文档进行阅读,如果用户对需求文档有疑问且需要咨询业务人员时,开发人员就需要根据客户需求来制定方案对该问题进行处理。用户在阅读到这个流程之后就可以修改自己的需求了,开发人员可以据此来降低缺陷发生率!


二、导致缺陷逃逸的原因

既然缺陷逃逸会造成很大的影响,那为什么有那么多人不愿意承认缺陷呢?


究其原因,主要还是在产品团队层面。对于软件开发团队来说,我们最担心和最怕的事情莫过于质量管理出现问题,这会严重影响我们对产品质量、业务质量和产品交付等方面的判断。而且我们要做好事前质量管理,要考虑到后续可能会发生的问题,并制定相应的措施和计划来防止质量事故发生。

对于产品层面来说,我们还应该考虑到产品架构设计、开发成本、生产周期等多个方面,要考虑到各个方面可能会有很多缺陷发生。当然这一切都会在产品研发结束后才会出现,而且是我们最难控制的方面——比如架构设计、开发成本、生产周期、管理、人力资源、组织架构等方面在后续是否能被及时发现和纠正也是我们非常关心的问题(甚至包括很多人没注意到的问题)。所以要做好后续管控措施也不是一朝一夕可以完成的事情。


1、产品团队的缺陷控制意识不足

很多人对业务质量的理解是由一个功能(这在业务层面上来说是没有错的),产品和用户都想把这个功能做好却没有注意到缺陷。这就导致了产品和用户的交互行为经常不受控制、数据不被记录和收集。


举个例子:有些缺陷的代码会被修改过之后再进行测试。而如果你的产品/用户没有发现这些修改后的代码,就有可能因为某些操作而导致这些修改后的代码再次被修改,而这个修改过的代码又可能会被用于后续项目进行测试或交付客户应用。久而久之便造成了产品的质量隐患,这样下来还怎么提升产品能力?

对于软件开发团队来说,最难控制的地方就是缺陷管控环节了。而缺陷管控不仅仅局限于我们的产品需求阶段,而是所有产品所面临的所有可能会让我们陷入困境的步骤:产品设计、研发成本、生产周期等问题中去了,但还是有很多缺陷的发生。而这些缺陷一旦被发现或者反馈给我们产品质量部门后都有可能被忽视——或者在产品的交付阶段才将缺陷问题反映出来(这对我们来说十分重要)。但很多产品团队在出现问题时就不愿意承认缺陷并且不愿意去修复,这就导致了在交付前没有任何手段去解决这些缺陷。


2、产品团队缺陷处理能力不足

在产品层面,缺陷可以分为人为的缺陷和产品内部的缺陷,而这种缺陷是可以通过产品和开发过程中对产品的优化来减少的。


所以说产品团队如果不能对产品本身缺陷的处理能力有所提升那么就不会有那么多缺陷逃逸的情况发生。因为当发生缺陷的时候我们很难判断是谁的责任,因为产品团队的责任就在于对产品本身缺陷的识别、发现和解决问题。如果产品团队是没有能力及时发现自己产品内部缺陷的话那么他们可能就不会对自己产品的存在的缺陷感到不满并开始检讨自己。


当一个缺陷需要被人指出时即使问题不是非常严重但该缺陷已经发生过一次或几次——尤其在上线后一个季度内存在的次数最多,而且每次出现问题都会让团队感到十分的头疼,那么这个时候如果产品团队没有及时解决这个问题很可能会造成二次伤害(当然最直接的伤害还是要从产品本身出发)。

所以说产品团队一旦发现产品存在缺陷,那么首先应该做的就是尽最大努力让缺陷问题得到解决,然后再进行缺陷的改进和补充等工作让缺陷得到更好的控制和避免;而不是一味的想着如何不让缺陷发生而去主动承担缺陷,也不要害怕要承担责任而试图掩盖缺陷。


三、如何防止产品上存在缺陷逃逸?

想要防止产品存在缺陷逃逸,在制定、实施计划和过程中要做好充足的准备。


首先要对产品进行质量把关,产品质量不仅涉及到研发人员、质量经理、开发人员,还包括系统架构师、需求开发人员、测试工程师等。因此,要加强对产品质量的管理、避免产品质量问题。


其次要加强质量控制能力建设,不断提升业务人员和开发人员责任心。要重视产品质量控制能力建设工作,这不仅将直接影响产品质量控制水平的提升、业务人员责任心改进速度和产品质量一致性等方面的效果,而且会对项目后期开发交付产生重要影响!


第三要强化关键流程把控体系工作,也就是质量控制体系和质量管理工作开展情况这两个方面工作的能力。


1、如何防止缺陷逃逸

首先我们需要明确,在实际的项目过程中,我们经常会发现项目上存在缺陷逃逸现象。


「原因是什么?」是测试没有测到?还是开发人员不够细心。


也就是产品出现的问题是由产品经理自己来承担结果的。产品经理为了减少产品上的缺陷逃逸,可以在项目早期制定一些预防措施:


为了防止产品出现缺陷逃逸,首先要在产品上设置相关的缺陷规则和风险预警提醒;其次要对产品出现缺陷原因进行分析评估,分析产品问题产生原理及可能造成的后果;最后在项目中要加强产品质量管理,从质量管理体系建设入手保证产品质量可控可控!


所以产品上存在缺陷逃逸,可以从两个方面来解决:产品经理和项目经理的配合、产品质量把关、业务人员的主动参与、业务人员的质量意识提升等几个方面来解决:产品经理应发挥好业务人员和开发人员各自在产品方面的优势,制定相应的产品质量计划方案;并积极参与产品质量控制工作;为产品质量控制体系和质量管理工作开展情况做出准备;及时地处理或发现产品质量问题并及时地采取措施等等!


2、数据统计分析:质量控制是产品质量控制的核心

产品质量控制工作是通过对产品过程质量问题的统计分析,对所辖产品进行风险评估,制定风险预警方案,在此过程中,对风险数据进行统计分析从而确定可能出现的风险值。然后将可能出现的风险值和实际发生产品风险值进行对比,最终找出可能发生产品风险问题的产品,以防止缺陷逃逸行为的发生。

质量控制工作作为质量管理的核心内容之一,不仅涉及到产品质量的把控和风险的评估,而且还包括对产品质量问题采取有效措施,防止产品问题逃逸的发生。因此,质量控制工作在实施过程中要将重要且敏感的工作目标进行及时有效的记录和分析并加以管理与控制,以保证质量控制工作的有序有效开展。

随着大数据的兴起,产品数据管理已经成为产品质量控制工作的核心之一。产品设计、质量跟踪、迭代升级、缺陷分析与处理等过程中都需要对产品数据定期或不定期地进行记录和分析。


3、产品质量管理

质量管理是一种过程管控,是针对整个过程的质量管控,不能只局限于过程管理。


因此,在进行产品质量控制时,应注重对整个过程的质量管理,以避免产品存在缺陷逃逸。在开展产品质量工作时,应把产品质量管理体系贯穿于产品整个过程中,并以此为基础不断完善产品质量管理体系,的实施方案和步骤,从而提升产品质量控制水平,使产品质量管理体系更加完善和有效。所以在开展产品质量工作时,不能局限于过程管理工作开展,而应该以产品质量管理工作持续开展和不断完善产品质量体系。


因为产品质量体系主要包含以下三个方面:质量计划和质量控制计划;产品质量过程控制管理计划。

产品质量计划和质量控制计划是产品质量工作的第一步,也是决定产品质量控制工作能否持续推进的基础和前提。所以应加强产品质量计划和质量控制计划的实施,同时应加强产品质量过程控制管理计划的实施情况监控。质量管理计划对产品质量方面而言非常重要,要确保质量控制计划的持续有效执行,只有通过项目实施情况(项目周期、产品问题、研发发现等)来监控与分析质量计划的执行情况和结果。产品质量策略也应在相关工作中加以完善和持续贯彻实施。例如:如何评价或评估产品缺陷逃逸?


4、文化理念

企业文化产品开发流程要体现品质理念,建立质量管理体系和质量管理工作开展情况的能力,包括风险管控能力建设工作和关键流程把控体系工作;


业务文化:质量经理、需求开发、测试工程师,只有各方面都做好了,才能保证产品能满足客户的需求。要开展全流程产品质量把控工作,加强产品的质量管控,降低缺陷逃逸率。


很多产品缺陷逃逸是因为产品的质量把控没有到位、没有做好系统的质量控制工作导致缺陷逃逸导致的。这个时候要对项目前期的质量管控工作做好详细的梳理。特别是对项目前期质量管控工作做好总结,从各个方面避免产品出现缺陷逃逸问题。然后要对全流程产品质量管控工作进行详细阐述:对于产品质量管控工作进行详细描述:包括开发阶段质量管理工作开展的状态、风险管控工作流程建立状态报告制度。


针对产品质量控制工作的全流程质量管控的计划和工作流程(包括设计过程、开发过程和测试、上线过程和质量检查);对质量改进路径的追踪策略和措施等。

相关文章
|
25天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
29 6
|
27天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
28 1
|
29天前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
28 4
|
1月前
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
265 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
50 2
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
78 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
2月前
|
人工智能 自动驾驶 机器人
【通义】AI视界|苹果自动驾驶汽车项目画上句号:加州测试许可被取消
本文精选了24小时内的重要科技新闻,包括Waymo前CEO批评马斯克对自动驾驶的态度、AMD发布新款AI芯片但股价波动、苹果造车项目终止、Familia.AI推出家庭应用以及AI逆向绘画技术的进展。更多内容请访问通义官网体验。
|
2月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
725 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
2月前
|
Java Maven
Maven 项目测试
接下来我们要学习如何构建和测试这个项目。
48 5
下一篇
DataWorks