CI自动化测试是DevOps的基础

2019年11月,Google Cloud研究人员和战略思想家Nicole Forsgren博士与Applitools的测试自动化顾问和自动化架构师Angie Jones进行了一次网络研讨会,主要一起讨论了DevOps,持续集成和CI自动化测试策略。

一致认为,自动化测试是产品交付不可或缺的一部分。

作为DevOps基础的CI自动化测试

关于DevOps状态报告,安吉(Angie)说:

“在今年的DevOps状态报告中返现,只有成熟的团队,才会考虑到要将自动化测试列为团队的基础。那么进行自动化测试意味着什么,团队如何才能更早地开始使用它呢?”

软件交付和性能

研究表明,有效的单元测试自动化是DevOps的基础,而版本控制则是发布管理的基础。

团队经常犯的一个错误是将测试推迟到了最后。成熟的团队尽早添加了CI测试自动化-而不是完整的开发数据库测试,这可以在不到10分钟的时间内运行并验证已编写代码的简单的单元测试。

运行这些小的增量测试,可以很快为我们提供良好的快速[通过/失败]信号。

测试驱动开发(TDD)

讨论开发人员关于测试的心态,引出了对测试驱动开发(TDD)的讨论。

TDD

Forsgren博士指出,一个普通的开发人员会说:“我是开发人员,而不是测试人员。” 但是,她指出,代码的可测试性有助于推动开发流程。考虑到测试而设计的代码有助于提高下游流程(例如系统和功能测试)的效率。她观察到,可测试的代码更容易分解,并且可以更有效地集成到团队流程中。

当涉及到TDD时,大多数开发人员会发现它很痛苦, Angie说。“许多开发人员很清晰要开发什么,但却认为代码的可测试性只会减慢它们的速度。有些人甚至觉得这很浪费时间。”

对此,Forsgren博士指出:“这样做的真正的价值-只会有利于开发人员尽快交付代码……”,但代码的可测试性才是应用健壮性的保障,也是开发人员需要接口的标准之一。

测试人员的价值

通过在开发过程中拥有以测试为中心的思维方式,测试团队可以将重点放在未来的问题上。

团队与集中测试

一些组织在整个团队中推广测试策略,试图将测试方法标准化。但是集成测试降低了CI的速度,测试运行时间太长,这在某些场景下是不能容忍的

如果你有一种方法可以运行较小的小型测试,那么你将获得很好的快速反馈。”

CI自动化测试四个关键要求:

CI自动化测试有四个关键要求:

  • 速度 – CI测试必须快速运行,以便在发生故障时向团队提供快速反馈。大多数应该是单元测试。有些应该在服务级别上,以便发现单元测试可能无法发现的故障。最后,应该少进行UI测试-因为它们花费很长的编写时间和很长的运行时间,不过他们有时能够发现其他的故障。
  • 可靠性 – 在CI环境中运行自动化的关键在于,自动化测试的失败必须直接与测试错误联系在一起,而不是测试本身的问题。
  • 数量 –由于每个测试都在CI自动化中运行,因此请注意,每个测试都在增加运行时间。不要无缘无故添加测试。确保每个测试都捕获了相关的故障。
  • 维护 –测试用例需要维护,尤其是编码任务提交后。

测试用例维护

当初在编写该测试用例时,也许该测试用例非常重要。但是现在数据向我们表明,这已不再那么重要。也许它被其他东西覆盖了。因此,也许我们不需要这个测试用例。

当你不确定目前测试用例的重要性时,这就需要进行维护了法。如果它没有什么价值,你可以删除测试。或者,如果你仍然想要保留,请将其移至另一个版本。

将重要的测试作为主要版本的一部分运行。

产品设计需要考虑可测试

产品设计注意事项应包括测试,因为很多团队通常在功能开发之后才想到测试。允许可测试的设计可以帮助团队实现更高的性能。

要使产品可测试,必须对其进行设计以促进产品各个级别的测试和自动化。而且该过程应有助于团队将工作分解为可测试的小块。

Forsgren博士说:“好的架构有助于性能。我们定义性能的方式是速度和稳定性。松散耦合的架构以及团队之间的沟通和协调,使这些团队可以进行测试。”

为自动化腾出时间

开发人员常说,我们的时间只分配给功能开发。我们没有精力进行自动化测试,因此它不被视为一项功能。

因此组织需要改变,需要为自动化测试分配时间。

HP LaserJet测试用例

HP LaserJet的团队在固件方面遇到了很大的挑战 ,因为每台打印机可能有多个代码版本。尽管HP LaserJet的的团队仅花费其开发时间的5%来编写新功能,花了15%到20%的时间就将代码重新集成到了主干中。但由于要检查的版本数量众多,对于每个构建,要花一周的时间才能确定该构建是否真正成功集成。”

如何解决呢?

HP LaserJet团队的解决方案是测试自动化。今天,他们在自动测试上花费了大约40%的时间,因为他们看到了自动化测试的巨大好处。为什么?因为之前他们经常有质量问题,而这需要耗费25%的时间用于产品支持。

HP LaserJet团队使用自动化来提高了整个产品的质量。他们几乎消除了由于质量问题而引起的所有产品支持工作。而且,他们能够有时间进行创新。

译文链接: https://dzone.com/articles/ci-test-automation-strategy

K8S中文社区微信公众号

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址