12

.NETまたはJavaプロジェクトなどの単体テストケースを生成するための優れたツールはありますか?それは、ほぼ100%のコードカバレッジをカバーする単体テストケースを生成します。テストケースの数は、コードの循環的複雑度に正比例する可能性があり(ループと条件のネストが高いほど循環的複雑度が高くなります)、循環的複雑度が高いほど、テストケースのセットが生成されます。完全に機能することは期待していませんが(単体テストを作成し、生成後に実行する場合など)、変更するテストケースでテンプレートスタイルを使用できると思います。あなたの意図したニーズに合ったケース。ただし、適切なセットアップとティアダウンの方法も必要であり、依存関係がある場合に単体テスト用のモックオブジェクトを使用する必要があるかどうかを検出するのに十分です。それで、そのようなツールは存在しますか?

4

5 に答える 5

15

.NETの場合、MicrosoftにはPexがあり、コードコントラクトとともに.NET4.0の主流になることを願っています。チャンネル9のビデオを見ることを強くお勧めします。

この種のことは、非常にデータ駆動型のクラス(パーサーなど)に非常に適していると思います。私がそれから始めることが非常に多いとは思えませんが、それでも、武器庫にある便利なツールです。

于 2009-03-27T09:46:43.753 に答える
5

C#(または一般的には.NET)の場合、PEXがそのツールである可能性があります。これはILレベルで機能し、すべてのブランチに強制的に侵入しようとします。さまざまなバグ(BCLなど)を正常に発見しました。

于 2009-03-27T09:46:55.127 に答える
5

直感に反するように思えますが、ランダム テスト生成フレームワークにも興味があるかもしれません。あなたが示唆するように、カバレッジに基づく体系的なアプローチと同じくらいバグを見つけるのに効果的であることが研究によって証明されています。

.NET と Java の両方のRandoopを調べてください。メソッド呼び出しの多かれ少なかれランダムなシーケンスを生成することによって機能し、コントラクト、クラッシュなどをチェックします。完全に自動化されています。

また、Java、Scala、F# など、QuickCheckに基づく他のランダム テスト ツールもチェックしてみてください。これは Pex に似ています。つまり、仕様またはパラメーター化された単体テストを指定すると、ツールは生成された入力引数の数をチェックします。

この「パラメータ化された」単体テストの記述方法は、実際には少なくとも 60% のケースでより自然であり、より多くのバグを発見できることがわかりました。

于 2009-03-27T09:58:35.147 に答える
1

Java については、オープン ソースで現在アクティブなEvoSuiteを確認できます(免責事項、私はその寄稿者の 1 人です)。その他のツールのリストについては、関連する質問も参照してください。

于 2016-03-03T20:45:32.187 に答える
0

Java の場合は、JUnit-Toolsを試してください。独自のEclipseプラグインと優れたドキュメントがあります.

于 2016-05-31T17:48:02.510 に答える