51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3773|回复: 1
打印 上一主题 下一主题

[转贴] 拥有测试影响分析的左移和右移测试

[复制链接]
  • TA的每日心情
    擦汗
    前天 09:02
  • 签到天数: 1042 天

    连续签到: 4 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-2-8 09:28:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    测试影响分析意味着将测试重点放在每次迭代期间所做的更改上,并自动准确地测试需要测试的内容。利用此技术的团队可以通过即时反馈有关需要完成的工作来优化开发中的测试工作。
      经过行业调查和报告的频繁确认,即使在实施了敏捷Agile、DevOps和持续集成/部署等现代开发流程之后,软件测试仍然是瓶颈。在某些情况下,软件团队的测试能力不足,并且不得不在开发周期的后期阶段处理bug和安全漏洞,这错误地假设这些新流程无法兑现其承诺。某些问题的一种解决方案是右移测试,该测试依赖于在生产环境中监视应用程序,但是它需要坚如磐石的基础架构才能在出现严重缺陷时回滚新的更改。
      结果,组织仍然无法按时完成任务,质量和安全性也在遭受损失。但是有更好的方法!为了进行更明智的测试,组织正在使用一种称为“测试影响分析”的技术来准确了解要测试的内容。这种数据驱动的方法支持左右移位测试。
      敏捷Agile和DevOps以及测试瓶颈
      任何迭代过程中的测试都是在有限的循环时间内可以进行多少测试的折衷方案。在大多数项目中,不可能对每个迭代都进行完全回归。取而代之的是,执行一组有限的测试,而测试的内容正是基于最佳猜测。由于通常没有足够完整的新功能来进行测试,因此测试也被循环加载。最终的工作量与时间的关系图就像锯齿一样结束,如图1所示。在每个循环中,仅执行有限的一组测试,直到执行完整回归测试的最后一个循环为止。

      敏捷Agile过程导致测试活动“锯齿”。只有完整的回归周期才能进行“完整”测试。
      不幸的是,没有一个项目能够以零错误和零安全漏洞到达最后一个周期。由于已修复并重新测试了错误,因此在此阶段发现缺陷会增加延迟。即使存在所有这些延迟,仍然存在许多错误,如下所示。
      集成和全面回归测试永远不会出错。后期缺陷会导致进度计划和成本超支。
      这种情况导致采用了所谓的“右移测试”,即组织继续在部署阶段测试其应用程序。右移测试的目的是扩大和扩展测试工作,在部署阶段最适合测试,例如API监视,切换生产中的功能,从实际操作中获取反馈。
      什么是右移测试?
      在重现现实的测试环境以及在测试中使用真实的数据和流量的困难导致团队不得不使用生产环境来监视和测试其应用程序。这样做有很多好处,例如,能够使用实时生产流量测试应用程序,从而支持容错和性能改进。一个常见的用例是所谓的canary版本,其中首先将软件的新版本发布给一小部分客户,然后在报告和修复错误时将其发布到越来越多的客户群中。例如,Roku这样做是为了更新其设备固件。
      右移测试依赖于开发基础架构,该基础架构可以在发生严重缺陷时回滚发布。例如,金丝雀版本中存在严重的安全漏洞,这意味着回滚该版本,直到准备好新的更新版本为止,如您在此处的插图中所见:

      转移权利测试依赖于可靠的开发运营基础架构来在面对关键缺陷时回滚发布。
      但是使用生产环境来监视和测试软件存在风险,当然,右移测试的目的绝不是在部署之前替换单元、API和UI测试实践!右移测试是一种补充实践,将连续测试的理念扩展到生产中。尽管如此,组织可以轻松地滥用该概念来证明在开发期间进行更少的单元和API测试是合理的。为了防止这种情况,我们需要在开发阶段进行测试,以使其更容易,更具生产力并生产质量更高的软件。
      通过专注于测试,更智能而不是更艰难地进行测试
      大多数软件尚未经过全面测试,而测试内容的决定基本上是基于开发人员对关键功能的最佳猜测。在SCRUM冲刺或其他过程的迭代过程中,很难确定要测试的内容,因为“测试所有内容”当然不是一种选择。由于时间很短,因此只能测试通过最新功能更新的软件部分,但是确切地知道受影响的代码通常是未知的。测试自动化会有所帮助,但是如果不确切了解要在哪里进行测试,则测试覆盖率是不够的。
      测试影响分析
      这些缺点可以通过使用测试影响分析来克服,这是对测试覆盖率,代码更改和相关性的多变量分析,可准确指出需要测试的代码。此外,可以将这些确切的测试安排为自动执行。
      测试影响分析在IDE中的开发人员级别上进行,收集有关哪些测试执行哪些代码的信息,并在开发人员更改代码时在开发人员的IDE中应用该信息,从而使开发人员能够轻松地识别和执行特定的测试,需要运行以验证更改后的代码不会破坏任何测试。同样,跟踪哪些受影响的测试已经运行,通过了哪些以及失败了,这使开发人员可以轻松地确定哪些测试仍然需要运行,或者哪些测试失败了并且需要解决。一旦所有测试运行并通过,开发人员就会知道提交代码并继续进行是安全的。
      通过无缝集成到项目的构建系统(例如Maven或Gradle)中,测试影响分析可在CI/CD流程中进行,以获取有关更改的即时反馈。测试影响分析可确定自基线构建以来(即最近的夜间构建)更改了哪些代码,确定需要运行哪些测试以执行该代码,然后仅运行该测试的子集。通过此工作流程,团队可以设置仅基于最新代码更改运行测试的CI作业,从而将运行CI作业所需的时间从数小时缩短至数分钟。
      测试影响分析具有以下主要优点:
      ·了解每个测试涵盖的内容:通过将测试执行数据与测试覆盖数据自动关联,测试影响分析提供了一种机制,可以根据当前正在开发的代码来确定需要运行哪些测试。用户可以节省时间而不必运行不必要的测试,并且团队可以从开发过程中以及代码签入后的即时反馈中受益。
      ·了解发生了什么变化:开发人员通常不知道要运行哪些测试来验证代码更改,因此他们要么(a)在不运行任何测试的情况下检入他们的代码(一种非常糟糕的做法),(b)仅运行一个或两个测试他们知道的信息(很容易错过一些信息),或(c)运行所有测试(浪费时间)。测试影响分析通过立即确定哪些测试与哪些代码更改相关来解决此问题,并通过自动执行测试来进一步采取措施。签入代码变得更加稳定,因为在签入之前已经对其进行了全面的测试。
      ·专注于验证更改和受影响的依赖关系的测试:仅识别和运行验证自上一次基准构建(通常是每晚构建)以来已提交的所有代码更改和受影响的依赖关系所需的一组测试,即可显着减少运行CI所需的时间。这使团队可以从真正的CI流程中受益。
      ·立即和持续的反馈:测试影响分析不仅识别测试和代码之间的直接依赖关系,还识别间接依赖关系,可帮助团队在检查代码后尽快了解代码是否破坏了测试。
      总结
      为了大大减少开发中的测试瓶颈,并提高测试人员在每次迭代中投入的“锯齿”工作效率,开发团队可以从测试影响分析技术中受益。具有测试影响分析的测试自动化意味着将测试重点放在每次迭代期间所做的更改上,并自动准确地测试需要测试的内容。这些团队通过对需要完成的工作,哪些代码无法通过测试以及哪些其他代码受到新更改的影响的即时反馈,来优化其开发中的测试工作。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-9 23:09 , Processed in 0.060959 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表