我有一个分布式系统,其组件分布在多个机器上。它们使用TCP或组播进行通信。每个组件都相互交换消息 - 这些基本上是被序列化的数据结构。
我们有哪些用于测试这类系统的集成测试框架?我熟悉Ruby,因此基于Ruby的框架肯定会有所帮助。
我有一个分布式系统,其组件分布在多个机器上。它们使用TCP或组播进行通信。每个组件都相互交换消息 - 这些基本上是被序列化的数据结构。
我们有哪些用于测试这类系统的集成测试框架?我熟悉Ruby,因此基于Ruby的框架肯定会有所帮助。
我想有不同的做法。我尽可能避免集成测试,但是在某些时候当然是必要的。这只是我的建议:
个人认为在测试方法中从一个分布式模块调用另一个模块的对象并不是一个好的做法。是的,这将是一项集成测试,但我认为它非常容易出现可靠性问题。
始终记住测试金字塔,记住集成测试和端到端测试可能会非常昂贵。因此,在使用它们时要明智选择:
我来自Java世界,以下是一些额外的信息,我认为这些信息与主题有关,可能会引起您的兴趣:您可以使用STAF/STAX,它具有良好的分布式测试场景能力/服务,例如客户端-服务器、SAN等等。此外,还有一个名为Twister的框架,由Luxoft开发,也非常出色。
我将介绍我们使用Java编写的分布式系统的工作方式。我们有多个Linux守护进程,实际上是Java程序的包装器,它们主要通过数据库相互通信。因此,它们不会来回发送序列化消息。我们使用dbunit和spring-test进行集成测试。使用dbunit,您基本上加载数据,运行您的被测系统(SUT),然后验证数据库处于正确状态。spring-test使得在测试时轻松加载基于Spring的应用程序上下文。
如果您没有基于Java的应用程序,则可能不太有用。框架选择将在很大程度上取决于您的技术选择和架构。