2013-03-19 82 views
5

想象一下,您有一个相当复杂的面向服务的体系结构,由不同的组件构成。组件用不同的语言(Java,PHP,Ruby)编写,并以不同的方式相互通信(即UI,REST API,在某些情况下共享某些数据库表等)。多语言集成测试框架

我正在设计一些端到端测试的集成测试框架。 我们已经对单个组件进行了单元/集成测试,但是我们希望构建一些能够全面测试我们已部署的系统(在真实环境中)的端到端的功能,以确保功能(根据个别组件)正确提供,并且架构配置正确。

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

显然,我可以使用像Selenium这样的Java友好组件来重写UI测试,但重复这些工作并没有意义。

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

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

没有任何一种解决方案对我来说令人信服。理想情况下,拥有某种多语言(和多技术)集成框架将是很好的,该集成框架可以在用不同语言和不同环境/组件编写的相同测试套件测试中插入。

有没有人知道一些工具或框架朝着这个方向发展?如果没有,对这类问题有什么好的方法?

回答

0

你有没有考虑过像Jmeter这样的完整堆栈测试?

您可以建立,对你的全面部署软件

  • 运行测试,创建用户
  • 确认该用户成功创建screeen显示
  • 确认该用户是在数据库预期
  • 删除用户
  • 确认用户被删除

这样您就可以一次测试您的UI,业务逻辑和数据存储。它也可以用来做负载测试。

Jmeter

+0

感谢您的想法的好地方,但采用的JMeter会(与断点支持!)意味着从头开始重写现有的测试。 另外,JMeter不会解释Javascript,这对UI测试提出了很大的限制。 – kappolo 2013-03-19 12:57:42

+0

我有点困惑我想,你想建立一个测试套件框架,调用你现有的单元测试?这会为您提供超出现有测试的信息吗? – mconlin 2013-03-19 13:48:36

+0

对不起,如果我不清楚。因为我想创建一个完整的集成测试(即集成我的系统的所有组件),我想重用已经存在的集成测试的一部分,并将它们与新测试相结合/集成。 – kappolo 2013-03-19 14:04:49

1

不知道这是否可以帮助,但也许看看https://github.com/nablex/glue。这是我开发的一种脚本语言,专注于(集成)测试。

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

我目前正在用一些自定义扩展名来运行用Fox运行的旧脚本(我实际上重新实现了fox pro方法... shiver)和一个传统模式,因此它们只能用于旧版脚本,而不是新脚本。我还插入了基于SOAP的自定义Web服务,其中一个可用于在远程系统上执行数据库调用,为我提供了用于集成级别测试的各种工具。

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

PS:“主”类开始得到它启动和运行,因为它包含了工作CLI客户