“分布式单元测试”的框架或工具是什么?

10
有没有工具或框架能够让Java编写的分布式软件测试更容易? 我要测试的系统是点对点软件,我想使用类似于PNUnit的东西进行测试,但使用Java而不是.Net。
被测试的系统是一个我正在开发用于构建P2P应用程序的框架。它使用JXTA作为较低的子系统,试图隐藏一些复杂性。目前它是一个学术项目,所以我正在追求简单性。
在我的测试中,我想证明一个对等体(在自己的进程中运行,可能有多个线程)可以发现另一个对等体(在另一个进程甚至另一台机器上运行),并且它们可以交换几条消息。我不使用模拟或存根,因为我需要同时看到两侧工作。我意识到需要某种协调机制,而PNUnit似乎能够做到这一点。
我遇到了一些类似Pisces的倡议,它“旨在提供一个分布式测试环境,扩展JUnit,使开发人员/测试人员能够运行远程JUnit并创建由几个远程JUnit测试并行或串行组成的复杂测试套件”,但是这个项目和我找到的其他一些项目似乎已经死亡了。

9
嗯...我不认为那是单元测试。我会称其为系统或集成测试,可能是功能测试或性能/负载测试。 - Stephen C
是的,我倾向于同意你的看法,Stephen。在我的情况下,这不是性能(负载、压力等)测试,因为测试的目的是展示系统的各个部分按计划工作。例如,每个组件都应该能够发现其他组件、发送和回答消息等。因此,我会说这更像是一个功能测试,甚至是一个小型集成测试,因为它专注于涉及一对对等体的少数交互。请参见上面的增强描述以获取有关软件的更多详细信息,感谢您的关注。 - msugar
2个回答

2

测试分布式软件的方法取决于该软件的类型,因此为了给出完整的答案,我需要了解您的软件功能。不过,从 PNUnit 的功能来看,它主要是允许测试的同步、排序和并行执行。 TestNG 也支持这一点,例如,您可以使用以下方式:

@Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)
public void testServer() {
   :
}

这将从三个不同的线程中调用testServer函数十次。TestNG 4.5的变更日志还暗示了运行远程测试的可能性,更多信息可以在博客文章中找到。

或者,您也可以查看IBM的ConTest软件,用于测试并行和分布式软件(在此处有一个很好的描述如何使用它的说明)。我在使用它来暴露我的并发应用程序中的错误方面取得了巨大的成功。


Lars,非常感谢您的关注。我已经增加了有关软件的描述。如果您需要更多细节来更好地理解它,请告诉我。在这种特殊情况下,我认为PNUnit比TestNG更接近满足我的要求(不幸的是,除了Java之外,我不想使用其他平台,因此PNUnit对我来说不可行),但事实是我不像JUnit那样了解TestNG。我会再花些时间研究它,但恐怕我现在陷入了死胡同... - msugar

0

其实有一种非常简单的方法,不需要学习任何新框架。您可以使用grep4j测试分布式环境中应用程序生成的日志。请查看这里这里获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接