《精通自动化测试框架设计》—第1章 1.3节五天太久,还能压缩吗

简介: 两年以后,投入巨资,耗时两年的一个特性发布终于RTM了。测试组织也适时提出了BCO发布可否从5天压缩到4天这样的挑战,最终的目标是配合集成团队实现每周两次的组织级构建,这是一个典型的持续改进的需求。通过在该特性发布上积累的数据,可以对其进行回顾,评价一下团队的表现,发现问题,进而明确改进的方向。

本节书摘来自异步社区《精通自动化测试框架设计》一书中的第1章,第1.3节五天太久,还能压缩吗,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 五天太久,还能压缩吗
两年以后,投入巨资,耗时两年的一个特性发布终于RTM了。测试组织也适时提出了BCO发布可否从5天压缩到4天这样的挑战,最终的目标是配合集成团队实现每周两次的组织级构建,这是一个典型的持续改进的需求。通过在该特性发布上积累的数据,可以对其进行回顾,评价一下团队的表现,发现问题,进而明确改进的方向。

1.3.1 BCO版本发布用时分布
这是大家首先想到的需要分析的数据。如图1.3所示,在该特性发布的100多个Build中,有70%是在5天以内完成的。可以轻轻松松完成的Build极其少见,只有5%的Build在两天之内被搞定。

完成时间在4~6天所占比例总共有77%。当然,这个统计的背景就是平均每周这个团队工作在3个不同的发布上。


ae982617bac67bb3c37ccfaf9e6518fa3943cb38

一开始团队的讨论和关注的焦点还是那些问题频出、超时严重的Build。这个统计结果出来以后,几乎所有人都同意。如果要去挑战或者实现4天的发布周期,最直接的方式就是将4、5、6天的数据向左平移1天。这说明需要重点关注和分析的是正常发布过程中是否还有可以改善的地方。

通过查看发布时间为4~6天的Build列表中每个Build的缺陷数,发现大量(大于20)的Build存在类似的问题。虽然缺陷数目较少(3个以下),但是,发布时间都在4~6天。这为后续进行的根因分析给出了有效的问题切入点。

1.3.2 缺陷压力测试
接下来出场的是版本发布用时与缺陷的关系。首先,根据图1.3所示的统计,平均的BCO版本用时是5.2天。图1.4所示的统计结果也显示,平均每个版本上有6.1个缺陷,而没有缺陷的版本数则占了大概5%,这和图1.3所示中两天内发布版本所占的百分比是相对应的。

如果把缺陷数量当作一个压力测试,那么第一个阈值出现在7个缺陷这个节点。在此之前,团队可以完全在5.2天之内完成一个版本的BCO发布。随着缺陷数的继续增加,团队承受的压力也越来越大,但是,也还是在相对可控的范围之内。一旦达到14个以上,整个平均发布的时间就有一个大幅的跃升,基本上就达到了发布时间不可控、版本质量崩溃的情况。

当然,这不是故事的全部。BCO是整个组织的“哨兵”,那有没有谁可以来做BCO的“哨兵”呢?而不是在高压下埋头工作5天,然后挣扎3天搞定一个Build或者最后不得不丢弃它。这样的结果既影响了整个组织的进度,也降低了团队的士气。


8c131814039012887d2a897417596d464f7eda65

于是,就有人去统计安装缺陷的情况,结果非常让人吃惊。首先,有超过70%的版本是无法一次安装成功的。而安装缺陷对于BCO发布的影响是巨大的,因为它在测试推进的主干线路上。只要安装缺陷数超过 1 个,这个版本就会 100%出现延期。而如果数字增加到5和6,两条高耸的数据线就出现了。这和全部缺陷统计时的14、15天时间发布上的情形是类似的。感谢安装团队,没有出现更多的缺陷。看到图1.4有的团队成员直接就提出,以后超过5个安装缺陷,直接将版本丢弃。

图 1.3 和图 1.4 只是一个举例,其他如针对缺陷/模块分布的帕累托图分析等方法也是非常有意义的。通过这样的一个过程,整个团队基本统一了思路,明确了后续需要改进的地方。然后有针对性地进行改进,如更好地沟通、及时地排错、预防性在构建过程中增加安装步骤等。有意思的是,作为一个工作基本自动化的团队,所选定的流程改进的对象并没有太多关于自动化工具的,更多的问题点在于流程、沟通等有关人的问题上。工具或许能有效优化或者解决一些问题,不过在进行根因分析或者持续改进时,请更多地考虑产生问题或者改进问题的外部因素,也就是跨团队与跨部门的沟通问题,以及技术对于业务支持的可能性。这些都与软件工程师日常最为熟悉的软件、工具或者代码没有直接的联系,但是,这又是整个组织良好运作的基础。无论你是否意识到,整个公司并不是围绕着代码或者测试用例进行运作的,业务才是商业世界的主宰。

