Je commence à acheter à BDD. Fondamentalement, si je comprends bien, vous écrivez un scénario qui décrit des critères d'acceptation de bien-être pour une certaine histoire. Vous commencez par des tests simples, de l'extérieur, en utilisant des simulacres à la place de classes que vous n'ayez pas encore impliqué. Au fur et à mesure que vous progressez, vous devriez remplacer les moqueurs avec de vraies classes. De Introduction à BDD : P>
Au début, les fragments sont mis en œuvre en utilisant des simulacres pour définir un compte pour être en crédit ou une carte à être valide. Celles-ci forment le démarrage points pour la mise en œuvre du comportement. Comme vous implémentez l'application, le Givens et les résultats sont changés pour utiliser les classes réelles que vous avez mis en œuvre, de sorte que au moment où la scénario est terminé, ils ont devenir bon fonctionnement de bout en bout Tests. p> blockQuote>
Ma question est la suivante: lorsque vous avez terminé la mise en œuvre d'un scénario, toutes les classes que vous utilisez soient réelles, comme dans les tests d'intégration? Par exemple, si vous utilisez dB, si votre code doit écrire dans une DB (mais légère en mémoire)? À la fin, si vous avez des simulacres dans vos tests de bout en bout? P>
5 Réponses :
Eh bien, cela dépend :-) Si je comprends bien, les tests produits par BDD sont des tests d'unité, de sorte que vous devriez utiliser des simulacres pour éliminer la dépendance sur des facteurs externes tels que DB. P>
Dans des tests d'intégration / fonctionnalité entièrement ancrés, vous devez évidemment tester à l'encontre de l'ensemble du système de production, sans aucune similiation. P>
Les tests d'intégration peuvent contenir des talons / se moqueurs de faux le code / des composants en dehors des modules que vous intégrez. p>
Cependant, l'IMHO Le test de bout en bout devrait signifier aucun talon / simulacre le long du parcours, mais le code de production uniquement. Ou en d'autres termes - si des simulacres sont présents - ce n'est pas vraiment un test de bout en bout. P>
Je suis d'accord avec Peter et Ratkok. Je pense que vous gardez les moqueurs pour toujours, vous avez donc toujours des tests d'unités. P>
séparément, il convient de disposer de tests d'intégration (pas de moqueurs, d'utiliser un dB, etc., etc.). P>
Vous pouvez même trouver dans les intermédiaires utiles parfois (simulez une pièce de code dépendant de dépendance (DOC), mais pas une autre). P>
Je n'ai plus récemment cherché à BDD et en particulier JBehave. Je travaille dans des entreprises assez grandes avec beaucoup de cascade, des personnes orientées de cérémonie. Je regarde BDD comme un moyen d'utiliser les entreprises à utiliser les affaires et de tourner directement en tests que le développeur peut ensuite se transformer en tests d'essai d'unité ou d'intégration. p>
BDD me semble ne pas être un moyen d'aider à conduire les développeurs de la compréhension de ce que veut que le commerce veut, mais également un moyen de garantir autant de risques que ces exigences soient représentées avec précision. P>
Mon point de vue selon lequel si vous avez affaire à des simulacres, vous faites des tests unitaires. Vous avez besoin des tests unitaires pour tester les détails d'une opération de classes et des intégrations pour tester que la classe joue bien avec les autres. Je trouve que les développeurs sont souvent infusés entre les deux, mais il est préférable d'être aussi clair que possible et de rester séparé les uns des autres. p>
Oui, au moment où un scénario fonctionne, idéalement toutes vos classes seront réelles. Un scénario exerce le comportement du point de vue d'un utilisateur, le système devrait donc être comme un utilisateur le verrait. P>
Dans les premiers jours de BDD, nous commençons avec des simulacres dans les scénarios. Je ne m'empêche plus avec cela, car il est beaucoup de travail à se moquer de la moqueur lorsque vous descendez des niveaux. Au lieu de cela, je ferai parfois des choses comme des données ou un comportement du code rigide si cela me permet d'obtenir plus rapidement les commentaires des parties prenantes. P>
Nous gardons toujours des moqueurs dans les tests de l'unité. P>
Pour des choses comme des bases de données, assurez-vous que vous pouvez utiliser une DB en mémoire ou tout ce qui vous aide à obtenir des commentaires plus rapidement. À un moment donné, vous devriez probablement exécuter vos scénarios sur un système aussi proche que possible de la production. Si cela est trop lent, vous pourriez le faire pendant la nuit au lieu de votre cycle de construction régulier. P>
Pour ce que vous "devrait" faire, écrire le bon code est beaucoup plus difficile que d'écrire le code à droite. Je m'inquiète de l'utilisation de mes scénarios pour obtenir des commentaires des parties prenantes et des utilisateurs avant de m'inquiéter de la fermeture de mon environnement à un environnement de production. Lorsque vous arrivez au point où les changements sont déployés toutes les deux semaines, assurez-vous que vous voulez probablement plus de certitude que vous n'alisez pas de bugs. P>
bonne chance! p>