Je travaille dans une petite entreprise en tant que développeur solo. Je suis le seul développeur de la société en fait. J'ai plusieurs projets (relativement) importants que j'ai écrits et maintenus régulièrement, et aucun d'entre eux n'a de tests pour les soutenir. Lorsque je commence de nouveaux projets, je me demande souvent si je devrais essayer une approche TDD. Cela semble être une bonne idée, mais honnêtement, je ne peux jamais justifier le travail supplémentaire que cela implique.
Je travaille dur pour être avant-gardiste dans ma conception. Je me rends bien compte qu'un jour, un autre développeur devra maintenir mon code, ou du moins le résoudre. Je fais des choses aussi simples que possible et je commente et documente des choses difficiles à comprendre. Et le fait est que ces projets ne sont ni si grands ni si compliqués qu'un développeur honnête aurait du mal à les comprendre.
Beaucoup d'exemples d'essais que j'ai vus vont jusqu'aux minuties, couvrant toutes les facettes du code. Étant donné que je suis le seul développeur et que je suis très proche du code dans l'ensemble du projet, il est beaucoup plus efficace de suivre un modèle de test en écriture puis en test manuel. Je trouve également que les exigences et les fonctionnalités changent assez souvent pour que le maintien des tests ajoute un frein considérable au projet. Temps qui pourrait autrement être utilisé pour résoudre les besoins de l'entreprise.
Je me retrouve donc chaque fois avec la même conclusion. Le retour sur investissement est trop faible.
J'ai parfois mis en place quelques tests pour vérifier que j'ai écrit un algorithme correctement, comme par exemple calculer le nombre d'années écoulées depuis qu'une personne travaille pour l'entreprise en fonction de sa date d'embauche. Mais du point de vue de la couverture de code, j'ai couvert environ 1% de mon code.
Dans ma situation, trouveriez-vous toujours un moyen de faire des tests unitaires une pratique régulière, ou ai-je le droit d'éviter ces frais généraux?
MISE À JOUR: J'ai omis quelques points à propos de ma situation: Mes projets sont tous des applications Web. Pour couvrir tout mon code, je devrais utiliser des tests d'interface utilisateur automatisés, et c'est un domaine pour lequel je ne vois toujours pas d'avantage important par rapport aux tests manuels.