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 に答える