6
votes

Comment puis-je effectuer des tests de mutation de mon programme Java?

Quelqu'un peut-il fournir des suggestions d'outils pouvant être utilisés pour effectuer des mutations dans un programme Java à un niveau de code source (non octet-code)? J'ai besoin de semer mon code source avec des défauts. Je préférerais une application avec une interface graphique, si l'on existe.


6 commentaires

Cela a peu d'applications dans le monde réel


Il suffit de remplacer certains caractères aléatoires par d'autres personnes pourraient faire, mais dans la plupart des cas, cela sera letail (c'est-à-dire que le programme résultant ne sera pas compilable, si vous n'avez pas frappé une chaîne ou un commentaire ou remplacé vraiment heureusement).


"Cela a peu d'applications dans le monde réel" est une mauvaise excuse. Lorsque des mathématiques tensor, topologie ou calcul de calcul ont été développées, ils avaient très "peu d'utilisation du monde réel". C'est une question intéressante. La mutation de code a des applications mondiales très réelles.


Cela pourrait être utile si vous pouviez fournir des suggestions (c'est-à-dire des exemples) de mutations que vous souhaitez et des attributs du résultat - si cela doit toujours compiler, si les erreurs doivent être placées régulièrement, etc.


@Bohemian: Il est appliqué dans le monde réel pour déterminer la couverture des tests.


Comment cette question est-elle trop localisée? Le test de mutant (ou de mutation) est une technique de test valide qui peut être utilisée pour tester des applications logicielles. Cependant, il n'est pas couramment utilisé car il est trop intensif (et donc pour la plupart des projets, à forte intensité de coûts).


7 Réponses :


3
votes

Lorsque j'ai suivi une classe d'ingénierie logicielle lors des tests de GMU, Nous avons utilisé Mu Java , pour l'un des chapitres. Htth


1 commentaires

Merci! Je l'ai aussi essayé, mais ça ne marche pas pour moi. @Override Annotation provoque des exceptions ..



3
votes

Ceci est la technique utilisée par l'outil de couverture de test open source Jester . Un regard sur sa source pourrait être utile si vous ne pouvez pas trouver un outil approprié et vous souhaiter la construire vous-même.


0 commentaires

4
votes

J'ai trouvé l'outil de test de mutation de la fosse que j'aime beaucoup. Avec Mujava, j'ai des exceptions causées par @override Annotations. Semble que cela ne prenne pas la prise de Java 5/6.


1 commentaires

Bon aperçu de la fosse ici: DEV.THELADDERS.COM/2013/02/...



3
votes

Si votre exigence est vraiment pour la mutation de code source, les options que je suis au courant sont

Jester - fournit un nombre limité d'opérateurs de mutation assez instables. Jeff Offutt l'a décrit comme un moyen très coûteux d'appliquer des tests de succursale. Je crois qu'il est possible de définir vos propres opérateurs, cependant, cela n'est probablement pas entièrement équitable.

Mu Java - ne prend pas en charge Java 5

Judy - Je ne sais pas grand chose à ce sujet que cela existe

Lava - Sonne jolie basique et je ne pense pas qu'il supporte Java 5

de la réponse plus loin, je vois que vous voyez maintenant à l'aide de la fosse. Je pense que c'est un choix vraiment excellent (je l'ai écrit afin d'avoir un certain biais), mais c'est un système de mutation de code d'octet.


0 commentaires

1
votes

Ici c'est une référence:

mμClipse prend uniquement en charge Junit 3 et n'est plus maintenu. Jester comme pour cela, est laborieux et nécessite une configuration compliquée; plus n'est plus maintenu. Le meilleur outil que je pourrais trouver est Javalanche J'avais écrit un article entier à ce sujet! < / a>


0 commentaires

2
votes

"Cela a peu d'applications dans le monde réel". En désaccord Fortement, je me contracte dans une très grande entreprise médiatique au Royaume-Uni et à la fosse ( http://pitest.org/ ) est extrêmement utile pour les tests de mutation. La plupart des constructions CI sont définies en panne sans essai de mutation de la couverture de 85%. Re: "Remplacement de certains caractères aléatoires ..." La mutation n'a pas à signifier cela. Les mutations de la fosse sont limitées à des changements compilables.


1 commentaires

Comment gérez-vous des mutations équivalentes si vous avez besoin d'une couverture de 100% de mutation?



1
votes

Le cadre majeur de mutation ( site Web de Major ) fournit un mutateur intégré du compilateur et un analyseur de mutation pour les tests JUnit.

Le mutateur de Major est intégré dans le compilateur Java 7. Il fournit plusieurs opérateurs de mutation et prend en charge deux options pour la mutation de code source:

  1. génère et incorporer tous les mutants lors de la compilation
  2. génère des mutants et exportez des fichiers source mutée

0 commentaires