我有一个分布式系统,其组件分布在多个盒子中。它们使用 tcp 或多播相互通信。每个组件相互交换消息——这些基本上是被序列化的数据结构。
我们有哪些集成测试框架来测试这样的系统?我对红宝石很熟悉,所以基于红宝石的东西肯定会有所帮助。
我有一个分布式系统,其组件分布在多个盒子中。它们使用 tcp 或多播相互通信。每个组件相互交换消息——这些基本上是被序列化的数据结构。
我们有哪些集成测试框架来测试这样的系统?我对红宝石很熟悉,所以基于红宝石的东西肯定会有所帮助。
我想有不同的方法可以做到这一点。我尽量避免集成测试,但在某些时候当然需要。这只是我会做的一个建议:
就我个人而言,我认为在测试方法中将对象从一个分布式模块调用到另一个分布式模块不是一个好习惯。是的,这将是一个集成测试,但我认为它非常容易可靠。
始终牢记测试金字塔,记住集成测试和端到端测试可能非常昂贵。因此,明智地选择何时使用它们:
我来自 Java 世界,以下只是一些额外的信息,我认为这些信息也与该主题相关,您可能会感兴趣:
希望你觉得它有用。
您可以查看 Zopkio:https ://github.com/linkedin/Zopkio 。它是一个用于分布式系统功能和性能测试的开源框架。
您可以使用 STAF/STAX,它为客户端-服务器、SAN 等分布式测试场景提供了良好的功能/服务。此外,还有一个由 Luxoft 命名的框架 Twister。这个也很精彩。
我将为我们使用 Java 编写的分布式系统所做的事情给出答案。我们有多个 linux 守护进程,它们实际上是围绕 java 程序的包装器,它们主要通过数据库相互通信。所以他们不会来回发送序列化消息。我们使用 dbunit 和 spring-test 进行集成测试。使用 dbunit,您基本上可以加载数据,运行您的被测系统 (SUT),然后验证数据库是否处于正确状态。spring-test 使基于 spring 的应用程序在测试时可以轻松加载应用程序上下文。
如果您没有基于 Java 的应用程序,那么这可能没有那么有用。框架选择在很大程度上取决于您的技术选择和架构。