0

我正在开发一个项目,在该项目中我们保持一个wiki平台与其他内容的同步。我们这样做的方式是在'Wiki A'上编辑数据流管道的文档,将数据从'Wiki A'格式转换为'Wiki B'格式,并将这些数据发送到'Wiki B'以供导入。跨多个服务的自动化集成测试

我有3个组件。

  • '维基A' 这是在PHP
  • 翻译服务,这是一个的Ruby-on-轨服务
  • '维基B' 这是Java

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

  1. 编辑上“维基A”
  2. 测试它踢的数据的流动
  3. 测试该TranslationService变换的数据的页面
  4. 试验那维基B'的进口经变换的数据

基于最初的研究,我的选择是一个录音工具,如硒。硒可以处理我想测试的多种产品,但从我所看到的测试是脆弱的。 另一种选择是像Cucumber/Capybara这样的开发测试工具,我可以编写强大的测试,但我不确定它是如何在多种产品架构中工作的,每种架构都用不同的语言编写。

我以正确的方式看它吗?我是否过于雄心勃勃地试图跨越多种产品的单一端到端测试框架?

+1

等测试框架完全自动编写这些类型的集成测试。您需要更具体。然而,Selenium测试本身并不脆弱,但它们常常被测试人员严格执行,这些测试人员要么缺乏经验,要么需要在许多浏览器中围绕难以测试的站点工作。黄瓜仅仅是一种抽象:它的规则仍然必须由开发人员/测试人员来执行,这仍然可以做得好或不好。另外现代Selenium不是一种录音工具 - 不再支持。 –

+0

我需要提及哪些具体细节? –

+0

好吧,你的问题越具体和专注,你越会获得权威而不是自以为是和/或非常高层次的答案。 –

回答

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