一个CEO亲自撰文:如何测量缺陷逃逸率
2020-02-13 10:34
 | 发布者: DevOps亮哥

    一、前言

    每个软件开发团队都承受着巨大的压力,要求尽快交付软件产品。现在,大多数组织都使用敏捷方法DevOps实践来比以往更快地发布软件。现实情况是,软件开发仍然是一个混乱的过程。

    每次部署的软件制品在生产中都会发现的新的软件缺陷,无论是在回归测试、验收测试还是用户发现的这些缺陷。都会不可避免地发现新的应用程序错误,性能问题用户体验问题或其他一些问题。这是过程的本质,我们的目的是在投入生产之前发现这些缺陷和问题。

    团队应该跟踪的关键指标之一是在生产前测试中发现多少缺陷发现缺陷的比率可以帮助您创建和跟踪缺陷逃逸率

    一个CEO亲自撰文:如何测量缺陷逃逸率

    敏捷开发、敏捷测试

    

    二、为什么缺陷逃逸率很重要

    一个团队如何量化所发布的软件版本的质量?跟踪导致生产的缺陷数量是一种不断评估团队正在执行的软件版本的总体质量的好方法。

    马克·扎克伯格(Mark Zuckerberg)以“快速行动并打破事物”而闻名。显然,我们不想破坏生产环境中的事情。软件开发的平衡点在于,我们要走多快,同时要承担适当的风险

    跟踪缺陷逃逸率是了解发版速度是否太快的好方法。如果在生产中发现太多问题,则说明您在自动化测试或手动测试,质量检查等方面做得不够好。使用此关键指标可以知道何时需要减慢或改进测试。努力改进这些做法,然后可以尝试再次加快步伐。缺陷逃逸率是一个很好的持续反馈循环,可反馈团队的工作状况。

    

    一个CEO亲自撰文:如何测量缺陷逃逸率

    软件工程云图

    

    三、如何跟踪缺陷逃逸率

    跟踪缺陷逃逸率的关键是跟踪软件中发现的所有缺陷。这包括在质量检查过程中发现的问题,尤其是在生产中。您应该为应用程序生命周期管理(ALM)工具中的每个缺陷创建新的工作项。这些工具几乎是每个开发团队都使用的工具,例如Axosoft OnTime,Rally,VersionOne,Atlassian的Jira,Microsoft Team Services等。

    跟踪缺陷逃逸率的最佳方法是在创建工作项时标记每个缺陷,以知道在哪里发现了缺陷。跟踪是否在测试阶段,预览阶段,生产环境中发现了它。通过跟踪在哪里找到,您可以创建需要跟踪缺陷逃逸率的报告。

    可以使用Jira跟踪这些的工作项,通过自定义Jira向工作项添加自定义字段,就能够跟踪发现缺陷的位置。

    一个CEO亲自撰文:如何测量缺陷逃逸率

    JIRA中登记缺陷

    在每周例会上,缺陷逃逸率是团队成员关注的关键指标。它使我们对开发团队在整体软件测试和质量方面所做的工作有了一个很好的了解。

    缺陷逃逸率以百分比表示,取决于在投入生产之前发现多少缺陷或将多少缺陷投入生产。每个软件项目和团队都会有所不同,但是我们建议在投入生产之前努力找出所有缺陷的90%。通过不断关注此指标,它将有助于将软件质量带入整个开发团队的工作中。

    

    四、如何提高缺陷逃逸率

    如果缺陷逃逸率对您来说是一个新概念,希望您现在可以看到跟踪它的价值以及如何跟踪它。最终,下一个目标将集中在如何改进它上。缺陷逃逸率可帮助您了解团队整体上的工作表现。

    为了提高缺陷逃逸率,您将不断检查哪种类型的缺陷会从裂缝中滑出并进入生产。根据导致生产的缺陷类型,我将考虑一些不同的最佳实践。

    

    1.在编写代码时查找错误

    发现错误的最佳时间是在创建缺陷时!

    开发人员可以使用许多工具来帮助他们在编写和测试自己的代码时发现错误。很难想象有一天开发人员将一堆打孔卡送入大型机,然后等待弄清楚它是否有效。如今,我们被交互式调试器代码分析器以及其他出色的IDE和开发人员工具所宠爱。我最喜欢的Visual Studio功能之一是它能够在出现异常时自动break掉,这使得查找异常更加容易!

    一个CEO亲自撰文:如何测量缺陷逃逸率

    Visual Studio 异常捕获

    2.记录每个工作项的测试策略

    对于您的开发团队正在处理的每个工作项,它们都应包括有关当前存在与该工作项相关的哪种类型的自动测试以及可能需要进行哪些类型的手动测试的注释。通过强迫您的团队考虑每个工作项的测试策略,可以确保他们始终在考虑生成高质量的代码以及如何对其进行测试。

    示例1:存在自动测试

    我本周研究了一个工作项,以改进我们的应用程序处理数据的方式。该应用程序具有相当丰富的单元测试集,大可放心。对于这种类型的工作项目,您的团队应在工作项目中注意已存在的单元测试,也许已经进行了新的测试,并且所有单元测试都通过了。您可能还希望包含有关其他手动内容的其他注释,以便在自动测试范围之外进行潜在测试

    示例2:需要进行人工质量检查

    这个星期,我还在研究一个应用程序中的一个导致高内存和CPU使用率的错误。不幸的是,这不是单元测试或自动化测试可以轻松验证的。对于这种类型的工作项,重要的是给QA小组详细的注释,他们特别需要检查有关此版本的CPU和内存使用情况。

    

    3.自动测试所有内容

    软件测试是一个艰巨而复杂的问题。有几种不同类型的自动和手动测试策略。根据您的应用程序类型,它们都可能非常有用。问题之一是弄清楚您需要执行的测试级别

    

    单元测试

    对每一行代码进行单元测试绝对是非常极端的和不合适的。测试的关键是测试业务逻辑代码的临界条件。例如,我们在运行时分析应用程序代码以监视Web应用程序的性能。其中的一部分包括解析由平台所使用的应用程序执行的SQL语句。

    您可以想象,诸如解析SQL语句之类的东西就是使用单元测试的完美示例。有各种各样的场景,我们需要知道它们都有效。如果我们对解析逻辑进行了任何更改,则需要确信我们没有破坏任何内容。进行这种类型的测试是单元测试的完美示例:只需很少的设置或配置。可以轻松断言一个样本数据集,以确保其解析的正确性以及已知和预期的结果。

    精心设计的代码模式(控制反转等)非常适合单元测试。如果测试基本的东西需要太多的设置或严格的依赖关系,那么是您在代码库中引入了易破坏性和不良模式

    

    其他类型的测试

    除单元测试外,还有其他几种测试类型。其他真正重要的功能之一是自动综合测试或功能测试。您可以使用Selenium等记录这些测试类型,以在Web浏览器中自动测试Web应用程序。您绝对应该使用这些类型的测试来涵盖软件的最重要部分。诸如登录和验证之类的事情可以导航到用户界面的关键部分。

    

    利用持续集成和持续部署

    如果您想快速高质量地交付代码,那么自动化测试至关重要。如果您对软件质量非常重视,那么还需要认真对待使用持续集成工具。持续集成工具可以为您运行所有自动化测试,如果最近的任何代码提交都破坏了任何内容,则可以立即获得反馈。通过将持续集成与持续部署相结合,您可以持续部署新版本并对其进行测试,这将创建一个快速反馈环

    

    4.在生产前发现QA中的缺陷

    跟踪缺陷逃逸率的全过程就是在发现问题之前将其发现。找到它们的最佳位置是QA。但是您如何在QA中找到它们?

    您已部署到QA,所有自动测试都通过了,是否一切都好了呢?否,无论如何,都应该始终需要进行大量的手动测试。由于数据的差异,应用程序在不同环境中的行为也总是会有所不同。最好是在每次进行QA部署时进行跟踪。在完成部署并完成所有测试之后,他们利用Retrace之类的应用程序监视工具来发现潜在的异常和性能问题。Retrace运行在服务器上,并收集有关您的代码在做什么以及如何执行的数据。当您执行自动功能测试(例如使用Selenium,负载测试,当然还有手动测试)时,它可以收集数据。

    

    5.在生产部署期间和之后发现缺陷

    我们的目的是不在生产中发现缺陷……因此这听起来和目标不一致。但是,我们肯定还是希望在客户使用之前就发现缺陷。另外,如果您想对缺陷逃逸率诚实,则需要查找生产中的缺陷,并且不要忘记将所有缺陷记录在Jira或使用的任何工具中。

    在生产中发现缺陷很像在QA中发现它们。在每个发行版之后,您都应该运行自动化功能测试并进行一些手动测试。最重要的是,您可以监视所有用户的应用程序性能。

    在部署期间,您应密切注意应用程序监视工具。以下是部署期间要寻找的一些东西:

    ①您想快速查找可能会报告的新应用程序异常。

    ②确认总流量和页面加载时间没有显着变化。

    ③标识特定的Web请求SQL查询或其他应用程序依赖项是否在执行不同的操作。

    部署后,您想通过APM查找如下所示的峰值。如果突然之间,您遇到数据库性能问题,则可能是由于部署中的某些原因导致了以前从未见过的性能问题。

    一个CEO亲自撰文:如何测量缺陷逃逸率

    

    部署后,还应该等待几个小时,然后再次查找所有这些东西。实际上,这些都是您应该持续观察的事物。诸如APM类的应用程序性能管理工具可以帮助您的团队持续监控和改善应用程序的性能。

    五、总结

    如果您的目标是尽快发布软件,则需要一些关键指标来帮助指导团队是否做得很好。缺陷逃逸率是一种可以跟踪的好指标。从较高的层次上讲,它可以告诉团队是否在交付导致大量缺陷的代码,这些缺陷使其无法投入生产。归根结底,我们需要知道我们是否做得不好,以便知道我们是否需要改进。缺陷逃逸率是一个很好的指标,可以帮助您评估团队的表现。

    翻译自:stackify 作者:Matt Watson

    一个CEO亲自撰文:如何测量缺陷逃逸率