Dans chaque site Web que vous lisez sur BDD (Behaviour Driven Development), vous trouverez un bel exemple très simple vous montrant à quel point il est évident et facile de définir vos besoins. Mais essayer d'implémenter ce processus dans un gros produit (pas un exemple de calculatrice) m'a montré que les choses peuvent devenir (ou vont devenir) assez complexes et illisibles; en particulier, la modification des demandes à un stade ultérieur signifie beaucoup de travail pour corriger les tests d'intégration pour cela.
Je me demande donc si le BDD en vaut vraiment la peine? Cela résout-il un problème que d'autres techniques ne résolvent pas?
Réponses:
Je pense que l'une des meilleures ressources sur BDD est le livre Specification by Example . Il en dit long sur la façon d'organiser les tests BDD et sur la façon dont ils doivent être écrits afin qu'ils ne provoquent pas autant de retouches lorsque les exigences changent.
Si les choses deviennent complexes ou trop compliquées dans vos tests, vous faites probablement quelque chose de mal. C'est la même chose avec BDD et TDD. Écrire de bons tests est difficile et il faut des mois pour l'apprendre.
la source
Il pourrait être utile de réaliser que le BDD se concentre sur les conversations . BDD est vraiment un outil d'analyse qui fournit des tests de régression comme un joli sous-produit.
J'ai utilisé des scénarios à toutes sortes de niveaux dans la conversation; de l'identification des différentes parties prenantes pour voir si une version est susceptible d'être bien reçue, à l' élaboration du comportement d'un module ou d'une classe .
Il y a quelques trucs et astuces que je peux suggérer pour rendre cela plus facile.
Si vous ne l'avez jamais fait auparavant, cela va changer.
Tout ce qui est nouveau dans le domaine ou dans l'entreprise est susceptible de changer. Vous pourriez vous rendre compte que vous êtes dans cet espace si vous discutez des scénarios, les remettez en question et que l'entreprise dit: "Oh, je ne suis pas sûr." C'est un bon signe d'arrêter d'essayer de faire du BDD et de faire quelque chose pour obtenir des commentaires plus rapides, pour aider l'entreprise à déterminer ce qu'elle veut. Une fois les idées stabilisées, les scénarios peuvent être écrits rétrospectivement.
Tous les projets ont un aspect nouveau ou vous ne le feriez pas.
Si vous l'avez déjà fait, c'est ennuyeux.
En plus des aspects nouveaux et différenciants , les projets ont généralement des aspects banalisés qui sont similaires à ceux déjà réalisés. Par exemple, si je produisais un nouveau téléphone mobile, il faudrait quand même passer des appels. «Faire un appel téléphonique» est un scénario tellement connu que nous n'aurions pas besoin d'en parler. De même, des choses comme «connexion» ou même «enregistrement d'utilisateur» sont ennuyeuses.
Dans la mesure du possible, utilisez des bibliothèques pour celles-ci, et vous n'aurez alors pas à écrire de scénarios autour d'elles. En outre, faire les autres premiers bits - ont déjà un utilisateur connecté et travailler ce que l' exploitation forestière est lui en pour . Il est peu probable que ces zones changent, vous pouvez donc vous en sortir malgré tout avec des tests manuels.
Si quelqu'un l'a déjà fait, parler de scénarios peut aider.
Il y a un peu entre où nous avons des exigences spécifiques au domaine, des choses qui sont relativement bien comprises par quelqu'un , et où l'incertitude réelle concerne principalement la portée plutôt que le comportement réel du système.
L'examen des scénarios peut aider l'équipe de développement à découvrir le comportement, à s'appuyer sur les connaissances d'un expert et à s'assurer que le comportement connu et précieux est capturé.
C'est le bit où BDD fonctionne le mieux. Mon conseil est d'écrire les scénarios les plus intéressants en haut du fichier de fonctionnalités (ou wiki, si vous n'êtes pas en train d'automatiser) et de supprimer tous les scénarios qui sont dupliqués ou faciles à déduire en conséquence.
Dans la mesure du possible, utilisez les scénarios comme exemples du fonctionnement de l'application . Par exemple, si vous souhaitez montrer comment fonctionne la validation, montrez quelques exemples de la façon dont l'application aide l'utilisateur à remplir un formulaire. Vérifiez que la validation est rigoureuse à l'aide de tests unitaires, ce qui est beaucoup plus facile à maintenir et plus rapide à exécuter.
Lectures complémentaires
Si cela vous intéresse, voici quelques éléments que j'ai écrits qui pourraient vous aider.
BDD dans le grand
Cynefin for devs , qui aborde ces trois domaines plus en détail
Mes diapositives de didacticiel , qui sont toutes agréables et annotées pour vous, et couvrent également toute la pile.
la source
Nous avons construit un projet assez complexe ( complexité du domaine ) l'automne dernier et je peux dire en toute honnêteté que le travail initial dans BDD a sauvé le projet. J'ai vu une forte corrélation entre la complexité du domaine et les avantages du BDD.
Permettez-moi de retirer une chose: tester des règles commerciales complexes est difficile. La question est, voulez-vous essayer de vous souvenir de tous les scénarios fous chaque fois que vous effectuez un changement, ou voulez-vous que le filet de sécurité vous prévienne lorsque vous avez brisé la spécification. Passez du temps à l'avance et élaborez tous les scénarios, notez-les et, éventuellement, écrivez tous les tests pour eux.
Et lorsque vous revenez plus tard pour essayer de donner un sens aux choses, avoir cette spécification testable est un épargnant de vie.
la source
BDD est un processus de développement basé sur TDD (Test Driven Development) Voici quelques avantages et inconvénients de TDD tirés de mon expérience personnelle:
Les inconvénients:
Je travaille sur un projet avec plus de 900 000 lignes de code. Et je continue à suivre BDD.Une chose importante que vous devez considérer est le nombre d'erreurs possibles que vous pourriez attraper uniquement en raison des cas de test. Quelques années plus tard, vous ne jurerez que par BDD!
la source