【发布时间】:2013-03-17 09:27:50
【问题描述】:
我想到的是,当我有一个(单元或组件或集成或系统)测试运行时,它会向每个线程注入随机睡眠,以便更容易找到竞争条件.
.NET 是否存在类似的东西?
更新:我看过“CHESS”,但我们需要一些支持 Visual Studio 2012 的东西(尽管我们还没有使用 .NET 4.5)。
【问题讨论】:
标签: .net multithreading debugging testing concurrency
我想到的是,当我有一个(单元或组件或集成或系统)测试运行时,它会向每个线程注入随机睡眠,以便更容易找到竞争条件.
.NET 是否存在类似的东西?
更新:我看过“CHESS”,但我们需要一些支持 Visual Studio 2012 的东西(尽管我们还没有使用 .NET 4.5)。
【问题讨论】:
标签: .net multithreading debugging testing concurrency
这是一个有趣的article,它可以为您的查询提供一些帮助。
国际象棋由微软研究院创建,国际象棋是一种新颖的组合 模型检查和动态分析(见 go.microsoft.com/fwlink/?LinkId=116523)。它检测并发错误 通过系统地探索线程调度和交错。这是 能够发现竞争条件、死锁、挂起、活锁和 数据损坏问题。为了帮助调试,它还提供了一个 完全可重复的执行。像大多数模型检查一样,系统的 探索提供了全面的覆盖。作为动态分析工具, CHESS 在专门的调度程序上重复运行常规单元测试。 在每次重复时,它都会选择不同的调度顺序。作为一个 模型检查器,它控制有能力的专用调度器 创建特定的线程交错。控制状态空间 爆炸,国际象棋应用偏序减少和新的迭代 上下文边界。
【讨论】:
微软研究院有一个名为CHESS的项目:
CHESS 是一种用于在并发程序中查找和重现 Heisenbug 的工具。 CHESS 反复运行并发测试,确保每次运行都采用不同的交错。如果交错导致错误,CHESS 可以重现交错以改进调试。 CHESS 可用于托管程序和本机程序。
请注意,通常我认为这些工具被称为“模糊测试工具”(用于“模糊测试”)。
不管怎样,使用 .NET Framework 并不重要。任何对进程中的线程进行模糊测试的工具都应该这样做。
这使您可以查看并非专门针对 CLR 环境量身定制的其他工具。 This article 提到了Cuzz,尽管它似乎尚未发布。
您可能也对this question and its answers感兴趣。
【讨论】: