在持续交付阶段中的测试覆盖率(译)

测试覆盖率是一项帮助我们在恰当优先级下使用稀少测试时间的一项策略。当最后东西被测试完,我们有多少自动化覆盖,用户使用这特性多经常,并且对应用程序来说这特性有多关键这些都是要考虑的因素。这儿有一些在你转向持续交付时保持高质量的主意。

在过去糟糕的日子里,我们有一个测试持续数周或者数月的测试阶段。我们开始只是测试和寻找问题,但是最后,我们不得不开始有一个足够固定的考虑发布的版本。

测试者们云集在候选中,并且我们从没有足够的时间去在软件上跑遍我们的想法。即使我们做了,为了确保所有的特性我们想要测试一个使用的平衡——或者用户用例的核心,或者组件,或者需求——为了这个版本而被测试覆盖到。

覆盖率的想法诞生了。

20年后,我共事过的团队很多不再有“测试阶段”。如果他们有,它是半天或者一天,可能最多一个星期。一些大的企业从多个团队强调了测试集成控件的本质,但是他们趋向把这个堪称是一个传统活动,而不是一个结束状态。

测试也比之前惯有的复杂得多。我们有单元测试覆盖,集成测试覆盖,自动化测试覆盖,并且,是的,真实人为探索和调研覆盖。

在那优先的是我们有一个三维:时间。很多我工作过的软件机构至少有一个日常版本,不是一个持续版本。为发版测试一周候选人几乎不工作,因为人们忙于提交修复,经常在主要分支上——版本候选人被推自的相同地方。持续部署上演,合适的我们正在测试的开发服务器在实时变化。

使用产品的持续交付,每一个修复单独滚给产品——没有“等待和测试每一个东西”时间。

改变“部署”意味的什么

当窗口程序到来,他们实际上习惯运送,在箱子里或者在一张碟上。我们能收集当前所有文件的版本并把它们作为一束部署。网站改变了所有:突然,我们只推送一个简单网页,以及可能一些图片,一次给产品。假如网页被孤立并且唯一的风险是它会出错,我们不需要重启整个应用。

一些最有名的早期持续交付的用例确实只能单独推送静态PHP文件或者在小群里。只要代码不改变一个代码库或者数据库,程序员会更早地回滚一个错误,突然不再需要一个长期,涉及回归测试流程了。

微服务提供给我们一个类似的利益。只要服务被关联并且我们知道主应用程序在哪里呼叫服务,然后我们能阶段测试服务,那儿它与用户接口交互,并且滚动出来——没有一个整个应用程序的大型整顿。

转变到持续交付

我共事过的许多团队正在尝试移向微服务,但是事情并没有那么简单。他们没有在恰当位置的技术去做推送——按钮,被关联到部署。假如他们做了,然后他们当然不会轻易回滚。

回滚经常由做人为改变和向前部署组成。它要求相当的结构去关联一个变化和前滚而不滚出其他提交晚的。我工作过的一个公司有过这种问题,并且测试者只评论所有的来自最后推进的变化。

不要那样做。

同时,覆盖率的想法丢了。我们假装我们生活在这个完美的独立服务的世界,但是失败的需求依然很高。对一个特性或者组件的修复很容易暴露另一些特性。直到这些“波纹变化”被淘汰,持续交付将只意味着快速滚出一束被破坏的代码。

底部一行:团队需要一个当他们转向持续交付时如何测试的游戏计划。

追踪风险和特性

今天我说看到的是团队有所有自动测试主意的列表并且在部署前恰当地执行它们——所有的Selenium测试,所有单元测试,等等。

那带来的问题是所有的主意对自动化来说太多了而没法做,就像切换命令,打印,浏览器改变大小——那些被忽略了。可能他们为每一个故事测试一次,然后忘记。并且,当然,它成为被遗忘的东西以至于结束咬我们。

在团队的最后烧毁流程,你可以使用一个基于产品特性的低技术的测试板,指派每一个特性一个分数从1到5(或者哭脸到笑脸)关于他们如何很好地测试。对下一个发布,当决定谁去指派,看一看之前的发布并且覆盖这版被触及的东西,对产品关键的,或者只是没有很好覆盖的。

你也能在固定笔记上写出紧急风险并把它们放到墙上,按优先级排序。任何人能添加他们想要的任一东西到墙上,最严重的问题排在底部。每一天,团队每个成员从墙上推掉这些风险中至少一个,测试它,并且把笔记移向其他地方并约定日期。最后你加上那些卡片回到将要被测的栈顶端。这个策略甚至能为持续交付工作——只一直推卡片。你可能甚至在产品里开始测试!

关注优先级

覆盖率是一个帮助我们花稀有的测试时间在恰当优先级的策略。当最后东西被测了,我们有多少自动化覆盖率,客户多频繁使用这个特性,并且这个特性对应用程序多关键是所有要考虑的因素。

取代提供给你们一些伪科学规则推出如何好地测试每个地方,我尝试提供一对主意去寻找可视化的方法并且以创造出共用的理解方式去抓住问题。

一些团队会忽略覆盖率的经典问题并且能独立部署小的组件。对其他每个人:我们最好去工作。

原文地址:https://www.cnblogs.com/fengye151/p/11519214.html

时间: 2024-10-15 20:52:34

在持续交付阶段中的测试覆盖率(译)的相关文章

七牛云宫静:基于容器和大数据平台的持续交付平台

