.NETまたはJavaプロジェクトなどの単体テストケースを生成するための優れたツールはありますか?それは、ほぼ100%のコードカバレッジをカバーする単体テストケースを生成します。テストケースの数は、コードの循環的複雑度に正比例する可能性があり(ループと条件のネストが高いほど循環的複雑度が高くなります)、循環的複雑度が高いほど、テストケースのセットが生成されます。完全に機能することは期待していませんが(単体テストを作成し、生成後に実行する場合など)、変更するテストケースでテンプレートスタイルを使用できると思います。あなたの意図したニーズに合ったケース。ただし、適切なセットアップとティアダウンの方法も必要であり、依存関係がある場合に単体テスト用のモックオブジェクトを使用する必要があるかどうかを検出するのに十分です。それで、そのようなツールは存在しますか?
5 に答える
C#(または一般的には.NET)の場合、PEXがそのツールである可能性があります。これはILレベルで機能し、すべてのブランチに強制的に侵入しようとします。さまざまなバグ(BCLなど)を正常に発見しました。
直感に反するように思えますが、ランダム テスト生成フレームワークにも興味があるかもしれません。あなたが示唆するように、カバレッジに基づく体系的なアプローチと同じくらいバグを見つけるのに効果的であることが研究によって証明されています。
.NET と Java の両方のRandoopを調べてください。メソッド呼び出しの多かれ少なかれランダムなシーケンスを生成することによって機能し、コントラクト、クラッシュなどをチェックします。完全に自動化されています。
また、Java、Scala、F# など、QuickCheckに基づく他のランダム テスト ツールもチェックしてみてください。これは Pex に似ています。つまり、仕様またはパラメーター化された単体テストを指定すると、ツールは生成された入力引数の数をチェックします。
この「パラメータ化された」単体テストの記述方法は、実際には少なくとも 60% のケースでより自然であり、より多くのバグを発見できることがわかりました。
Java については、オープン ソースで現在アクティブなEvoSuiteを確認できます(免責事項、私はその寄稿者の 1 人です)。その他のツールのリストについては、関連する質問も参照してください。
Java の場合は、JUnit-Toolsを試してください。独自のEclipseプラグインと優れたドキュメントがあります.