Tout à fait d'accord avec
Ouckileu, l'auteur de ce post montre finalement une connaissance très limitée des tests unitaires.. dire que les tests se limitent à comparer des valeurs statiques,
c'est très réducteur.
De plus, les tests ne s'écrivent pas à posteriori, mais a priori (c'est ça, le TDD, on écrit le test, il rate, on résout, il réussit, on enlève toute redondance (refactoring), et on relance). Ca permet de bien réfléchir, à l'avance, des fonctionnalités et des valeurs d'entrée et de retour de la fonction ou de l'objet. Avant même de commencer à coder, on à déjà une bien meilleure idée de ce qu'on va écrire. Alors oui, on est déjà censés le faire (qui analyse à l'avance chaque fois chaque bout de code ?), mais le TDD pousse cette manière de faire. Au final, le code est de bien meilleure qualité.
De plus, les tests peuvent être lancés à chaque modification. Je doute qu'un test manuel puisse faire le tour de toute une application à chaque petite modification.
Je me souviens d'ailleurs du cycle de développement d'un jeu on-line massif, ou l'application était mise à jour de façon constante. Dés qu'un développeur soumettait une modification ou un ajout, tous les tests étaient lancés, et s'ils réussissaient l'environnement de production étais mis à jour. Sans sourciller. Plusieurs fois par jour.
Il tests, c'est un peu comme un moniteur Nagios pour surveiller ses serveurs. On pourrait très bien vérifier chaque serveur à la main, en s'y loggant, en vérifiant ses différentes applications. Mais rien ne garantit qu'il ne plante pas justement quand vous quittez votre session. La seule façon de savoir est d'y retourner. Tandis qu'avec un moniteur du type Nagios, à chaque instant on voit si on problème se produit ou pas. On à l'assurance constante que tout va bien: c'est zen.
Même chose avec les tests unitaires: Avant, après quelques modifications, on devait vérifier l'application, s'assurer de ne rien oublier, aucun scénario possible. Alors que si les tests réussissent, on peut avoir confiance: c'est zen.
Et entre écrire
une fois un test de 2 lignes et vérifier à
chaque fois l'appli dans un navigateur (avec des echos, des print_r, etc...) ...