Je travaille sur un système hérité (j'entends par là qu'il a été écrit sans tests). Nous avons essayé de tester une partie du système en écrivant des tests d'intégration qui testent la fonctionnalité de l'extérieur.
Cela me donne une certaine confiance pour refactoriser des parties du code sans craindre de le casser. Mais le problème est que ces tests d'intégration nécessitent un déploiement (2+ minutes) et plusieurs minutes pour s'exécuter. De plus, ils sont difficiles à entretenir. Ils couvrent chacun des milliers de lignes de code et lorsque l'un d'eux casse, cela peut prendre des heures pour déboguer pourquoi.
J'ai écrit de nombreux tests unitaires pour ces changements fonctionnels que j'ai effectués récemment, mais avant de m'engager, je fais toujours un nouveau déploiement et exécute tous les tests d'intégration, juste pour m'assurer de ne rien manquer. À ce stade, je sais que mes tests unitaires et certains des tests d'intégration chevauchent ce qu'ils testent.
Comment savoir si mes bons tests unitaires couvrent adéquatement un mauvais test d'intégration afin que je puisse supprimer ce test d'intégration?
la source
Les tests unitaires ne sont pas le Saint Graal des tests, ils ne sont qu'un outil parmi tant d'autres qui devraient être utilisés pour tester une base de code. Par conséquent, aucune quantité de tests unitaires ne devrait jamais être considérée comme sûre pour remplacer d'autres tests. Si vous avez un mauvais test d'intégration, vous devez travailler pour en faire un bon test d'intégration, pas le remplacer par autre chose, c'est comme remplacer votre porte d'entrée par une clôture de périmètre et une porte.
la source