C/C ++にはどのような変異テストフレームワークが存在しますか?
-
12-10-2019 - |
質問
突然変異テスト しばらくの間、そこにいて、C/C ++のための少なくとも1つまたは2つの商用変異テストフレームワークがあるようです。使用しましたか?あなたの経験は何ですか?オープンソースの代替品はありますか?
解決
短い検索で次のようになりました。
- Plextest: http://www.itregister.com.au/products/plextest_detail.htm
- ++を保証します: http://www.parasoft.com/jsp/products/insure.jsp; jsessionid = baacpvadywlid?itemid=63
- ミル (cのみである可能性があります):http://www.dcs.kcl.ac.uk/pg/jiayue/milu/
そうは言っても、突然変異テストは特に役に立たないことを認識する必要があります(少なくとも私が以前に読んだものから)。ハード(比phor的に言えば)アサートに直面し、データ要件に留意されていることを確認するために(対処する場合、それは興味深いツールです。 if and only if
状況)。
私の意見では、コードの堅牢性を分析するためのはるかに確立された方法があります。
他のヒント
Parasoftのツールは、同等の変異のみを生成することに注意してください。それは、変異試験に関するウィキペディアの記事に記載されている問題を反映しています - 同等の変異と非等価変異を区別することは困難であるため、同等のものに固執することにしました。
計装されたCおよびC ++コードで不変剤を自動的に発見できる別の興味深いツールを試しました - それは「daikon」と呼ばれます。本質的には、同等の変異を生成するツールと同じことをしていますが、問題のあるコードを識別する代わりに、「A == B + 1」などの一連の不変剤が得られます。 Invariantを検出すると、Invariantが理にかなっている場合にコードが正しいことを保証し、Invariantsをアサートに変換でき、コードを変更すると自信を与えることができるため、不変剤がより便利だと思います。
Cプログラムを変異させるための簡単なPythonスクリプトを次のように利用できます。
https://github.com/parunbabu/mutate.py
著者は、テスト対象のコードが削除され、インデントされている場合、それがうまく機能すると言います。
また、それは無料でオープンソースです...これがあなたが探しているものだと思います。
私は現在使用しています:
このツールは、突然変異体を殺さなかったいくつかのテストケースを公開するのに役立ちました。そのうちの1つでは、主張がコメントアウトされていました。
また、同じミュータントを殺すいくつかのテストケースを発見しました。これは、パラメーター化されたテストを使用する場合に特に一般的でした。
既存のフレームワークは、セットアップと使用に時間がかかりすぎる場所にあるので、自分の実装を行いました。これは、あらゆるマシンで動作する迅速で簡単なソリューションです。 MacOSX、Windows、Raspberrypi(Linux)にはバイナリがあります。
https://github.com/ragnarda/dumbmutate
それが誰でも役立つことを願っています!