【问题标题】:Are there any testing tools for .NET that make it easier to find threading issues?是否有任何 .NET 测试工具可以更轻松地查找线程问题?
【发布时间】:2013-03-17 09:27:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net multithreading debugging testing concurrency


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      微软研究院有一个名为CHESS的项目:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-06-10
        • 1970-01-01
        • 1970-01-01
        • 2015-01-10
        • 2021-12-31
        • 1970-01-01
        • 2015-11-15
        • 1970-01-01
        • 2011-01-03
        相关资源
        最近更新 更多