相关文章
|
9月前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
【6月更文挑战第21天】本文介绍了TestNG中测试方法的依赖执行顺序。作者通过一个实际的自动化测试场景展示了如何设计测试用例:依次打开百度、搜索“selenium”、再搜索“selenium+java”。代码示例中,`@Test`注解的`dependsOnMethods`属性用于指定方法间的依赖,确保执行顺序。如果不设置依赖,TestNG会按方法名首字母排序执行。通过运行代码,验证了依赖关系的正确性。
93 4
|
8月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
192 2
|
8月前
|
设计模式 测试技术 Python
《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
【7月更文挑战第10天】Page Object Model (POM)是Selenium自动化测试中的设计模式,用于提高代码的可读性和维护性。POM将每个页面表示为一个类,封装元素定位和交互操作,使得测试脚本与页面元素分离。当页面元素改变时,只需更新对应页面类,减少了脚本的重复工作和维护复杂度,有利于团队协作。POM通过创建页面对象,管理页面元素集合,将业务逻辑与元素定位解耦合,增强了代码的复用性。示例展示了不使用POM时,脚本直接混杂了元素定位和业务逻辑,而POM则能解决这一问题。
107 6
|
8月前
|
敏捷开发 存储 数据管理
自动化测试框架设计:从理论到实践
【7月更文挑战第13天】本文将深入探讨自动化测试框架的设计原理与实现方法。通过分析自动化测试的必要性和框架设计的基本原则,结合具体案例,展示如何从零开始构建一个高效、可维护的自动化测试系统。文章不仅涵盖框架的结构设计,还包括最佳实践和常见问题的解决策略,为读者提供一套完整的解决方案和实操指南。
|
8月前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
【7月更文挑战第12天】在本文中,作者宏哥介绍了如何在不使用PageFactory的情况下,用Java和Selenium实现Page Object Model (POM)。文章通过一个百度首页登录的实战例子来说明。首先,创建了一个名为`BaiduHomePage1`的页面对象类,其中包含了页面元素的定位和相关操作方法。接着,创建了测试类`TestWithPOM1`,在测试类中初始化WebDriver,设置驱动路径,最大化窗口,并调用页面对象类的方法进行登录操作。这样,测试脚本保持简洁,遵循了POM模式的高可读性和可维护性原则。
101 2
|
8月前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)
【7月更文挑战第9天】在Java项目中,使用Logback配置可以实现日志按照不同包名输出到不同的文件,并且根据日志级别分开记录。
132 4
|
8月前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
【7月更文挑战第3天】TestNG教程展示了如何自定义日志记录。首先创建一个名为`TestLog`的测试类,包含3个测试方法,其中一个故意失败以展示日志。使用`Assert.assertTrue`和`Reporter.log`来记录信息。接着创建`CustomReporter`类,继承`TestListenerAdapter`,覆盖`onTestFailure`, `onTestSkipped`, 和 `onTestSuccess`,在这些方法中自定义日志输出。
93 6
|
8月前
|
Java 测试技术 Apache
《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)
【7月更文挑战第4天】Apache Log4j 是一个广泛使用的 Java 日志框架,它允许开发者控制日志信息的输出目的地、格式和级别。Log4j 包含三个主要组件:Loggers(记录器)负责生成日志信息,Appenders(输出源)确定日志输出的位置(如控制台、文件、数据库等),而 Layouts(布局)则控制日志信息的格式。通过配置 Log4j,可以灵活地定制日志记录行为。
86 4
|
8月前
|
Java 关系型数据库 测试技术
《手把手教你》系列基础篇(八十九)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-上篇(详解教程)
【7月更文挑战第7天】Apache Log4j2的安全漏洞促使考虑使用logback作为替代的日志框架。Logback由log4j创始人设计,提供更好的性能,更低的内存使用,并且能够自动重载配置文件。它分为logback-core、logback-classic(实现了SLF4J API)和logback-access(用于Servlet容器集成)三个模块。配置涉及Logger、Appender(定义日志输出目的地)和Layout(格式化日志)。
89 1
|
8月前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
【7月更文挑战第8天】这篇教程介绍了如何使用Logback将Java应用的日志输出到文件中。首先,通过创建`logback.xml`配置文件,设置`FileAppender`来指定日志文件路径和格式。然后,提供了一个`RollingFileAppender`的例子,用于每日生成新的日志文件并保留一定天数的历史记录。文中包含配置文件的XML代码示例,并展示了控制台输出和生成的日志文件内容。教程最后提到了一些可能遇到的问题及解决建议。
83 0
《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)

热门文章

最新文章