我有一个分布式系统,分布在多个盒子上。他们使用tcp或多播相互交谈。每个组件互相交换消息 - 这些基本上是序列化的数据结构。用于测试分布式系统的集成测试框架?
我们有什么样的集成测试框架来测试这些系统吗?我熟悉ruby,所以基于ruby的东西肯定会有所帮助。
我有一个分布式系统,分布在多个盒子上。他们使用tcp或多播相互交谈。每个组件互相交换消息 - 这些基本上是序列化的数据结构。用于测试分布式系统的集成测试框架?
我们有什么样的集成测试框架来测试这些系统吗?我熟悉ruby,所以基于ruby的东西肯定会有所帮助。
我想有不同的做法。我尽可能地尽量避免集成测试,但在某些时候需要进行。这只是一个建议,我会这样做:
我个人认为调用对象从一个分布式模块到另一个测试方法,并不是一个好的做法。是的,这将是一个集成测试,但我认为它非常容易可靠。
一定要记住测试的金字塔,记住集成测试和端到端测试可能非常昂贵。所以明智的选择,当使用它们:
我来自Java世界,这以下就是我认为也与主题相关的,可能是你感兴趣的一些额外的信息:
希望你觉得它有用。
您可以使用STAF/STAX,它具有良好的功能/服务,用于分布式测试场景,如客户端服务器,SAN等。另外还有一个框架,名为Twister by Luxoft。这一个也很出色。
我将回答我们正在用Java编写的分布式系统做什么。我们有多个linux守护进程,这些守护进程实际上是围绕java程序进行封装的,这些程序主要通过数据库彼此通信。所以他们不会来回发送序列化的消息。我们使用dbunit和spring-test进行集成测试。使用dbunit,您基本上可以加载数据,运行您的System Under Test(SUT),然后验证数据库处于正确状态。 spring-test使基于弹簧的应用程序可以轻松地在测试时加载应用程序上下文。
如果您没有基于Java的应用程序,那么这可能不是那么有用。框架选择主要取决于您的技术选择和架构。
您可以结帐Zopkio:https://github.com/linkedin/Zopkio。它是分布式系统功能和性能测试的开源框架。
你想运行哪些类型的测试?即你试图断言什么?对象是否正确序列化?通过分布式系统的消息是否被正确接收和处理?消息将按照特定顺序在系统中运行?你关心负载测试吗? – 2012-08-11 20:31:32
@EricLaForce:需要继续系统运行良好,所以以上所有适用。 – Fanatic23 2012-08-12 05:00:11