如何使用测试模拟生产并发问题

时间:2012-10-23 13:27:27

标签: testing concurrency

我有一个应用程序从队列接收对象,转换它并在主题上发布它。它是一个消息驱动的bean(spring)消息监听器容器,具有相当数量的内部bean。

最近在刺激盒子上发生了一些奇怪的活动。我们想检查这是否是一个并发问题。这很棒,但不是我之前做过的事情。

我的方法是在应用程序中输入大量消息。写一个软件来听它的发布主题。使用这些并通过类似于Junit测试的方法处理它们,这些测试将对象属性与预期结果进行比较。

我已经在上面添加了上述问题的一些范围,但基本上市场上有任何应用程序我可以插入我的代码或我的IDE,这将使我能够做到这一点。我认为这有点超过了JUNIT的功能

1 个答案:

答案 0 :(得分:1)

我建议JavaPathfinder (JPF)进行此类练习。

JPF本质上是一个JVM,它以各种可能的方式模拟代码的执行 - 例如模拟字节码指令的所有可能的交错。 JPF作为model checker工作,它探索应用程序可以根据预定义规则输入和评估它们的可能状态集 - 例如。 deadlock freenon-null

模型检查程序通常在应用程序变得过于复杂时失败,但JPF能够在不遍历整个状态空间的情况下执行应用程序,并且通常能够很快达到问题状态。试着看看那个。