多语言集成测试框架


Multi-language integration testing framework

假设您有一个由不同组件组成的相当复杂的面向服务的体系结构。组件是用不同的语言(Java, PHP, Ruby)编写的,并且以不同的方式相互通信(即UI, REST API,在某些情况下共享一些DB表等)。

我正在尝试为一些端到端测试设计一个集成测试框架。我们已经有了单个组件的单元/集成测试,但是我们想要构建一些东西来完全测试我们部署的系统(在真实环境中)端到端,以确保功能(就单个组件的预期行为而言)被正确地提供,并且体系结构也被正确地配置。

我面临的第一个问题是我们的大部分UI都是用PHP编写的,UI集成测试已经用Cucumber和几个插件为它编写了。我正在编写的测试框架(用Java)应该触发这些特性测试,然后检查相关组件的行为是否符合预期。

显然,我可以使用java友好的组件(如Selenium)重写UI测试,但是重复这种工作没有意义。

另一个解决方案是在Java中使用exec()调用运行现有的测试,等待它们返回,可能解析输出并继续执行需要完成的其他操作/检查。

在Java中嵌入现有的PHP代码似乎不是一个可行的解决方案,考虑到项目的编写方式。

没有一个解决方案听起来让我信服。理想情况下,拥有某种多语言(和多技术)集成框架是很好的,它可以在相同的测试套件中插入用不同语言编写的测试,并为不同的环境/组件编写测试。

有人知道这个方向的工具或框架吗?如果没有,那么解决这类问题的好方法是什么?

不确定这是否有帮助,但也许可以看看https://github.com/nablex/glue。它是我开发的一种脚本语言,主要用于(集成)测试。

如果您插入https://github.com/nablex/glue-selenese,它支持开箱即用的selenium脚本,并且非常可扩展。

我目前正在使用它的客户与一些自定义扩展来运行在fox pro中编写的遗留脚本(我实际上重新实现了fox pro方法…shiver)和遗留模式,所以他们只对遗留脚本启用,而不是新的。我还插入了自定义的基于soap的web服务,其中一个可用于在远程系统上执行数据库调用,从而为集成级测试提供了广泛的工具。

虽然脚本语言功能齐全,但我仍在充实默认可用的方法纲要,并仍试图将其定位为集成测试工具。让我知道它是否有帮助,或者-如果没有-为什么它不能满足您的需求,总是满意的反馈!:)

PS:"Main"类是启动和运行它的好地方,因为它包含一个工作的CLI客户端(具有断点支持!)

你考虑过用Jmeter之类的东西进行全栈测试吗?

您可以构建针对完全部署的软件运行的测试

  • 创建用户
  • 确认用户创建成功屏幕显示
  • 确认用户按预期在数据库中
  • 删除用户
  • 确认用户被删除

这样你就可以同时测试你的ui,你的业务逻辑和你的数据存储。它也可以用来做负载测试。

Jmeter