是否有任何.NET测试工具可以更容易地找到线程问题?

时间:2013-03-17 09:27:51

标签: .net multithreading debugging testing concurrency

我想到的是,当我有一个(单元或组件或集成或系统)测试运行时,它会向每个线程注入随机睡眠,以便更容易找到竞争条件

.NET是否存在类似的内容?

更新:我见过“CHESS”,但我们需要一些支持Visual Studio 2012的东西(虽然我们还没有使用.NET 4.5)。

2 个答案:

答案 0 :(得分:1)

这是一个有趣的article,它可以为您的查询提供一些帮助。

  

CHESS由微软研究院创建,CHESS是一个新颖的组合   模型检查和动态分析(见   go.microsoft.com/fwlink/?LinkId=116523)。它检测并发错误   通过系统地探索线程调度和交错。它是   能够找到竞争条件,死锁,挂起,活锁和   数据损坏问题。为了帮助调试,它还提供了一个   完全可重复的执行。像大多数模型检查一样,系统化   探索提供全面覆盖。作为动态分析工具,   CHESS在专门的调度程序上反复运行常规单元测试。   在每次重复时,它会选择不同的调度顺序。作为一个   模型检查器,它控制有能力的专用调度程序   创建特定的线程交错。控制状态空间   爆炸,CHESS应用偏序减少和新的迭代   上下文边界。

答案 1 :(得分:1)

Microsoft Research有一个名为CHESS的项目:

  

CHESS是一种在并发程序中查找和复制Heisenbugs的工具。 CHESS重复运行并发测试,确保每次运行都采用不同的交错。如果交错导致错误,CHESS可以重现交错以改进调试。 CHESS适用于托管和本机程序。

请注意,我相信这些工具通常被称为“模糊测试工具”(用于“模糊测试”)。

对于它的价值,你使用.NET Framework并不重要。任何在进程中模糊线程的工具都应该这样做。

这使您可以查看其他未专门针对CLR环境定制的工具。 This article提及Cuzz,虽然它似乎尚未发布。

您可能也对this question and its answers感兴趣。

相关问题