在持续交付阶段中的测试覆盖率(译)
测试覆盖率是一项帮助我们在恰当优先级下使用稀少测试时间的一项策略。当最后东西被测试完,我们有多少自动化覆盖,用户使用这特性多经常,并且对应用程序来说这特性有多关键这些都是要考虑的因素。这儿有一些在你转向持续交付时保持高质量的主意。
在过去糟糕的日子里,我们有一个测试持续数周或者数月的测试阶段。我们开始只是测试和寻找问题,但是最后,我们不得不开始有一个足够固定的考虑发布的版本。
测试者们云集在候选中,并且我们从没有足够的时间去在软件上跑遍我们的想法。即使我们做了,为了确保所有的特性我们想要测试一个使用的平衡——或者用户用例的核心,或者组件,或者需求——为了这个版本而被测试覆盖到。
覆盖率的想法诞生了。
20年后,我共事过的团队很多不再有“测试阶段”。如果他们有,它是半天或者一天,可能最多一个星期。一些大的企业从多个团队强调了测试集成控件的本质,但是他们趋向把这个堪称是一个传统活动,而不是一个结束状态。
测试也比之前惯有的复杂得多。我们有单元测试覆盖,集成测试覆盖,自动化测试覆盖,并且,是的,真实人为探索和调研覆盖。
在那优先的是我们有一个三维:时间。很多我工作过的软件机构至少有一个日常版本,不是一个持续版本。为发版测试一周候选人几乎不工作,因为人们忙于提交修复,经常在主要分支上——版本候选人被推自的相同地方。持续部署上演,合适的我们正在测试的开发服务器在实时变化。
使用产品的持续交付,每一个修复单独滚给产品——没有“等待和测试每一个东西”时间。
改变“部署”意味的什么
当窗口程序到来,他们实际上习惯运送,在箱子里或者在一张碟上。我们能收集当前所有文件的版本并把它们作为一束部署。网站改变了所有:突然,我们只推送一个简单网页,以及可能一些图片,一次给产品。假如网页被孤立并且唯一的风险是它会出错,我们不需要重启整个应用。
一些最有名的早期持续交付的用例确实只能单独推送静态PHP文件或者在小群里。只要代码不改变一个代码库或者数据库,程序员会更早地回滚一个错误,突然不再需要一个长期,涉及回归测试流程了。
微服务提供给我们一个类似的利益。只要服务被关联并且我们知道主应用程序在哪里呼叫服务,然后我们能阶段测试服务,那儿它与用户接口交互,并且滚动出来——没有一个整个应用程序的大型整顿。
转变到持续交付
我共事过的许多团队正在尝试移向微服务,但是事情并没有那么简单。他们没有在恰当位置的技术去做推送——按钮,被关联到部署。假如他们做了,然后他们当然不会轻易回滚。
回滚经常由做人为改变和向前部署组成。它要求相当的结构去关联一个变化和前滚而不滚出其他提交晚的。我工作过的一个公司有过这种问题,并且测试者只评论所有的来自最后推进的变化。
不要那样做。
同时,覆盖率的想法丢了。我们假装我们生活在这个完美的独立服务的世界,但是失败的需求依然很高。对一个特性或者组件的修复很容易暴露另一些特性。直到这些“波纹变化”被淘汰,持续交付将只意味着快速滚出一束被破坏的代码。
底部一行:团队需要一个当他们转向持续交付时如何测试的游戏计划。
追踪风险和特性
今天我说看到的是团队有所有自动测试主意的列表并且在部署前恰当地执行它们——所有的Selenium测试,所有单元测试,等等。
那带来的问题是所有的主意对自动化来说太多了而没法做,就像切换命令,打印,浏览器改变大小——那些被忽略了。可能他们为每一个故事测试一次,然后忘记。并且,当然,它成为被遗忘的东西以至于结束咬我们。
在团队的最后烧毁流程,你可以使用一个基于产品特性的低技术的测试板,指派每一个特性一个分数从1到5(或者哭脸到笑脸)关于他们如何很好地测试。对下一个发布,当决定谁去指派,看一看之前的发布并且覆盖这版被触及的东西,对产品关键的,或者只是没有很好覆盖的。
你也能在固定笔记上写出紧急风险并把它们放到墙上,按优先级排序。任何人能添加他们想要的任一东西到墙上,最严重的问题排在底部。每一天,团队每个成员从墙上推掉这些风险中至少一个,测试它,并且把笔记移向其他地方并约定日期。最后你加上那些卡片回到将要被测的栈顶端。这个策略甚至能为持续交付工作——只一直推卡片。你可能甚至在产品里开始测试!
关注优先级
覆盖率是一个帮助我们花稀有的测试时间在恰当优先级的策略。当最后东西被测了,我们有多少自动化覆盖率,客户多频繁使用这个特性,并且这个特性对应用程序多关键是所有要考虑的因素。
取代提供给你们一些伪科学规则推出如何好地测试每个地方,我尝试提供一对主意去寻找可视化的方法并且以创造出共用的理解方式去抓住问题。
一些团队会忽略覆盖率的经典问题并且能独立部署小的组件。对其他每个人:我们最好去工作。
转载于:https://www.cnblogs.com/fengye151/p/11519214.html
在持续交付阶段中的测试覆盖率(译)相关推荐
- 持续交付模型中文化转型的重要意义
为了加速业务创新,技术领导者正在向持续交付和敏捷靠拢. \\ CIO.com的资深作家Clint Boulton,最近写了一篇新闻分析Agile,continuous delivery models ...
- 持续交付会如何影响测试
如果要做持续交付,那我们必须关注我们写的代码的质量.不是所有团队都配备专门的测试人员,但如果有测试人员的话,他们会和开发人员紧密合作,编写在单元测试中无法覆盖的少数测试的自动化代码,并帮助开发人员搭建 ...
- CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)
Table of Contents CI(Continuous integration,持续集成) CD(Continuous Delivery, 持续交付) Different types of t ...
- 快速指南:在DevOps中实现持续交付
[编者的话]时至今日,以几乎相同的步调实现开发与交付已经成为一种必需.本份快速指南将帮助大家弄了解持续交付概念中的那些"良方"与"毒药". [烧脑式Kubern ...
- 持续交付/持续集成/持续测试/持续部署
持续集成Continuous Integration(CI) 持续交付Continuous Delivery(CD) 持续测试Continuous Testing(CT) 持续部署Continuous ...
- SonarQube中Maven项目的测试覆盖率报告
此文章描述了如果单元测试和集成测试分别运行,如何为Maven构建生成测试报告. SonarQube将所有测试报告合并为一份涵盖整体的测试报告.因此,如果您在Maven项目中将单元测试(由Maven S ...
- 持续交付体系在高德的实践历程
1. 前序 对于工程团队来说,构建一套具有可持续性的.多方面质量保证的交付体系建设,能够为业务价值的快速交付搭建起高速公路,也能为交付过程中的质量起到保驾护航的作用.本文为大家介绍持续交付体系在高德的 ...
- DevOps —— 持续交付
DevOps – 持续交付 如果把DevOps的能力提升比作是登山的话,持续交付必然是为登山准备的最重要的工具包.虽然敏捷开发已经被大多数的软件企业所接受,但敏捷的实践必须能够和持续交付的能力结合起来 ...
- 微服务架构实战项目Serverless的持续交付与架构案例
Serverless的持续交付 架构图如下: 在这个架构中,我们采用了前后端分离的技术.我们把 HTML,JS, CSS 等静态内容部署在 S3 上,并通过 CloudFront 作为 CDN 构成了 ...
最新文章
- 手摸手入门前端--01.webpack4
- 10W学习笔记——查询之联接
- 剑指offer十二:数值的n次方
- 用linux装逼-我的vim配置(不定时更新)
- MRU 列表序列化的 Boost.MultiIndex 示例
- 阮一峰es6电子书_ES6理解进阶【大前端高薪训练营】
- Winform 导航菜单的方法
- MySQL性能优化设置
- python凯撒密码流程图_python实现凯撒密码、凯撒加解密算法
- sku mysql_MySQL-THINKPHP 商城系统二 商品模块的展示
- python 柱状图和折线图放在一起_一款多条折线与柱状图共存图表
- 使用Echarts制作散点图
- 操作系统复习(二)——操作系统主要功能
- ubuntu16.04挂载三星T5移动硬盘报错
- NOIP2014 飞扬的小鸟
- 英特尔全面布局云边协同,赋能智慧新医疗
- Swift 3.0中GCD的常用方法
- 论文笔记:Adversarial Net与IQA
- 食蔬宝收银称重软件V1.0
- 东南大学破格保研挂科_有关保研,跪求解答
热门文章
- 查找数据挖掘的相关资料
- 【mybatis】IF判断的坑 (实现if test= status == 'zhangsan')
- Python 技术篇-sha256()加密的使用方法,sha1、md5加密方法
- Python 相对路径、绝对路径的写法实例演示
- cf552 G Minimum Possible LCMn个数,求最小得一对lcm
- [YTU]_2441( C++习题 复数类--重载运算符2+)
- rot90--矩阵旋转
- 【解决方案】在Pycharm使用jupyter要求填写token【please enter your jupyter notebook url】
- 支持向量机ModuleNotFoundError: No module named ‘sklearn.datasets.samples_generator‘
- 音频信号数据的读入(matlab)