Dans les endroits où j'ai travaillé auparavant, les tests unitaires sont généralement utilisés comme une raison de travailler avec un département de test plus petit ; la logique est la suivante "Nous avons des tests unitaires ! Notre code ne peut pas échouer ! Parce que nous avons des tests unitaires, nous n'avons pas besoin de vrais testeurs !"
Bien sûr, cette logique est erronée. J'ai vu de nombreux cas où l'on ne peut pas se fier aux tests. J'ai également vu de nombreux cas où les tests sont devenus obsolètes en raison de calendriers serrés - lorsque vous avez une semaine pour faire un travail important, la plupart des développeurs passent la semaine à faire le vrai code et à expédier le produit, plutôt que de remanier les tests unitaires pendant cette première semaine, puis de plaider pour au moins une autre semaine pour faire le vrai code, et enfin de passer une dernière semaine à mettre les tests unitaires à jour avec ce qu'ils ont réellement écrit.
J'ai également vu des cas où la logique métier impliquée dans le test unitaire était plus monstrueuse et difficile à comprendre que la logique enfouie dans l'application. Lorsque ces tests échouent, vous devez passer deux fois plus de temps à essayer de résoudre le problème - le test est-il défectueux, ou le vrai code ?
Les fanatiques ne vont pas aimer ce passage : l'endroit où je travaille a largement échappé à l'utilisation des tests unitaires parce que les développeurs sont d'un calibre suffisamment élevé pour qu'il soit difficile de justifier le temps et les ressources nécessaires à l'écriture de tests unitaires (sans compter que nous utilisons de VRAIS testeurs). Pour de vrai. L'écriture de tests unitaires ne nous aurait apporté qu'une valeur minimale, et le retour sur investissement n'est tout simplement pas là. Bien sûr, cela donnerait aux gens un sentiment de chaleur et de confort "Je peux dormir la nuit parce que mon code est PROTÉGÉ par des tests unitaires et que, par conséquent, l'univers est dans un bel équilibre". Mais la réalité est que notre métier est d'écrire des logiciels, pas de donner aux managers des sentiments chaleureux et flous.
Bien sûr, il y a absolument de bonnes raisons d'avoir des tests unitaires. Le problème avec les tests unitaires et le TDD est le suivant :
- Trop de gens ont parié la ferme familiale dessus.
- Trop de gens l'utilisent comme une religion plutôt que comme un simple outil ou une autre méthodologie.
- Trop de gens ont essayé d'en tirer de l'argent, ce qui a faussé comment il doit être utilisé.
En réalité, il devrait être utilisé comme un des outils ou des méthodologies que vous utilisez au quotidien, et il ne doit jamais devenir le site une méthodologie unique.
2 votes
Ver programmeurs.stackexchange.com/questions/66480/