私が念頭に置いているのは、(ユニットまたはコンポーネントまたは統合またはシステム)テストを実行しているときに、競合状態を見つけやすくするために、各スレッドにランダムなスリープを挿入することです。
このようなものは .NET に存在しますか?
更新:「CHESS」を見たことがありますが、Visual Studio 2012 をサポートするものが必要です (ただし、.NET 4.5 はまだ使用していません)。
私が念頭に置いているのは、(ユニットまたはコンポーネントまたは統合またはシステム)テストを実行しているときに、競合状態を見つけやすくするために、各スレッドにランダムなスリープを挿入することです。
このようなものは .NET に存在しますか?
更新:「CHESS」を見たことがありますが、Visual Studio 2012 をサポートするものが必要です (ただし、.NET 4.5 はまだ使用していません)。
これは、クエリの助けになる興味深い記事です。
CHESS Microsoft Research によって作成された CHESS は、モデル チェックと動的分析の新しい組み合わせです (go.microsoft.com/fwlink/?LinkId=116523 を参照)。スレッド スケジュールとインターリーブを体系的に調査することで、同時実行エラーを検出します。競合状態、デッドロック、ハング、ライブロック、およびデータ破損の問題を検出できます。デバッグを支援するために、完全に反復可能な実行も提供します。ほとんどのモデル チェックと同様に、体系的な探索によって完全なカバレッジが提供されます。CHESS は、動的分析ツールとして、専用のスケジューラーで通常の単体テストを繰り返し実行します。繰り返しのたびに、異なるスケジューリング順序が選択されます。モデル チェッカーとして、特定のスレッド インターリーブを作成できる特殊なスケジューラを制御します。状態空間の爆発を制御するには、
Microsoft Research にはCHESSというプロジェクトがあります。
CHESS は、並列プログラムで Heisenbugs を見つけて再現するためのツールです。CHESS は並行テストを繰り返し実行し、実行ごとに異なるインターリーブが行われるようにします。インターリーブによってエラーが発生した場合、CHESS はインターリーブを再現してデバッグを改善できます。CHESS は、マネージド プログラムとネイティブ プログラムの両方で使用できます。
一般に、これらのツールは「ファジング ツール」(「ファズ テスト」) と呼ばれていると思います。
.NET Framework を使用していることは重要ではありません。プロセス内のスレッドをファジングする任意のツールで十分です。
これにより、特に CLR 環境に合わせて調整されていない他のツールを調べることができます。この記事ではCuzzについて言及していますが、未リリースのようです。
この質問とその回答にも興味があるかもしれません。