我想到的是,当我有一个(单元或组件或集成或系统)测试运行时,它会向每个线程注入随机睡眠,以便更容易找到竞争条件
.NET是否存在类似的内容?
更新:我见过“CHESS”,但我们需要一些支持Visual Studio 2012的东西(虽然我们还没有使用.NET 4.5)。
答案 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感兴趣。