7 月 6 日上午,在 ArchSummit 2018 深圳站 | 全球架构师峰会上,七牛云工程效率部技术专家宫静分享了<基于容器和大数据平台的持续交付平台>为题的演讲.本文是对演讲内容的整理.? ? 本次分享的主要内容是基于容器和大数据平台去构建的持续交付系统,是七牛云工程效率部在持续交付.容器化方面去做的技术实践.将从以下两个方向展开:一个是容器化方向,一个是持续交付的平台.主要会结合在七牛云的实践来介绍这个持续集成.持续部署在容器化方向的探索和思考,以及未来方向的考虑.? 01 业务场景

联想企业网盘:SaaS服务集群化持续交付实践

1      前言 当代信息技术飞速发展,软件和系统的代码规模都变得越来越大,而且组件众多,依赖繁复,每次新版本的发布都仿佛是乘坐一次无座的绿皮车长途夜行,疲惫不堪.软件交付是一个复杂的工程,涉及到软件开发的各个细节,其中任何一环出现问题,都会导致软件不能及时交付,或者交付的质量堪忧. 从企业的角度来讲,如何利用更科学的工具.更科学的流程来提高产品质量,提升客户满意度,是刚需.从员工角度来讲,生命里值得追求的事情很多,不能把宝贵的时间浪费在一些机械的.重复的事情上面. 联想企业网盘从2007开始

多环境多需求并行下的代码测试覆盖率统计工具实现

马蜂窝技术原创内容,更多干货请关注公众号:mfwtech 测试覆盖率常被用来衡量测试的充分性和完整性,也是测试有效性的一个度量.「敏捷开发」的大潮之下,如何在快速迭代的同时保证对被测代码的覆盖度和产品质量,是一个非常有挑战性的话题. 在马蜂窝大交通.酒店等交易相关业务中,项目的开发和测试实践同样遵循敏捷的原则,迭代周期短.速度快.因此,如何依据测试覆盖率数据帮助我们有效判断项目质量.了解测试状态.提升迭代效率,是我们一直很重视的工作. Part.1 测试覆盖率统计中的挑战 对于功能测试而言,通常

(二)影响持续交付的因素

与绝大多数理论分析一样,影响持续交付的因素也可归结为:人(组织和文化),事(流程),物(架构) 组织与文化因素 什么样的组织文化,才是"持续交付"成长的沃土(当然这也是定义好的组织的标准),我把它分成了三个层次: 第一个层次:紧密配合,这是组织发展,部门合作的基础:一般企业都会按照职能划分部门.不同的职能产生不同的角色:不同的角色拥有不同的资源:不同的资源又产生不同的工作方式.这些不同的部门紧密配合,协同工作于共同的目标,就能达到成效. 第二个层次:集思广益,这就需要组织内各个不同部门

OpenShift中的持续交付

上一文中讲述了如何在AWS下搭建OpenShift集群.这篇文章将目光转向如何在OpenShift中实现CI/CD以及产品环境的部署. 持续交付 如果要打造一个持续交付的流水线,首先要考虑多环境的问题.一般一个应用程序会有多个环境,比如开发环境.集成测试环境.系统测试环境.用户验收测试环境.类生产环境.生产环境.如何在OpenShift中隔离并建立对这些环境的部署流程有多种方案可以选择. 同一个project中使用label和唯一名称来区分不同的环境: 集群中的不同project来隔离环境: 跨

持续交付之一——软件交付的问题

其他持续交付相关文章:<持续交付>系列文章目录 第一章 软件交付的问题 1. 引言 本书的核心模式是部署流水线,以持续集成理论作为其理论基石 部署流水线有三个目标 让软件构建,部署,测试和发布过程对所有人可见,促进合作 改善反馈,能在整个过程中更早的发现和解决问题(做一件事,有问题发生是一定的,重要的是快速的定位和解决问题) 使在任何环境下部署和发布任意版本的应用成为自动化的过程,提高效率 一个简单的简单的部署流水线 提交阶段 ==> 自动化验收测试 ==> 自动化容量测试 ==&

运维与持续交付

在互联网的产品开发时代,产品迭代越来越频繁,"从功能开发完成直到成功部署"这一阶段被称为软件开发"最后一公里". 对于持续部署,@湾区日报 这样评论: 一个团队工程技术水平高低,直接反映在部署代码上.我碰到其他公司的人,都喜欢问你们怎么部署代码的,非常大开眼界.你很难相信,很多(有一定规模的)公司仍然是人肉 SSH 到十几.二十台机器上 git pull.手动重启服务器,部署一次代码几个小时 -- 这么原始,活该加班:) 持续部署(continuous deploy

[转] 持续集成与持续交付备忘录

URL  :   http://blog.csdn.net/hunterno4/article/details/22525667 一本好书使您改变.它将改变您的思想,您看待问题的角度和方式,最终,它将改改您的行为.然而,所有具有重要意义的改变都不会是在一夜之间发生的,如果您相信这种变革必会发生,不妨朝着这个方向去努力,经常改变,每次改变一点点. ——<持续集成:软件质量改进和风险降低之道> CI的价值: 减少风险:缺陷的检测与修复变得更快:通过持续测试与持续审查,软件的健康程度可以测量:可以减

Microsoft将持续交付功能添加到Visual Studio、Azure

Microsoft正在向Visual Studio 2017 IDE中添加持续交付功能. Visual Studio扩展的持续交付工具允许开发人员在Visual Studio团队服务ALM平台上设置自动构建.测试和发布管道.它适用于面向Azure应用服务和Azure容器服务的ASP.Net 4和ASP.Net Core应用程序.开发人员可以通过IDE中的通知来监视管道,提醒他们连续集成运行中发生的生成失败信息. 该功能的目的是使开发人员能够自动保持最新的管道.开发人员可以通过Visual Stu