想象一下,您有一个由不同组件构成的相当复杂的面向服务的体系结构。组件使用不同的语言(Java,PHP,Ruby)编写,并以不同的方式相互通信(即UI,REST API,在某些情况下共享某些DB表等)。
我正在尝试为一些端到端测试设计集成测试框架。 我们已经对单个组件进行了单元/集成测试,但是我们希望构建一些能够端到端地完全测试我们部署的系统(在真实环境中)的东西,以确保功能(就个人的预期行为而言)组件正确提供,并且架构也正确配置。
我面临的第一个问题是我们的大多数UI都是用PHP编写的,并且已经使用Cucumber和顶部的几个插件为它编写了UI集成测试。 我正在编写的测试框架(用Java编写)应该触发这些功能测试,然后检查相关组件的行为是否符合预期。
显然,我可以使用像Selenium这样的Java友好组件重写UI测试,但复制工作没有意义。
另一个解决方案是在Java中使用exec()调用运行现有测试,等待它们返回,可能解析输出并继续执行需要完成的其他操作/检查。
考虑到项目的编写方式,在Java中嵌入现有的PHP代码似乎不是一个可行的解决方案。
所描述的所有解决方案都不能令我信服。理想情况下,拥有某种多语言(和多技术)集成框架会很好,它可以插入用不同语言和不同环境/组件编写的相同测试套件测试中。
有人知道朝这个方向发展的工具或框架吗?如果没有,对这类问题有什么好处?
答案 0 :(得分:1)
不确定这是否有帮助,但可能会看一下https://github.com/nablex/glue。它是我开发的一种脚本语言,专注于(集成)测试。
如果你插入https://github.com/nablex/glue-selenese并且非常可扩展,它支持开箱即用的硒脚本。
我目前正在一位客户处使用它,并使用一些自定义扩展来运行用fox pro编写的旧脚本(我实际上是重新实现了fox pro方法...... 颤抖)和传统模式它们仅针对旧脚本启用,而不是新脚本。我还插入了基于SOAP的自定义Web服务,其中一个可用于在远程系统上进行数据库调用,为集成级测试提供了广泛的工具。
虽然脚本语言功能齐全,但我仍在忙着充实默认情况下可用的方法纲要,并且仍然试图将其定位为集成测试工具。让我知道它是否有帮助,或者 - 如果没有 - 为什么它不能满足您的需求,总是满意反馈! :)
PS:" Main" class是一个开始运行它的好地方,因为它包含一个有效的CLI客户端(支持断点!)
答案 1 :(得分:0)
您是否考虑过像Jmeter这样的完整堆栈测试?
您可以构建针对完全部署的软件运行的测试
通过这种方式,您可以同时测试您的ui,业务逻辑和数据存储。它也可以用来进行负载测试。