Je me demandais si vraiment d'excellents programmeurs (Knuth, Kernighan, Torvalds, etc.) sont des avocats de tests d'unités étendus. Je peux imaginer de grands projets qu'ils ont travaillé à l'ajouter pour faire face aux problèmes de mise à l'échelle de la collaboration, mais ont fait, disons, tests d'unité d'utilisation de Knuth à Tex? Et cela ne pèse pas sur ma décision de les utiliser, c'est juste une question de curiosité. P>
9 Réponses :
Quant à votre vraie question, l'idée de compilation immédiate et de "tests unitaires" ne m'appelle que rarement, lorsque je me sens dans un environnement totalement inconnu et j'ai besoin de retour d'information sur ce qui fonctionne et ce qui ne fonctionne pas. Sinon, beaucoup de temps est gaspillé sur des activités que je n'ai tout simplement jamais besoin d'exécuter ou même de penser. Rien ne doit être "moqué". P> blockQuote>
Bien sûr, Knuth a également dit * : p>
méfiez-vous des bugs dans le code ci-dessus; Je n'ai prouvé que ça correct, pas l'essayer. P> blockQuote>
Knuth est un super-génie, mais juste le fait qu'il n'entraîne pas que son code ne devrait pas être une indication que nous simples mortels ne devraient pas tester la nôtre. P>
Joshua Bloch fait : P>
INFOQ: Croyez-vous que d'autres outils et des processus tels que les tests unitaires, Développement piloté par tester La programmation aidez également à la programmation efficacement en Java? P>
Joshua Bloch: Absolument. Test de l'unité C est la clé. Et écrire vos tests d'abord est une bonne chose. P> blockQuote>
BTW, cette attitude s'applique également à d'autres programmeurs célèbres qui travaillent désormais sur Google, tels que Ken Thompson, Rob Pike, Mike Burrows, Guido Van Rossum, ... - La culture de la programmation de Google du développement intensivité des tests unitaires, on ne pouvait que 'Thrive là-bas sans embrasser ça.
Je pense qu'il y a sont des équipes i> qui ne sont pas particulièrement intensives de test de test ... mais ils sont généralement encouragés à atteindre leurs idées :)
C'est un point intéressant sur Google. Je me demande combien de tests d'unités sont dans la source de Python.
Skeet Jon a essayé des tests unitaires, mais tous ses tests ont été passés sans code. p>
ou quelque chose comme ça. p>
Probablement pas. p>
Ensuite, tous les programmeurs appelés systématiquement "vraiment génial" sont des méga génies qui ont écrit des logiciels séminaux il y a 25 ans, généralement pour d'autres programmeurs, bien avant que les tests unitaires soient en vogue, avant que la version, le contrôle de la version n'était répandu, avant de nombreux projets collaboratifs. étaient la norme, etc. p>
En d'autres termes, il existe des caractéristiques du développement de logiciels modernes qui sont des arguments pour des tests d'unités qui n'étaient tout simplement pas vraiment à l'arrière. modernes em> vraiment super programmeurs pourraient être des tests unitaires, c'est juste que nous ne les appelons pas encore. p>
Pour le record que je déteste les tests unitaires. Appelez-le un hommage. P>
dans ce Entretien Knuth explique qu'il n'est pas un assistant d'unité fanatique : p>
"tests unitaires" n'appelle que moi rarement quand je me sens mon chemin dans un environnement totalement inconnu et besoin retour sur ce qui fonctionne et quoi ne pas p> blockQuote>
C'est dans la même réponse où il explique comment il a remporté un concours de programmation de Stanford (course) tout en étant le seul concurrent à utiliser des cartes perforées sur un ordinateur central de lots - tous les autres utilisaient ces terminaux interactifs neufs sur un système de gestion de temps. , bien sûr, la deuxième couche de finition a pris plus d'une heure plus longue que Knuth. P>
Si (peut-être à l'exception de la programmation exploratoire dans un environnement totalement inconnu), vous êtes plus à l'aise avec des cartes perforées et des ordinateurs de mainframes par lots que les terminaux interactifs et le partage de temps, je pense qu'il suivra en effet que les tests d'unité ne correspondront pas à votre style; -). p>
de la lecture blog de Ayende , je recueille que certains de ses projets les plus réussis n'avaient aucun ou plusieurs Tests unitaires. Cependant, il les utilise sur de nombreux projets, mais pas tous les projets en règle générale. (encore de ce que j'ai rassemblé de lire son blog). p>
Oui, il y a beaucoup de grands programmeurs qui pratiquent les tests unitaires. Que diriez-vous de Martin Fowler, Robert C "oncle Bob" Martin, Michael Plumes, et bien sûr Kent Beck. La question ne se pose pas de la question "Test de l'unité de pratique Jon Skeet", est-ce que vous pouvez travailler sur le code de Jon Skeet et savoir si vous le cassez ou non? Pourriez-vous travailler sur votre propre code que vous avez écrit il y a deux ans et que vous savez si vous le cassez ou non? Et enfin ... exactement combien de gens d'assurance qualité avez-vous à votre bureau? Et combien de temps passez-vous avec des logiciels à QA sans générer de l'argent pour vous? À quelle vitesse pouvez-vous identifier les bugs? P>
Des tests unitaires est quelque chose que nous faisons pour déplacer le coût du développement de logiciels jusqu'au début, lorsque ses personnes moins chères, avant 20 que les gens d'AQ ne commencent à le regarder et avant de perdre un client parce que vous ne pouvez pas résoudre suffisamment de bogue. < / p>
Je sais que je n'engagerais jamais un développeur qui pensait qu'ils étaient au-dessus des tests unitaires, même s'ils étaient le programmeur le plus du cul du monde au monde. Parce que s'il a été touché par un bus demain où puis-je trouver quelqu'un avec exactement le même cerveau? P>
Je n'ai personnellement aucune idée si ces gars font / avancent des tests d'unité formels p>
Gardez toutefois à l'esprit que Kent Beck explique que TDD devrait être considéré comme la formalisation des types de pratiques qui les programmeurs em> sont naturellement employés sans même la réaliser. C'est pour nous des pauvres saps qui sont ne sont pas em> les génies et nous aident à écrire un code beaucoup plus robuste, de le rendre plus adaptable et empêche l'un de perdre du temps sur la rédaction d'un tas de code qui n'est jamais utilisé jamais. . J'ai trouvé qu'il est totalement sur la cible avec cette évaluation. P>
Cela ne répond pas à la question, alors je le laisserai comme un commentaire: p pour moi, les applications qui utilisent le test de la plupart des unités sont celles où une spécification est définie sur la base des exigences et des tests d'unité sont parfois fabriqués à l'avance pour vous assurer que Ces exigences sont remplies. Quelque chose comme Tex, par exemple, n'aurait pas d'exigence détaillée, c'est un design pour une langue markeup. Vous ne pouvez pas vraiment tester un design. Vous pouvez tester un appareil à tester une implémentation d'un mais vous ne jugeriez pas la qualité d'une conception basée sur des tests unitaires.