問題タブ [mutation-testing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java プログラムのミューテーション テストを実行するにはどうすればよいですか?
ソースコード (バイトコードではない) レベルで Java プログラム内でミューテーションを作成するために使用できるツールを提案できる人はいますか? ソース コードにエラーをシードする必要があります。存在する場合は、GUI を備えたアプリケーションを好みます。
c# - C# リフレクション: 参照アセンブリを置き換える
現在、MutationTesting のフレームワークを作成しています。コードはほぼ完成していますが、(半日かけて)理解できない部分があります。
リフレクションを介して、クラス「TestClass」内にあるメソッド「TestMethod」を実行したいと思います。「TestClass」が存在するプロジェクトは、essembly を参照し、「Proband.dll」と呼びましょう。
「TestMethod」は、Proband.dll 内に何らかのタイプのオブジェクトを作成し、そのオブジェクトでメソッドを実行します。
少し明確にするために: TestClass - 単体テストを含むクラスです。TestMethod - 単一の単体テストです。Proband.dll - テストするメソッド/クラスが含まれています。
TestMethod を実行する前に、Proband.dll の逆アセンブル、変更、および再アセンブルに成功しました。これで、代わりに TestClass によって取得される新しい "Proband.dll" ができました。
問題は、TestClass が既に実行中であることです。新しい Proband.dll がロードされ、新しい AppDomain 内で TestMethod が実行される AppDomain を作成できるかどうかを考えていました。
既にこの AppDomain を作成し、新しい Proband.dll を正常にロードしましたが、この新しい AppDomain 内で TestMethod を実行する方法がわかりません。また、これがテスト メソッドの古い Proband.dll を「置き換える」かどうかもわかりません。
ここに私のTestClassがあります:
これをどのように達成できるかについて、誰かが考えを持っていますか? または、手がかりやキーワードはありますか?
ありがとう、クリスチャン
ruby - ruby 1.9 と RSpec2 用の優れたミューテーション テスト ツールはありますか?
以前は Heckle を使っていましたが、ParseTree の問題で ruby 1.9 と互換性がありません。代替案を探しましたが、有望と思われるのは Chaser だけでした。Chaser には、RSpec で動作させることができるかどうかを確認するために使用できる明確なドキュメントがありませんでした。Test::Unit 依存関係があるようです。
では、テストの品質を実際にチェックするためにクールなツールを使用している人はいますか?
あるいは、c0 カバレッジよりも優れたカバレッジ ツールはありますか? これは、同じ問題を解決するのに役立ちます。今はcover_meを使っていますが、rcovと同じくc0です。
java - Mavenを使用して構築されたオープンソースプロジェクトの例とTestNGを使用したテスト
私はhttp://pitest.orgにTestNGサポートを追加することを検討しており、実際のダーティなコードで試してみることができます。
Mavenを使用してビルドされ、単体テストにTestNGを使用する小規模なオープンソースプロジェクトを誰かが提案できますか?
明確にするために、TestNGを使用するようにMavenを構成する方法を尋ねているのではなく、ミューテーションテストツールへの入力として使用するいくつかのサンプルプロジェクトを探しています。
java - Java ジャンブル ミューテーション テスト フレームワークでクラス ローダーの問題が発生する可能性があります
この質問は、ジャンブル ミューテーション テスト フレームワーク ( http://jumble.sourceforge.net/ )に関するものです。
私は自分の仕事で取り組んでいるプロジェクトをごちゃまぜにしようとしています。私はこのプロジェクトの1つのクラスでジャンブルを実行しましたが、いくつかのクラスで突然変異を実行しますが、他のクラスではそれが伝えます
「テストクラスが壊れています」
これらのテストクラスをantタスクで実行しても、正常に実行されます。
私は何がうまくいかないのかを知りたいと思っており、ジャンブルがテストが壊れていると報告したクラスごとに、Eclipse でデバッグモードでジャンブルを実行し始めました。これらのクラスをデバッグするときは、junit クラスの TestResult のインスタンス フィールドに入ります。これにより、テスト クラスをジャンブル実行したときに junit が報告するエラーと失敗の説明を確認できます。テストクラスが壊れていると言われている理由を教えてください。何が起こっているのかを知るためにデバッグする必要があります。ジャンブルが失敗したテストの結果である、私が観察した問題とエラーの詳細は、次のいくつかです。
(私が働いている会社の法的制限により、特定のコードを投稿することはできませんが、できる限り説明できるように努めます)
クラス「フォワーダー」の場合、デバッグモードでジャンブルを実行し、スムーズに実行して、完全に変異させます。これは私を最も驚かせるケースです.antタスクジャンブルで実行すると「テストクラスが壊れている」と報告されますが、Eclipseのデバッグモードでは問題なく実行されます。
クラス Action およびその他の多くの場合、デバッグ モードでテスト クラスを実行するとエラーが発生し、エラーの説明を調べると、エラーは次のようになります。
java.lang.ClassNotFoundException: org.junit.rules.ExpectedException.
私はjunit jarにそのクラスを持っており、そのパスはEclipseデバッグモードとantタスクで利用できます。また、このクラスは依存関係を持つセレン フレームワークの jar 内にあります。クラス ローダーがロードするクラスのバージョンを決定できない可能性があると思います。確信はないけど。
クラス Module についても、同じことを行います。テストが jumble によって実行され、実行が終了したときに、TestResult JUnit クラスで表示されるエラー メッセージを調べます。このクラスでは、次のようになります。
java.lang.LinkageError: ロードの制約違反: ローダー "com/reeltwo/jumble/mutation/MutatingClassLoader@5b8d5b8d" は以前、ローダー "sun/misc/Launcher$ によって定義された "org/hamcrest/Description" という名前の別のタイプのロードを開始しましたAppClassLoader@7fce7fce"
このエラーは私を驚かせました。Jumbleには独自のクラスローダーがあり、それが何らかの形で私のトラブルの原因になっているのではないかと考えさせられます.
あらゆる種類の助けに本当に感謝します、マルコス
testing - 回帰テストとミューテーションテストの違いは何ですか?
違いは何だろうか。簡潔な説明が必要です。ウィキペディアは私には少し冗長すぎます。
.net - Mono.Cecil を使用してインライン引数を持つ IL 命令を作成する
現在、ミューテーションテストで遊んでいます。私が検討している変更の 1 つは、たとえば、インデックスを示すオペランドを使用してスワップする必要があるパラメーターのスワップLdarg.0
をLdarg_S
伴います。
このオペランドの型はインライン arg です。Mono.Cecil ではParameterDefinition
、32 ビットの int インデックスを格納するために適切にインスタンス化された を作成する必要があると思います。適切なタイプのインスタンスInstruction
を作成する簡単な方法の正しい方向に私を向けるのに十分なセシルの経験を持っている人はいますか?OpCode
Ldarg_S
Operand
c# - OffByOneエラーとミューテーションテスト
私のお気に入りのミューテーションテストフレームワーク( NinjaTurtles )用の「OffBy One」ミューテーションテスターを作成する過程で、実装の正確さを確認する機会を提供するために、次のコードを作成しました。
これは十分に単純なように思えますが、IL内のすべてのリテラル整数定数を変更しようとしても問題が発生することはありませんでした。結局のところ、3つ(、、、、および)しかあり0
ませ1
ん++
。
間違い!
最初の実行で、この特定のインスタンスでは機能しないことが非常に明白になりました。なんで?コードをに変更するため
合計に0(ゼロ)を追加するだけで、これは明らかに効果がありません。複数のセットだった場合は別の話ですが、この場合はそうではありませんでした。
これで、整数の合計を計算するためのかなり簡単なアルゴリズムがあります
いずれかの定数から1を加算または減算するとエラーが発生するため、ミューテーションは簡単に失敗する可能性があります。(それを考えるとmax >= 0
)
したがって、この特定のケースでは問題が解決しました。それは私が突然変異のテストに望んでいたことをしませんでしたが、それは私が失ったときに何が起こるかをチェックすることでした++
-事実上無限ループ。しかし、それは別の問題です。
だから-私の質問: 0または1から始まるループが、同様の方法でリファクタリング(テスト中またはテスト中のコード)できない「1つずつ突然変異」テストの失敗につながる可能性がある、些細なまたは重要なケースはありますか?(例をお願いします)
注:ミューテーションが適用された後にテストスイートが合格すると、ミューテーションテストは失敗します。
更新:ささいなことではないが、テストがリファクタリングされて失敗する可能性があるものの例は次のようになります
このコードに対するミューテーションテストは、指定したテスト入力がであった場合にに変更var i=0
すると失敗します。ただし、テスト入力をに変更すると、ミューテーションテストは失敗します。したがって、リファクタリングが成功すると、テストが証明されます。var i=1
new[] {0,1,2,3,4,5,6,7,8,9}
new[] {9,8,7,6,5,4,3,2,1,0}
c++ - オープン ソースのミューテーション テスト C++
C++ コードでミューテーション テストを実行するオープン ソースツールが必要です (比較的原始的なツールでも構いません)。概念実証の実験で変更する必要があるため、オープン ソースにする必要があります。
私はそれをグーグルで試しましたが、オープンソースツールを思いつきませんでした.私はこの質問を思いつきました.
rspec2 - ミュータント gem を使用した ActiveRecord モデルのミューテーション テスト
Rails アプリのミューテーション テストを開始しようとしていますが、動作させることができませんでした。設定できた人はいますか?
これが私がこれまでに試したことです:
また、-I を使用して activerecord gem を直接ロードしようとしました。gem は現在の rvm gemset に既にインストールされています。これには、database.yml を使用するためのより完全なセットアップが必要になると感じています。残念ながら、すでにこれを行った人はいないようです。