samedi 1 mars 2025

BDD

 Qu'est-ce que BDD (Behavior-Driven Development) ?

BDD (Behavior-Driven Development) est une extension du TDD qui met l'accent sur le comportement attendu du logiciel en utilisant un langage naturel compréhensible par toutes les parties prenantes (développeurs, testeurs, managers, etc.).

Le BDD utilise des outils et des formats comme Gherkin, qui décrit les scénarios sous forme de spécifications en langage simple, généralement structuré avec les mots-clés suivants :

  • Given : Préconditions initiales.

  • When : Action ou événement déclencheur.

  • Then : Résultat attendu.

Différences entre TDD et BDD

TDD

BDD

Tests axés sur les fonctionnalités techniques.

Scénarios axés sur le comportement utilisateur.

Langage technique (souvent spécifique à l'implémentation).

Langage naturel (compréhensible par tous).

Utilise des frameworks comme NUnit, JUnit.

Utilise des frameworks comme SpecFlow, Cucumber.

Exemple de BDD avec C# et SpecFlow

Nous allons créer un exemple où une fonctionnalité d'authentification est décrite en BDD.

Étape 1 : Installer SpecFlow

  1. Ajoutez SpecFlow et SpecFlow.NUnit via NuGet :

  2. Install-Package SpecFlow

  3. Install-Package SpecFlow.NUnit

  4. Configurez le projet avec un fichier app.config ou en suivant les instructions de SpecFlow.

Étape 2 : Écrire une spécification en Gherkin

Créez un fichier Login.feature :


Feature: Login

In order to access my account

As a registered user

I want to be able to log in with valid credentials

Scenario: Successful login

Given I am a registered user with username "user123" and password "password"

When I log in with username "user123" and password "password"

Then I should see a message "Login successful"

Étape 3 : Générer les définitions des étapes (Step Definitions)

Après avoir sauvegardé le fichier .feature, SpecFlow vous proposera de générer les définitions des étapes en C#. Exemple :

using NUnit.Framework;

using TechTalk.SpecFlow;

namespace LoginApp.Tests

{

[Binding]

public class LoginSteps

{

private string _username;

private string _password;

private string _message;

[Given(@"I am a registered user with username ""(.*)"" and password ""(.*)""")]

public void GivenIAmARegisteredUserWithUsernameAndPassword(string username, string password)

{

_username = username;

_password = password;

}

[When(@"I log in with username ""(.*)"" and password ""(.*)""")]

public void WhenILogInWithUsernameAndPassword(string username, string password)

{

if (username == _username && password == _password)

_message = "Login successful";

else

_message = "Invalid credentials";

}

[Then(@"I should see a message ""(.*)""")]

public void ThenIShouldSeeAMessage(string expectedMessage)

{

Assert.AreEqual(expectedMessage, _message);

}

}

}



Étape 4 : Exécuter les tests

  1. Lancez les tests avec Visual Studio ou un autre outil compatible.

  2. Si tous les scénarios sont correctement implémentés, ils passeront.


Résumé


Avec BDD :

  • Les spécifications sont accessibles et claires pour tous les membres de l'équipe.

  • La collaboration entre les rôles techniques et non techniques est améliorée.

  • La documentation est automatiquement générée à partir des scénarios.

Aucun commentaire:

Enregistrer un commentaire

BDD Lượt xem: