【转】浅谈测试缺陷逃逸的原因和改进措施

近期在向客户申请季度付款时,被要求统计整理项目组整个季度的测试缺陷逃逸率,并对标合同文件看是否触发罚款。因此对测试缺陷逃逸进行了一些学习和思考。在此分享一下。

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

我们都知道软件测试有两个非常重要的特性,一个是软件测试不可能做到穷尽测试,另外一个是软件测试可以发现系统存在的问题,但是不可能证明系统中不存在问题,因此,被测过的系统上线后出现一些测试过程中没有发现的缺陷是再正常不过的事情。但尽管如此,生产问题会影响客户使用体验,对于开发和测试团队来说都不是一件好的事情,是需要我们尽力去减少和避免的。

在很多软件外包行业,客户通常用缺陷逃逸率评价软件开发和测试的能力。很多测试公司也把缺陷逃逸率作为测试人员绩效考核的一项重要指标。如以下为某银行测试外包合同中明确的乙方工作质量目标:

为确保上线工单质量,各系统SIT测试交易按如下类型区分:

1) 高级别:全部账务类、对客交易类交易(功能),确保A、B、C级缺陷全部拦截,D级逃逸率不超过10%;

2) 中级别:高频的非对客类、非账务类、和数据库交互(要素级)、合法性校验(要素级)交易(功能),确保A、B级缺陷全部拦截,C级逃逸率不超过40%;

3)低级别:除高、中以外的所有交易;非账务类,且不在核心的交易(功能),确保A、B级缺陷全部拦截。

注:缺陷等级对照:A级=致命;B级=严重;C级-一般;D级=轻微;E级=建议,具体缺陷严重性等级在合同或工作说明书中有明确定义。

在该行的测试质量要求中:高级别交易的“确保A、B、C级缺陷全部拦截”,意思即致命、严重和一般级生产缺陷的逃逸率应该是0。“D级逃逸率不超过10%”即轻微缺陷的逃逸率不超过10%。这个质量要求属于比较严格的了。

  • 缺陷逃逸率如何计算?
    测试缺陷逃逸率的计算公式一般如下:缺陷逃逸率=考核周期发现的生产缺陷数/(测试阶段发现缺陷数+考核周期发现的生产缺陷数)×100%

注:缺陷逃逸率都是在产品上线后进行统计计算的,所以考核周期都是在系统(实施型项目)或变更(运维型项目)上线后的一段时间,考核频率和周期可以人为限定,如一个月一次、一个季度一次等。

行业内比较普及的指标,缺陷逃逸率一般在7%~10%,算作一般,小于7%算优秀;大于10%就比较差了;当然,这个数值需要大家根据自己公司的实际情况来进行统计和分析,找到适合自己的区间。

  • 缺陷逃逸的主要原因有哪些?

在我看来,造成缺陷逃逸的直接原因主要有两种:一种是测试人员设计测试用例不全面导致的遗漏,一种是测试用例设计到了,但是测试执行过程存在疏漏,导致一些显而易见的软件缺陷或本来应该发现的软件缺陷没有被测试出来。以上两个原因是从测试团队自身来分析得出的原因。但是从更广泛的角度(软件全生命周期、测试管理等)来看,测试用例设计不全面或测试执行有遗漏的根本原因又有哪些呢?根据我对自己所在项目的数据进行的分析,排除掉测试设计人员和执行人员的主观因素(偷懒、懈怠、重视程度不够等等),可能的客观原因有如下几种:

1)需求不够明确,导致测试人员对需求理解不到位,测试设计不够全面;(软件开发和测试最大的坑,往往就是需求的坑)

2)需求变更频繁,如在测试过程中发生需求变更,则容易导致测试人员获取到的需求不够及时、准确,测试案例不足以覆盖变更后的需求;

3)测试计划安排不够合理,测试时间过于紧张,导致测试人员没有充足的时间设计用例和执行测试;

4)测试设计人员对系统需求不够熟悉,或设计能力有限,案例覆盖度不够高;

5) 测试执行人员与设计人员不同,不能全面理解测试用例的测试要点;

6)测试环境或版本与生产环境有差异,某些缺陷难以在测试环境被发现;

7)某些特殊数据才会出现的缺陷,因测试数据不足而难以发现;

  • 有什么措施可以降低缺陷逃逸率?
    针对以上缺陷逃逸可能的客观原因,个人感觉可以尝试的改进措施有如下几种:

1) 测试尽早介入,在需求阶段就参与进来,加强需求的分析、确认和评审等工作,使测试人员可以充分理解需求以便设计准确而全面的测试用例;

2) 控制需求变更的频次和时间,尤其是进入测试阶段后,尽量减少或避免需求变更,并再必要变更出现时加强信息的传达;

3) 合理安排测试计划,和开发计划,避免开发时间延后从而挤占测试时间,为测试保留相对合理的设计和执行时间;

4) 安排熟悉系统需求并掌握测试用例设计方法的人员设计测试用例,并加强对测试用例的评审;

5) 如测试执行人员与设计人员不同,可安排案例评审和讲解会,确保测试执行人员全面掌握测试要点;

6) 加强环境和版本管理,使测试环境尽量与生产环境一致;

7)多使用存量和特殊数据进行测试,并适当进行破坏性测试,挖掘可能隐藏的问题;

当然,导致测试逃逸的原因可能是多方面的,不同的项目可能有各自不同的原因,和适合的改进措施。测试管理人员要善于定期对缺陷逃逸情况进行总结,分析可能的原因,和相应的对策,以更好的改进测试过程,降低测试缺陷逃逸率。

posted @ 2022-09-15 13:45  我只吃大碗  阅读(762)  评论(0编辑  收藏  举报