Le test de mutation existe depuis un certain temps déjà, et il semble qu’il existe au moins un ou deux cadres de test de mutation commerciale pour C / C ++. Les avez-vous utilisé? Quelles sont vos expériences? Existe-t-il des alternatives open source?
Réponses
Trop de publicités?Une brève recherche a abouti à:
- PlexTest: http://www.itregister.com.au/products/plextest_detail.htm
- Assurer++: http://www.parasoft.com/jsp/products/insure.jsp;jsessionid=baacpvbaDywLID?itemId=63
- MILU (peut-être seulement pour C): http://www.dcs.kcl.ac.uk/pg/jiayue/milu/
Avec cela dit, vous devez réaliser que les tests de mutation n'est pas particulièrement utile (au moins à partir de certains trucs que j'ai déjà lu). C'est un outil intéressant face à dur (métaphoriquement parlant) s'affirme et de faire en sorte que les exigences en matière de données soient pris en compte (lors de l'affaire avec if and only if
des situations).
À mon avis, il y a beaucoup plus de façons habituelles de l'analyse de la robustesse du code.
Notez que Parasoft de l'outil ne génère l'équivalent des mutations. Qui fait écho au problème décrit sur Wikipédia article sur le Test de Mutation - il est difficile de distinguer entre l'équivalent, et non l'équivalent des mutations, donc ils ont décidé de coller avec l'équivalent.
J'ai essayé un autre outil intéressant qui peut automatiquement découvrir les invariants d'instrumentation de code C et C++ - il est appelé "Daikon". Essentiellement, il est en train de faire la même chose que l'outil qui génère l'équivalent des mutations, mais au lieu d'identifier les problématiques de code, il vous offre un ensemble d'invariants tels que "A == B + 1". Je pense que les invariants sont plus utile, parce que quand vous regardez découvert invariant, il vous donne l'assurance que votre code est correct si l'invariant de sens, et ensuite, vous pouvez convertir les invariants dans l'affirme et qui vous donne plus de confiance lorsque vous changer de code.
Un script python simple pour la mutation de programmes c est disponible à l'adresse suivante:
http://www.arun-babu.com/mutate.py
l'auteur dit que cela fonctionne mieux si le code testé est commenté et mis en retrait.
et il est également gratuit et opensource ... Je pense que c'est ce que vous recherchez.