ソースコード (バイトコードではない) レベルで Java プログラム内でミューテーションを作成するために使用できるツールを提案できる人はいますか? ソース コードにエラーをシードする必要があります。存在する場合は、GUI を備えたアプリケーションを好みます。
7 に答える
PIT Mutation Testing ツールを見つけました。これは非常に気に入っています。MuJava では、@Override アノテーションが原因で例外が発生します。Java 5/6 をサポートしていないようです。
これは、オープンソースのテストカバレッジツールであるJesterが使用する手法です。適切なツールが見つからず、自分で作成したい場合は、ソースを確認すると役立つ場合があります。
あなたの要件が本当にソースコードの変更である場合、私が知っているオプションは
Jester - 非常に不安定な限られた数のミューテーション オペレータを提供します. Jeff Offutt は、ブランチ テストを適用するには非常に費用がかかる方法だと説明しました。ただし、独自の演算子を定義することは可能だと思うので、これはおそらく完全に公平ではありません。
Mu Java - Java 5 をサポートしていません
ジュディ - 存在すること以外はあまり知らない
Lava - かなり基本的な音で、Java 5 をサポートしているとは思わない
さらに下の回答から、あなたが現在PITを使用していることがわかります。それは本当に素晴らしい選択だと思います (私が書いたので、特定の偏りがあるかもしれません) が、これはバイト コードのミューテーション システムです。
GMU でテストに関するソフトウェア エンジニアリングのクラスを受講したとき、章の 1 つでMu Java を使用しました。HTH
「これは現実の世界ではほとんど適用されません」。私は英国の非常に大きなメディア会社と契約しており、PIT ( http://pitest.org/ ) は変異テストに非常に役立ちます。ほとんどの CI ビルドは、85% のカバレッジ PIT 変異テストなしで失敗するように設定されています。Re: 「いくつかのランダムな文字を置き換えています...」 突然変異は必ずしもそれを意味する必要はありません。PIT ミューテーションは、コンパイル可能な変更に制限されています。
Major ミューテーション フレームワーク ( Major の Web サイト) は、コンパイラに統合されたミューテーターと、JUnit テスト用のミューテーション アナライザーを提供します。
Major の mutator は Java 7 コンパイラに統合されています。いくつかのミューテーション オペレータを提供し、ソース コードをミューテーションするための 2 つのオプションをサポートします。
- コンパイル中にすべてのミュータントを生成して埋め込む
- 変異体を生成し、変異したソース ファイルをエクスポートする
ここにベンチマークがあります:
MμClipse は JUnit 3 のみをサポートしており、現在はメンテナンスされていません。Jester は手間がかかり、複雑な構成が必要です。plus はもう維持されていません。私が見つけることができる最高のツールは Javalanche です。これについては記事全体を書いています。