Skip to content

自动化测试流水线敏捷实践

如果你在过去的几十年里在技术行业工作过,你听到“敏捷”这个词的次数多得数不过来。

“敏捷”(Agile)、“DevOps”这些词语非常流行。但是,在当今的技术领域,公司如何才能变得敏捷呢?

答案可能会让你大吃一惊: 测试(Testing)。

好吧,这种说法有点误导人。并不是所有的测试都能践行 CI/CD (持续集成/持续交付)。但是自动化测试将会。

没有自动化测试的挑战

如果没有自动化,那么 软件开发生命周期 (SDLC,software development lifecycle)末端的测试瓶颈就会出现。但是自动化解决了许多测试挑战。例如,自动化可以缓解团队带宽低、团队规模小、回归周期长、测试覆盖范围有限、自动化关注范围窄等问题。

通过在整个交付周期中分散测试,公司提高了他们团队的效率,并保持持续交付的运转。

这是一份调查数据:

哪些测试应当自动化?

许多团队倾向于关注自动化 UI (用户界面)测试。这是有道理的,你的客户直接与你的用户界面交互。

但是,自动化的用户界面测试并不足以启用敏捷软件开发。这些测试耗费时间,不稳定,而且很难维护。底线是,仅仅自动化 UI 测试不会提高上市时间。

也就是说,让我们同时看看 N 层模型 和 Microservices 架构对比图。

阶段大小很重要——您希望相应地分配自动化焦点。对于 n 层平台,关注单元测试,然后是组件测试、集成等等。

另一种开发自动化策略的方法是使用 Liza Crispin 的敏捷测试象限。在下面的图片中,你可以看到不同的测试落在这些象限。

通过理解自动化不同测试的效果,您可以在整个软件开发生命周期(SDLC)中实现自动化。

建立自动化测试

一旦您知道哪些测试需要自动化,您就可以开始自动化设置了。

  1. 创建逻辑测试套件
  2. 选择并选择需要的测试套件。
  3. 使用 CI/CD 服务器配置自动化工具
  4. 触发并运行测试
  5. 报告和分析结果

CI/CD 流水线自动化测试的工具

让我们看看工具,使这个自动化机器运行。

通过在 CI/CD 流水线中编写自动化,你可以真正变得敏捷。可以获得如下好处:

  • 更快的迭代(Faster iteration)
  • 扩大覆盖范围(Wider coverage)
  • 更多的自信(More confidence)
  • 测试人员更加聚焦在实际的测试(More bandwidth for testers)

敏捷测试 Q&A

Q1:如何让团队中初级测试人员使用自动化?

A:在敏捷组织中,测试人员需要学习一些编码。这是无法回避的。但是有一种方法可以让您的测试人员轻松地学习必要的代码。通过使用像 Katalon 这样的工具,测试人员可以手动执行测试,并使用输出的脚本开始理解代码。

虽然这些工具很棒,但是您的测试人员需要勤奋和开放地学习自动化。

是,对于测试人员来说这是一个双赢的结果。您将始终需要手动测试,但自动化可以处理重复的(枯燥无聊)内容。

这样想吧,我讨厌修建草坪。如果我能找到一种方法使这个过程自动化,那么我就可以坐在我的沙发上躺平喝啤酒... ... 当然,我会这么做。

Q2:我们应该自动化所有的测试吗?

A:不,您不应该将 CI/CD 管道中的所有工作都自动化。

不能在每次构建启动时都运行完整的回归。这将会花费很长的时间... 并且会使敏捷开发和更快的上市时间失去意义。

取而代之的是,当你计划冲刺的时候,坐下来理解用户的故事。基于这些用户描述,您可以挑选属于这些领域的测试套件。

Q3:什么时候是自动化的最佳时机?

理想情况下,尽快实现测试的自动化,不要等到某个功能完全正常才进行测试。

从 api 开始。如果您测试了 api,但是它们失败了... 那么进入下一个开发阶段的意义是什么呢?

使用像 SoapUI 这样的自动化工具使 API 测试变得又快又容易。

如果你的 API 不能正常工作,你的 UI 也不能正常工作,所以不要浪费时间等待测试。

文章来源:KMS:《Truly Becoming Agile by Piping in Automation Testing》