• 0
  • 1
分享
  • 在持续交付阶段中的测试覆盖率
  • 饭团🍙 2020-07-20 13:55:42 字数 1989 阅读 1710 收藏 1

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

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

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

  覆盖率的想法诞生了。

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

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

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

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

  改变"部署"意味的什么

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

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

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

  转变到持续交付

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

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

  不要那样做。

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

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

  追踪风险和特性

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

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

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

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

  关注优先级

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

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

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



作者:枫叶 译   

来源:51Testing软件测试网原创


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在上一个模块,我们从方法论层面讲了测试用例设计的方法,这一讲我们将会从实战的角度来讲,设计一个「好用例」的过程和方法。本模块的第一节,我们来看拿到需求后,如何开始着手用例设计。熟悉需求细节设计用例的根本,是对需求的了解和把握。只有清楚的理解了需求中的每一个细节,才能够让自己的用例足够得好。有些同学拿到需求后,还没有通读需求全文,就开始设计起用例了。在我看来,这样做是不可取的。要熟悉需求,我们建议要做到以下几点:充分阅读,透彻理解。拿到一个需求后,我建议大家先对需求文档做充分的阅读,通过至少三遍的阅读,来对需求有一个充分而透彻的理解,这里不仅包括对需求中细节的理解,还包括需求背景和目的的理解。只...
            0 0 76
            分享
          •   Web自动化三大报错有哪些呢?接下来给大家讲讲。  Web自动化三大报错(Exception)  1. Exception1:no such element(没有在页面上找到这个元素)  reason1:元素延迟加载了  solution:  添加隐式等待:  # 隐式等待   driver.implicitly_wait(5)  每隔0.5s去找一次元素,如果找到就继续执行,如果没找到就继续去找。  一直到你配置的时间,还没找到,就报no such element。  大大加强了自动化的稳定性,默认都是需要配的。  reason2:定位器写错(拼写错误、id是变化的等)  so...
            0 0 666
            分享
          •   一.背景介绍  继自动提交bug到jira文章之后,这时候就会有人有疑问了,我每天都在跑自动化测试(美其名曰每日构建),也每天都在自动提交bug,可能昨天提交的bug尚未解决,今天又重新提了一遍,一周下来累计的bug好几千了,怎么办?一个个去手动过滤,有木有感觉直接崩溃了?那么为了解决这个问题,今天我们就来介绍一个自动化过滤的方案及其实践。  二.测试需求分析  此方案也主要使用python/pytest实现,主要针对于jira上bug的处理,当然也可以使用过滤重复需求,重复任务等等均可以。  准备工作:  1.在处理之前,你首先需要了解部门的jira流转图(不同公司或部门都可能不一样),...
            0 0 847
            分享
          •   一个Bug的生命周期是从创建开始到关闭结束,而Bug能否关闭就取决于回归测试的结果,测试人员可能很多都对Bug灵敏度有较高要求,但是对于回归测试的把控或质量掌握的程度却比较模糊。而关于回归测试的范围、回归测试的开展正是本文讨论的重点。  Bug回归的重要性  回归测试是软件测试中不可忽视的一部分,回归测试是对问题修改后,重新进行测试并确认修改没有引入新错误,或者导致其他程序出现错误。  作为软件生命周期的一部分,回归测试在整个软件测试过程中占据着相当大的分量,在敏捷测试的每个阶段都要进行多次回归测试。  开发人员修改的局部问题时,可能已经处理了表面症状,所以主要测试其修改的页面和它的底层逻...
            3 3 1202
            分享
          • 一、前言测试的面试相对于开发的面试来说,对于技术的询问其实相对来说较少的,主要针对以下几个方面。测试理论,接口,数据库,linux,自动化,性能、个人情况这几大块。二、常见问题1、软件测试理论基础①、什么是软件测试?在规定条件下对程序进行操作,发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。②、软件测试主要测试用例设计方法是什么?白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖黑盒测试:等价类、边界值、因果图、状态图法、错误猜测、测试大纲、随机测试、场景。③、测试计划、方案以及测试报告主要包括哪些方面?测试计划主要包括:测试范围(功能性测试;非功能性测试)测试通过/失败的标准(通...
            16 18 2602
            分享
      • 51testing软件测试圈微信