Je suis ingénieur logiciel dans une entreprise de taille moyenne. Nous avons une plate-forme de test assez robuste fonctionnant sur TeamCity. Il effectue des tests unitaires à chaque enregistrement et un test unitaire quotidien / exécution BVT.
Le problème est - nous avons beaucoup de tests unitaires brisés.
Très souvent, j'évoque l'inutilité des tests unitaires s'ils sont constamment cassés et non entretenus. L'impossibilité de voir si un changement a provoqué une régression supprime la majeure partie de la valeur d'une plate-forme de test unitaire.
Je voudrais faire planter une graine qui créera une culture de bonnes habitudes - fixant les tests quand ils sont cassés, les considérant comme précieux, priorisant la fixation des tests avec d'autres travaux.
J'ai essayé la corruption (produits de boulangerie!), Tout simplement demander et parler aux chefs d'équipe. Tout le monde dit que c'est une bonne idée, mais je vois que je suis le seul à y faire quoi que ce soit.
Quelle est la meilleure façon de commencer à encourager les autres à corriger leurs tests et à prioriser la fixation des tests dans leurs sprints?
S'il existe une manière moins subjective de poser cette question, je serais heureux d'accepter tout conseil.
la source
Réponses:
Faites en sorte qu'il soit impossible de libérer quoi que ce soit sans corriger les tests.
Le fait est que si votre build est interrompu pendant plus de 15 minutes à la fois (et cela inclut les tests qui échouent), alors vous ne faites pas d'intégration continue .
L'option "nucléaire" consiste à demander à votre serveur de contrôle de source de refuser les validations / enregistrements de tout utilisateur autre que celui qui a interrompu la génération. De toute évidence, un administrateur doit être en mesure de passer outre temporairement si cette personne part en vacances - mais, si tout le monde sait que toute l'équipe est foutue jusqu'à ce qu'elle corrige ses tests, alors elle le résoudra rapidement.
Une bonne politique (qui est encore meilleure lorsqu'elle est automatisée) consiste à rétablir la source sur le dernier commit stable connu après 15 minutes d'échec de la construction. En d'autres termes, si vous ne pouvez pas le réparer, ou si vous ne savez pas ce qui a causé la rupture de la construction ou du test, puis revenez en arrière et travaillez localement jusqu'à ce qu'il soit résolu - ne faites jamais en sorte que d'autres développeurs tournent le pouce pendant que vous broyez un problème dont ils ne se soucient pas.
PS Si vous déjà avez beaucoup de tests ayant échoué, vous pouvez utiliser un « seuil de fuite » dans CI. Configurez-le de sorte que la génération échoue uniquement s'il y a plus d'échecs de test que la dernière fois. Ceci, associé à une règle de couverture, forcera les développeurs à éventuellement améliorer la situation de test s'ils veulent pouvoir continuer à travailler.
PPS Je réalise que cela peut sembler draconien pour certains, mais tout dépend de votre culture. Si vous arrivez à un point où les gens ne quittent pas la version cassée ou les tests échouent (mon équipe ne le fait presque jamais, bien que je doive parfois le leur rappeler), alors vous n'avez pas besoin de continuer avec l'ensemble de règles le plus strict. Bien que l'OMI, vous devriez toujours échouer la construction sur un test unitaire cassé. Les tests d'intégration / de navigateur peuvent parfois échouer.
la source
Les tests unitaires qui échouent ne sont pas le problème. Ils sont un symptôme .
Le vrai problème est dans la culture. Vous devez marcher doucement: voici des dragons . Vous ne pouvez pas changer la culture par vous-même, et être la roue grinçante, en fin de compte, fera de vous un paria. Littéralement.
Je suggère que si vous essayez de trouver une personne âgée pour défendre la cause et montrer la voie. Si cela échoue, essayez de le soulever lors d'une réunion générale des développeurs, sans pointer du doigt ni appeler des noms. Une autre alternative consiste à prendre vous-même la responsabilité de faire un travail correct: il suffit de corriger quelques tests supplémentaires chaque fois que vous effectuez un enregistrement. Gardez un tableau sur le mur indiquant le nombre d'échecs de tests au fil du temps. D'autres le verront: peut-être qu'ils accepteront.
Il n'y a pas de réponse facile.
la source