聊聊缺陷逃逸率

辅导星球一位同学模拟面试,过程中聊到了缺陷逃逸率相关的话题。我在以前写的关于质量保障相关的文章中提到过缺陷逃逸率,这是一项比较重要的衡量软件产品交付质量的指标。

所谓缺陷逃逸率,指的是软件产品线上发布后,发生在线上环境的缺陷数量与该版本迭代生命周期内总缺陷数量的比率,缺陷逃逸率也称之为线上BUG逃逸率或者“测试逃逸”。

关于线上缺陷逃逸率,有这样一个计算公式:线上缺陷逃逸率=线上缺陷数/版本周期总缺陷数×100%。这个指标一般除了衡量线上的产品交付质量以外,还可以用来评估技术团队的质量控制水平。

为什么会有缺陷逃逸率这样一个质量度量指标呢?原因有这几点:

  • 测试无法穷尽:即在现实的情况下,测试无法覆盖所有的测试点。
  • 系统存在问题:由于设计等各种因素,因此软件系统一定存在问题。
  • 验证而非改善:测试是为了验证产品质量是否符合预期,而不能直接改善质量。

在这三点原因或者说前提之下,软件测试工作在近几年的定位逐渐演变成了质量保障。通过各种手段方法来控制整体的交付质量满足预期设计的标准,并想办法进一步提高质量和稳定性。

 

哪些因素会导致出现缺陷逃逸呢?主要有如下几点因素:

  • 需求设计本身存在逻辑缺陷或者漏洞;
  • 需求评审阶段未发现需求的逻辑漏洞;
  • 研发的代码存在漏洞,且自测未发现;
  • 测试用例设计无法穷尽覆盖所有节点;
  • 测试用例执行过程中存在漏测和误差;
  • 测试环境和生产环境配置差异导致漏测;
  • 需求的频繁变更和一句话需求导致漏测;
  • 项目管理不足和资源紧张导致的客观因素;
  • 线上发布时的变更和数据差异导致的缺陷;

上述这些影响因素,作为技术同学应该都很熟悉,且总是被这些问题所困扰。那如何降低缺陷逃逸率,提升交付质量和控制交付过程质量呢?常见的方法有如下几种:

  • 测试左移:测试尽早介入,在需求和编码阶段就参与进来,通过需求分析/评审、风险评估等方式降低风险。
  • 质量门禁:在软件产品的每个流转环节都设定准入准出标准,进一步降低风险和缺陷流转到下一环节的概率。
  • 项目管理:制定合理的项目管理流程机制,针对资源不足、频繁变更等影响质量的风险动作制定专门的预案。
  • 专项治理:通过加强基础技术设施建设,工具流程优化等方式,提升测试环境稳定性,提升测试数据准确度。
  • 变更管理:据不完全统计,线上大部分问题来自于变更。因此针对配置变更、业务变更等事项加强评审检查。
  • 线上巡检:完善线上监控覆盖和链路追踪,通过手工+自动化方式在线上针对P0-P2业务流程进行不定时巡检。
  • 应急机制:制定线上的应急响应机制和稳定性预案,快速发现和解决问题,降低线上问题发现解决耗时,通过稳定性预案作为兜底和应急措施,减少线上问题对业务的不良影响。
  • 复盘优化:制定问题复盘和持续优化机制,找到问题根因并持续优化,做到优化措施有人做,监督验证专人跟进。
  • 技术改进:采用一些新技术来提升线上系统的稳定性,比如生产全链路压测和混沌工程。

 

上述的几种方式适用于整个的质量保障过程,而缺陷逃逸率也仅是评估交付质量和质量控制的指标之一。测试团队更需要从多维度和全局角度来思考,如何保障和提升研发测试过程质量以及交付质量。

除了上述的一些方法之外,诸如用例和缺陷关联分级,监控告警等方法也是可以采用的手段。还需要意识到的一点是,缺陷逃逸率是比较滞后的统计结果,只能作为一种定时的评估指标和参考,而非一言定质量好坏的唯一结论。

在实际的工作应用过程中,需要根据实际的项目情况和团队现状进行落地,找到适合自己团队的落地方式。

posted @ 2024-05-17 12:42  老_张  阅读(186)  评论(0编辑  收藏  举报