Je lisais ce blog de Joel Spolsky sur environ 12 étapes pour améliorer le code . L'absence de Test Driven Development m'a vraiment surpris. Je veux donc poser la question aux gourous. Le TDD ne vaut-il pas vraiment la peine?
23
Je lisais ce blog de Joel Spolsky sur environ 12 étapes pour améliorer le code . L'absence de Test Driven Development m'a vraiment surpris. Je veux donc poser la question aux gourous. Le TDD ne vaut-il pas vraiment la peine?
Réponses:
Le développement piloté par les tests était pratiquement inconnu avant la publication du livre de Kent Beck en 2002, deux ans après que Joel ait écrit ce post. La question devient alors pourquoi Joel n'a-t-il pas mis à jour son test, ou si TDD avait été mieux connu en 2000, l'aurait-il inclus parmi ses critères?
Je crois qu'il ne l'aurait pas, pour la simple raison que l'important est que vous ayez un processus bien défini, pas les détails spécifiques de ce processus. C'est la même raison pour laquelle il recommande le contrôle de version sans spécifier un système de contrôle de version spécifique, ou recommande d'avoir une base de données de bogues sans recommander une marque spécifique. Les bonnes équipes s'améliorent et s'adaptent continuellement, et utilisent des outils et des processus qui correspondent bien à leur situation particulière à ce moment particulier. Pour certaines équipes, cela signifie définitivement TDD. Pour les autres équipes, pas tellement. Si vous adoptez le TDD, assurez-vous qu'il ne sort pas d'une mentalité de culte du fret .
la source
Joel a effectivement abordé cette question spécifiquement à quelques endroits.
Il a expliqué que les choses que les tests ne sont pas capables d'attraper beaucoup de problèmes importants, en particulier subjectifs tels que "l'interface utilisateur de ce logiciel est-elle nul?" Selon lui, la dépendance excessive à l'égard des tests automatisés chez Microsoft est la raison pour laquelle nous nous sommes retrouvés avec Windows Vista.
Il a écrit comment, selon son expérience, les types de bogues que les utilisateurs trouvent réellement ont tendance à se diviser en deux catégories: 1) ceux qui apparaissent dans l'utilisation courante, que les programmeurs se seraient trouvés s'ils avaient exécuté leur propre code avant de l'utiliser , ou 2) des cas de bord si obscurs que personne n'aurait pensé à écrire des tests pour les couvrir en premier lieu. Il a déclaré que seul un très faible pourcentage des bogues que lui et son équipe corrigent dans FogBugz sont le genre de chose que les tests unitaires auraient détectés. (Je ne trouve pas cet article maintenant, mais si quelqu'un sait de quel article je parle, n'hésitez pas à modifier le lien ici.)
Et il a écrit comment cela peut être plus difficile que cela ne vaut, en particulier lorsque votre projet se transforme en un très grand projet avec de nombreux tests unitaires, puis vous changez quelque chose (intentionnellement) et vous vous retrouvez avec un très grand nombre de tests unitaires interrompus. Il utilise spécifiquement les problèmes que les tests unitaires peuvent causer comme raison pour laquelle il ne l'a pas ajouté comme un 13ème point au test Joel, même lorsque les gens suggèrent qu'il devrait le faire.
la source
Joel Spolsky lui-même a répondu à cette question en 2009 :
la source
Personne d'autre que Joel ne pouvait répondre à cela avec certitude. Mais nous pouvons essayer quelques raisons / observations.
Tout d'abord, les tests ne sont pas absents du test de Joel
Deuxièmement, l'idée du test Joel (si je comprends bien) est d'avoir des questions rapides, oui-non. "Tu fais du TDD?" ne rentrera pas exactement (la réponse pourrait être: "certains d'entre nous", "pour cette partie du code" ou "nous faisons des tests unitaires").
Troisièmement, je pense que personne n'a dit que (même Joel) que ces points où "les seuls valent le temps" (en passant, "programmez-vous" n'y figurent pas), juste que ce sont de bonnes questions rapides à poser en venant en contact avec une équipe logicielle, que ce soit en tant que futur membre de l'équipe ou même en tant que client - c'est une liste que j'ai donnée à des personnes non techniques autour de moi qui cherchaient des indices sur la qualité de leur propre service informatique. Ce n'est pas tout, mais c'est vraiment mauvais de battre en trois minutes.
la source