Il y a un peu plus d'un an, j'ai eu la chance de pouvoir prendre une pause de 9 mois. J'ai décidé qu'à ce moment-là, je perfectionnerais mes compétences en C #. J'ai commencé à travailler sur un tas de projets et je me suis forcé à suivre TDD.
Ce fut un processus assez instructif.
C'était difficile au début, mais au fil du temps, j'ai appris à écrire plus de code testable (qui, en fin de compte, a tendance à être plus solide) et au cours du processus, j'ai également affiné mes compétences en conception OO.
Maintenant, je suis de retour sur le marché du travail et je remarque quelque chose d'étrange.
Je préfère ne pas suivre TDD.
Je trouve que TDD me ralentit et rend en fait plus difficile la conception d'une application propre.
Au lieu de cela, j'ai adopté une approche légèrement (massivement) différente:
- Choisissez une tranche verticale de travail
- Développer un prototype fonctionnel
- Refactoriser jusqu'à ce que tout soit beau et bien rangé
- Asseyez-vous et appréciez le code magnifiquement SOLIDE et testable que j'ai écrit.
Vous avez peut-être remarqué que l'étape 1 n'était pas «définir la surface publique de ma cible de test» et l'étape 2 n'était pas «tester le bejesus hors de ladite surface publique». Vous avez peut-être également remarqué qu'aucune des étapes ne comporte de test. J'écris du code testable, mais je ne le teste pas ... pour l'instant.
Maintenant, je tiens à préciser que je ne renonce en fait à aucun type de test. Le code que j'écris fonctionne . Cela fonctionne parce que je le teste manuellement.
Je tiens également à préciser que je ne renonce pas non plus à tous les tests automatisés. C'est là que mon processus est différent. Et c'est pourquoi je pose cette question.
TDD en théorie. Pas en pratique.
Mon processus a un peu évolué et j'ai trouvé un équilibre entre TDD et aucun test que je trouve très productif et aussi raisonnablement sûr. Il se déroule comme suit:
- Implémentez une tranche de travail verticale de travail avec des tests à l'esprit, mais n'écrivez aucun test.
- Si en cours de route (par exemple, un mois plus tard) cette tranche doit être modifiée
- Écrire des tests unitaires, des tests d'intégration, des tests de comportement, etc. qui garantissent que la tranche de travail est correcte
- Modifier le code
- Si cette tranche n'a pas besoin d'être modifiée,
- Ne fais rien
En déplaçant simplement le fardeau de l'écriture des tests avant d' écrire le code vers avant de modifier le code, j'ai pu produire beaucoup plus de code de travail. Et, quand je passe aux tests d'écriture, j'en écris beaucoup moins mais je couvre presque autant de terrain (ROI plus élevé).
J'aime ce processus, mais je crains qu'il ne puisse pas bien évoluer. Son succès dépend de la diligence des développeurs à écrire des tests avant de changer les choses. Et cela semble être un assez gros risque. Mais, TDD a le même risque.
Alors, est-ce que je vais aller en enfer [BT] DD, ou est-ce une forme courante de codage et de test pragmatique?
J'aimerais continuer à travailler de cette façon. Que puis-je faire pour que ce processus fonctionne à long terme?
Remarque:Je suis le seul développeur de mes projets et je suis responsable de tout: collecte des exigences, conception, architecture, tests, déploiement, etc. Je soupçonne que c'est la raison pour laquelle mon processus fonctionne.
If that slice doesn't need modification
. lizkeogh.com/2012/06/24/beyond-test-driven-development