Maintenant, je sais que les gens pourraient considérer cette question en double ou posée plusieurs fois, auquel cas j'apprécierais un lien vers des questions pertinentes avec une réponse à ma question.
J'ai récemment été en désaccord avec certaines personnes sur la couverture du code. J'ai un groupe de personnes qui souhaitent que notre équipe abandonne la recherche de la couverture de code en se basant sur l'argument selon lequel une couverture à 100% ne signifie pas des tests de bonne qualité et donc un code de bonne qualité.
J'ai pu repousser en vendant l'argument selon lequel la couverture du code me dit ce qui n'a pas été testé avec certitude et nous aide à nous concentrer sur ces domaines.
(Ce qui précède a été discuté de manière similaire dans d'autres questions SO comme celle-ci - /programming/695811/pitfalls-of-code-coverage )
L'argument de ces gens est - alors l'équipe réagirait en créant rapidement des tests de faible qualité et perdrait ainsi du temps sans ajouter de qualité significative.
Bien que je comprenne leur point de vue, je cherche un moyen de plaider en faveur d'une couverture de code plus solide en introduisant des outils / cadres plus robustes qui prennent en charge davantage de critères de couverture(Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)
.
Ce que je recherche, c'est une suggestion pour une combinaison de tels outils de couverture de code et de pratiques / processus pour les accompagner, ce qui peut m'aider à contrer ces arguments tout en étant à l'aise avec ma recommandation.
Je serais également heureux de recevoir tout commentaire / suggestion d'accompagnement basé sur votre expérience / vos connaissances sur la façon de contrer un tel argument, car bien que subjective, la couverture du code a aidé mon équipe à être plus consciente de la qualité du code et de la valeur des tests.
Edit: Pour réduire toute confusion sur ma compréhension de la faiblesse de la couverture de code typique, je tiens à souligner que je ne fais pas référence aux Statement Coverage
(ou aux lignes de code exécutées) des outils (il y en a beaucoup). En fait, voici un bon article sur tout ce qui ne va pas: http://www.bullseye.com/statementCoverage.html
Je cherchais plus qu'une simple couverture de relevé ou de ligne, allant plus dans plusieurs critères et niveaux de couverture.
Voir: http://en.wikipedia.org/wiki/Code_coverage#Coverage_criteria
L'idée est que si un outil peut nous dire notre couverture basée sur plusieurs critères, cela devient une évaluation automatisée raisonnable de la qualité du test. Je n'essaie nullement de dire que la couverture de ligne est une bonne évaluation. En fait, c'est la prémisse de ma question.
Edit:
Ok, peut-être que je l'ai projeté un peu trop dramatiquement, mais vous comprenez. Le problème consiste à définir les processus / politiques en général dans toutes les équipes de manière homogène / cohérente. Et la crainte est générale de savoir comment garantir la qualité des tests, comment allouer le temps garanti sans avoir aucune mesure à lui. Ainsi, j'aime avoir une fonctionnalité mesurable qui, lorsqu'elle est sauvegardée avec des processus appropriés et les bons outils, nous permettrait d'améliorer la qualité du code tout en sachant que le temps n'est pas forcé de passer dans des processus inutiles.
EDIT: Jusqu'à présent, ce que j'ai des réponses:
- Les revues de code devraient couvrir les tests pour garantir la qualité des tests
- La stratégie Test First permet d'éviter les tests écrits après coup pour simplement augmenter la couverture%
- Explorer des outils alternatifs couvrant des critères de test autres que simplement Statement / Line
- L'analyse du code couvert / du nombre de bogues trouvés aiderait à apprécier l'importance de la couverture et à améliorer la situation
- Plus important encore, faites confiance à la contribution de l'équipe pour faire ce qu'il faut et lutter pour leurs convictions
- Blocs couverts / # de tests - Discutable mais détient une certaine valeur
Merci pour les réponses impressionnantes jusqu'à présent. Je les apprécie vraiment. Ce fil est meilleur que des heures de brainstorming avec les pouvoirs en place.