【问题标题】:Automated integration testing spanning multiple services跨多个服务的自动化集成测试
【发布时间】:2016-06-16 00:20:55
【问题描述】:

我正在开展一个项目,在该项目中,我们使一个 wiki 平台与另一个 wiki 平台的内容保持同步。我们这样做的方式是在“Wiki A”上进行文档编辑,该数据流管道将数据从“Wiki A”格式转换为“Wiki B”格式,并将此数据发送到“Wiki B”以供导入。

我有 3 个组件。

  • PHP 中的“Wiki A”
  • 翻译服务是一种 Ruby-on-rails 服务
  • Java 中的“Wiki B”

我想构建一个自动化的端到端测试框架,理想情况下应该能够测试以下内容:测试的主要需求是我对每个产品的单元测试无法测试产品之间的通信并且不测试整个端到端的数据流。

  1. 在“Wiki A”上编辑页面
  2. 测试它是否启动了数据流
  3. 测试 TranslationService 是否转换了数据
  4. 测试“Wiki B”是否导入了转换后的数据

根据初步研究,我的选择是 Selenium 等记录工具。 Selenium 可以处理我想要测试的多种产品,但据我所知,这些测试很脆弱。 另一种选择是一些开发测试工具,比如 Cucumber/Capybara,我可以用它编写健壮的测试,但我不确定它如何在多个产品架构中工作,每个架构都用不同的语言编写。

我是否以正确的方式看待它?我是否过于雄心勃勃而无法尝试跨多个产品的单一端到端测试框架?

【问题讨论】:

  • 您需要更加具体。然而,Selenium 测试本身并不脆弱,但它们通常被缺乏经验或不得不在许多浏览器中处理难以测试的站点的测试人员实施得很糟糕。 Cucumber 只是一种抽象:它的规则仍然必须由开发/测试人员来实现,这仍然可以做得好或坏。此外,现代 Selenium 不是记录工具 - 不再受支持。
  • 我需要提及哪些细节?
  • 嗯,你的问题越具体、越有针对性,你得到的答案就越权威,而不是固执己见和/或非常高水平的答案。
  • 如果你正在测试业务流程,你可以看看你是否可以通过rest服务编辑wiki。你怎么知道数据流开始了?你怎么知道它什么时候停止?翻译服务完成后去哪里?您是否有针对翻译服务功能的特殊测试,或者您需要在集成系统中进行全套测试?如果您可以使用 Wiki A 的 rest 来创建/更改数据,也许您可​​以在 Wiki B 中验证新数据。

标签: selenium cucumber automated-tests integration-testing end-to-end


【解决方案1】:

只要产品提供某种适当的接口,就可以编写跨多个用不同语言编写的产品的端到端测试。理想情况下,这是一些消息接口(例如 Http REST)。我建议直接使用 Wiki 界面,而不是通过浏览器访问 UI。

我假设“Wiki A”提供了这样一个用于添加和更改内容的界面。您的集成测试首先使用此接口来更改一些数据并触发整个过程。然后您需要确保内容更改已被处理。您可以通过验证“Wiki B”中的更改来做到这一点。理想情况下,“Wiki B”也提供了某种界面来获取某些内容。所以你的测试应该只使用“Wiki A”和“Wiki B”的消息接口。

1) Trigger 'Wiki A' change
2) Verify content on 'Wiki B'

也许您需要在第 1 步和第 2 步之间等待一段时间才能进行翻译和导入。您可以使用 Citrus (http://citrusframework.org) 等测试框架完全自动化地编写此类集成测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多