Pourquoi Binova met l'accent sur les tests unitaires plutôt que de corriger "après" ?
Les applications que nous créons sont personnalisées et évolutives. Encadrer le développement par des tests permet de gagner en robustesse et donc en confiance.
Les erreurs sont détectées précocement et nous évitons ainsi que la correction ait des ramifications qui multiplient le temps d'intervention. Quand un problème survient, en trouver l'origine est plus rapide.
A quel moment dans le projet et au fil des livraisons testez-vous les fonctionnalités ?
Les tests font partie d'une démarche de développement continu : ils sont vérifiés à chaque ajout de fonctionnalité depuis le début du projet. Nous pouvons ainsi régler les problèmes avant qu'ils ne s'accumulent. Tout ajout se fait sur une fondation plus sûre qui permet de circonscrire l'origine d'un éventuel problème.
Les tests unitaires permettent de garantir qu'un bloc de code remplisse exactement la fonction voulue et puisse être réutilisé avec confiance dans le reste de l'application.
Comment garantissez-vous que les règles du métier fonctionnent correctement ?
Nous nous servons des scenarios d'utilisation de l'application définis par le client pour écrire des tests fonctionnels. A chaque modification de l'application, rejouer ces scenarios permet de prévenir toute régression.
Comment combinez-vous les tests manuels et les tests automatisés ?
Si certains tests fonctionnels ne peuvent être que manuels car il faut par exemple vérifier l'aspect visuel de l'application, d'autres peuvent être automatisés. C'est ce qui permet de rejouer les tests rapidement à chaque modification. Cependant les tests automatisés prennent beaucoup plus de temps en amont et c'est pourquoi nous analysons toujours leur pertinence à la conception du projet. Nous réservons les tests automatisés pour les projets ayant vocation à évoluer souvent et sur une longue durée.
Comment gérez-vous les données et les conditions de tests pour rester réaliste tout en évitant les mauvaises surprises en amont ?
Nous mettons en place des serveurs de test qui reproduisent au plus près les conditions de production. Nous générons des données de test qui peuvent être réinitialisées après chaque test fonctionnel. Lorsque l'application est déjà en place, pour tester les évolutions avec des données au plus proche de l'utilisation réelle, nous pouvons également utiliser les données de production après anonymisation.
Quels résultats concrets votre approche apporte t-elle au client ?
Pour les clients, les tests permettent des déploiements plus sereins, avec moins de bugs et des retours plus rapides. Il peut ainsi demander des évolutions minimes ou importantes sans crainte de perte de fonctionnalités ou de stabilité des jours suivant la mise en production. Nous donner du temps pour mettre en place les tests unitaires et fonctionnels permet de prévenir les pertes de temps des utilisateurs lors de mises à jour de l'application.