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

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

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

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

  覆盖率的想法诞生了。

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

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

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

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

  改变"部署"意味的什么

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

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

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

  转变到持续交付

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

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

  不要那样做。

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

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

  追踪风险和特性

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

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

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

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

  关注优先级

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

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

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



作者:枫叶 译   

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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   随着分布式建设工作的推进,核心系统正在逐步下移,分布式系统不但降低成本,具有比集中式更佳的性能,同时也便于系统扩展、维护。分布式统一入口系统在整个系统中担任类似网关的角色,为不同请求提供统一入口,验证请求合法性、安全性,转换请求报文的格式等功能,将请求按照策略转发到其他分布式系统处理请求。由于分布式系统之间需要相互调用、转发,才能正常完成业务需求,为了避免分布式核心系统之间相互调用造成的连带影响,保护分布式统一入口系统及其他关联分布式核心系统,提供交易级、微服务级、子系统级等5种维度的流量控制方案,主要针对TCP请求进行流量控制,流量控制采用配置中心配置、文件配置两种方式,实现对交易请求的...
            14 15 540
            分享
          • 有些同学可能已经按照我们正常的流程在feiddler中设置好了https抓包,但死活抓不了。未设置的同学先按 https://ask.hellobi.com/blog/weiwei/5159 这篇文章进行设置,设置好后无法抓包请见如下解决步骤。 (1)首先,看看火狐浏览器的配置,是不是下方“为所有协议使用相同代理”的地方没有勾选上,如果是,请勾选上。有一部分同学做到这一步应该能解决无法抓https的问题。如果还不行,请继续往下看。一般这个时候,还不行,应该就是你的证书问题了,有些同学可能会问,我是按照正常流程导出并安装的证书,也会有问题?对的,就是这么奇怪。(2)接下来,请在下面这个...
            13 13 17695
            分享
          • 下班提bug今天阿常正收拾东西下班呢,听到开发 B 对开发 A 发牢骚,「测试 S 临下班了还给我提bug,这 bug 太恶心了。」阿常跑过去关切地问道,「是 bug 恶心,还是下班前提 bug 恶心呢。」B 回复阿常,「 bug 恶心,下班前提 bug 也恶心。」说完大家会心一笑。A 接着笑道,「那有什么,测试 M 上线还给我提 bug 呢。」听到这里,阿常没有给予更多回应。这个画面让人想起测试同学抱怨开发总是下班提测任务,但其实这有什么问题呢,下班提测难道就要当天加班测试吗,第二天测也可以呀。测试下班提 bug 也是,开发也不一定要当天解决掉呀,第二天改不行吗。很多事情不是一天就能做完的,...
            0 0 1237
            分享
          • 其实,在版本测试过程中,bug被拒的情况是很常见的。当得知自己的bug被拒之后,应该怎么操作呢  与开发争吵显然不是办法,我们的最终目的是不要遗漏bug,所以具体情况需要具体分析。【第一种,手滑误点拒绝】不要犹豫不要纠结,不用沟通,直接重新打开,不用虚,咱这是实打实的bug【第二种,对需求理解不一致】讲证据,把需求原型截图奉上,找证人,与产品再次沟通,最好是三方沟通,很有可能是产品说这个地方不做了但是没有通知测试,或者此处有改动但是只有一方知道,再或者开发在实现时觉得不好达到产品说的效果,给了另外一个替代方案,产品也表示可以接受了,那这个时候,我们也就不用纠结了,直接关闭bug就好,...
            6 5 7321
            分享
          • 1、简介ApacheJMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库,FTP服务器,等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。Apachejmeter可以用于对静态的和动态的资...
            12 12 6622
            分享
      • 51testing软件测试圈微信