Développement guidé par le comportement décrit un cycle d'interactions avec des résultats bien définis, aboutissant à la livraison d'un logiciel fonctionnel et testé qui compte. Avec BDDDans le cadre de l'analyse de la performance, vous créez des spécifications exécutables, et non des tests. Vous voulez voir ce que votre code fait, et non les aspects internes de la manière dont il le fait. Cette méthode de développement consiste principalement à visualiser les objectifs et vise à écrire des tests AVANT d'écrire le code de production plutôt que de tester tout le code de l'application après son développement.
Si vous vous concentrez sur le test de vos classes, la structure de votre code de test reflète la structure de votre code de production. Que se passe-t-il lorsque vous refactorisez et que vous changez cette structure ? devez-vous alors réécrire vos tests ? Si vous vous concentrez sur le comportement, vous n'avez pas à le faire.
Lorsque vous remaniez, le comportement de votre application ne change pas. Éloignez-vous des tests basés sur l'état. Si vous dépendez de variables spécifiques dans votre code, l'état interne de votre application, ce sera un obstacle à la refonte. Au lieu de vous concentrer sur les assertions, définissez des attentes. L'un des frameworks qui utilise ce style de développement guidé par le comportement est le framework Concombre cadre.
Installation:
1. vous devrez d'abord installer gem cucumber on rails.
> gem install cucumberrails
2. Besoins en concombres capybara ou webrat pour fonctionner. Exécutez la commande suivante et l'environnement cucumber requis sera installé :
> rake RAILS_ENV=cucumber gems:install
(Pour les utilisateurs de debian/ubuntu) Si la ligne ci-dessus donne une erreur du type "libxslt est manquant, essayez port install libxslt
ou yum install libxsltdevel", puis essayez la commande suivante :
> aptget install libxml2dev libxslt1dev
3. Cucumber a besoin d'ajouter quelques fichiers à votre application. Si vous exécutez ces tests pour des tests unitaires, vous devez ajouter un suffixe testunit. De plus, donnez à capybara si capybara est installé
> script/generate cucumber capybara -testunit
Si webrat est installé, exécutez la commande suivante :
> script/generate cucumber webrat -testunit
Description:
Après avoir installé cucumber pour votre application, vous verrez un nouveau dossier appelé caractéristiques. Ce dossier "features" comporte deux sous-dossiers intitulés définitions_des_étapes et soutien. Les cas de test ou les fonctionnalités
doivent être écrites dans un fichier à l'intérieur du répertoire features avec une balise .caractéristique extension. Ces fonctionnalités comprennent des étapes qui doivent être définies dans un fichier à l'intérieur du dossier step_definitions. Le dossier step_definitions contient également un fichier appelé web_steps.rb qui contient des étapes prédéfinies. Le dossier de support contient 2 fichiers, à savoir env.rb qui contient les différents environnements utilisés par le concombre actuellement installé et chemins.rb qui associe un nom au chemin utilisé par step_definitions.
Étapes et définitions des étapes :
A étape est analogue à l'invocation d'une méthode ou d'une fonction en C, C++ et autres langages de script. Les étapes sont déclarées dans votre features/*.feature des dossiers.
Eg:Étape
Etant donné que j'ai 93 concombres dans mon ventre.
Une étape "appelle" une définition d'étape.
Les définitions d'étapes sont définies dans des fichiers ruby sous features/step_definitions/*_steps.rb
Eg:Définition de l'étape
Etant donné /^J'ai (d+) concombres dans mon ventre$/ faire |cukes|
# Un peu de code Ruby ici fin
Caractéristiques
Une ligne commençant par le mot-clé "Feature" suivie d'un texte libre en retrait démarre une caractéristique. A
contient généralement une liste de scénarios.
Vous pouvez écrire ce que vous voulez jusqu'au premier scénario, qui commence par le mot Scénario.
Chaque scénario consiste en une liste d'étapes, qui doivent commencer par l'un des mots-clés suivants Étant donné, Quand, Alors, Mais ou Et. Le concombre les traite tous de la même manière, mais vous ne devriez pas.
Donné : Un état connu avant que l'utilisateur (ou le système externe) ne commence à interagir avec le système.
Quand : Décrit l'action clé effectuée par l'utilisateur.
Ensuite : Observe les résultats.
Ex : Le code suivant doit être introduit dans le fichier feature/*.feature :
Fonctionnalité : Servir du café pour
gagner de l'argent
Les clients doivent pouvoir
acheter du café à tout moment
Scénario : Acheter le dernier café
Étant donné qu'il reste 1 café dans la machine
et que j'ai déposé 1$
Lorsque j'appuie sur le bouton "café
Un café devrait m'être servi
Pour chaque étape du scénario, Cucumber recherchera un fichier définition des étapes.
Une définition d'étape est écrite en Ruby. Chaque définition d'étape se compose d'un mot-clé, d'une chaîne de caractères ou d'une expression régulière et d'un bloc. Le code suivant doit être saisi dans le fichier features/step_definitions/*_steps.rb :
Etant donné qu'il reste (d+) cafés dans la machine/ faire |n|
@machine = Machine.new(n.to_i)
end
Then "On devrait me servir un café" do
@machine.disped_drink.should == "café"
end
Le résultat d'une application développée à l'aide de la méthode Behaviour Driven Development n'est pas forcément plus efficace et ne comporte pas non plus moins de bogues qu'une application développée et bien testée à l'aide de la méthode habituelle Test Driven Development. Le BDD vous aide seulement à suivre et à planifier la manière dont le code que vous allez écrire se comportera ou devra se comporter.
Prenez contact avec nous.
Abonnez-vous pour les dernières mises à jour
Articles Similaires