2

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

.NET 是否存在类似的东西?

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

4

2 回答 2

1

这是一篇有趣的文章,可以为您的查询提供一些帮助。

CHESS 由 Microsoft Research 创建,CHESS 是模型检查和动态分析的新颖组合(请参阅 go.microsoft.com/fwlink/?LinkId=116523)。它通过系统地探索线程调度和交错来检测并发错误。它能够发现竞争条件、死锁、挂起、活锁和数据损坏问题。为了帮助调试,它还提供了完全可重复的执行。像大多数模型检查一样,系统探索提供了全面的覆盖。作为动态分析工具,CHESS 在专门的调度程序上重复运行定期单元测试。在每次重复时,它都会选择不同的调度顺序。作为模型检查器,它控制能够创建特定线程交错的专用调度程序。为了控制状态空间爆炸,

于 2013-03-17T09:30:11.453 回答
1

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

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

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

就其价值而言,使用 .NET Framework 并不重要。任何对进程中的线程进行模糊测试的工具都应该这样做。

这使您可以查看并非专门为 CLR 环境量身定制的其他工具。这篇文章提到了 Cuzz,尽管它似乎尚未发布。

您可能也对这个问题及其答案感兴趣。

于 2013-03-17T09:32:30.260 回答