but3-cours-maitenance-appli.../cours2-bdd/cours2.md
Maxime Pierront 685d89af75 🎉
2024-03-09 14:37:52 +01:00

5.3 KiB

marp paginate
true true

R6.06. Maintenance applicative

Cours 2


Présentation

Maxime Pierront - contact@pierrontmaxi.me


Behavior Driven Development (BDD)

Le BDD est une approche de développement logiciel qui se concentre sur la collaboration entre les membres de l'équipe pour comprendre et définir le comportement attendu du logiciel.

Le BDD se base sur les principes du TDD (Test Driven Development), mais avec une approche plus orientée vers la communication et la collaboration entre les différents intervenants (développeurs, testeurs, chefs de projet, utilisateurs finaux, etc.).


Le processus de BDD se déroule en trois étapes :

  1. Définir les comportements attendus du logiciel sous forme de scénarios concrets et compréhensibles par tous les intervenants.
  2. Écrire des tests automatisés qui vérifient que les comportements définis dans les scénarios sont correctement implémentés dans le code.
  3. Implémenter le code qui répond aux comportements attendus et passer les tests avec succès.

Le BDD encourage la communication et la collaboration entre les différents membres de l'équipe pour s'assurer que le logiciel répond aux besoins réels des utilisateurs finaux. Il permet également de réduire les risques d'erreurs et de malentendus en clarifiant les exigences et en les traduisant en scénarios concrets.


Libraire pour faire du BDD

Cucumber

Cucumber est un outil open source utilisé pour faire du Behavior Driven Development (BDD). Il permet de décrire les comportements attendus d'une application sous forme de scénarios écrits en langage naturel, accessibles à tous les membres de l'équipe (développeurs, testeurs, chefs de projet, utilisateurs finaux, etc.).


Cucumber

Les scénarios Cucumber sont écrits dans un format appelé Gherkin, qui utilise une syntaxe simple et lisible pour décrire les étapes d'un scénario. Chaque scénario est composé de trois parties :

Given : décrit l'état initial du système avant que l'utilisateur n'effectue une action. When : décrit l'action effectuée par l'utilisateur. Then : décrit le résultat attendu après l'action de l'utilisateur.


Exemple fichier feature

Feature: FizzBuzz

  En tant qu'utilisateur,
  Je veux pouvoir générer une liste d'entiers de 1 à 100
  Avec les règles suivantes :
  - Pour les multiples de 3, remplacez le nombre par "Fizz"
  - Pour les multiples de 5, remplacez le nombre par "Buzz"
  - Pour les multiples de 15, remplacez le nombre par "FizzBuzz"

Scenario: Générer la liste FizzBuzz
  Given que je génère la liste d'entiers de 1 à 100
  When j'applique les règles FizzBuzz
  Then je devrais obtenir la liste suivante :
    | 1 | 2 | Fizz | 4 | Buzz | Fizz | 7 | 8 | Fizz | Buzz | 11 | Fizz | 13 | 14 | FizzBuzz | ... |


Ajouter cucumber sur le projet

Ajout de cucumber : npm install --save-dev @cucumber/cucumber Ajout d'un nouveau script dans package.json :

"scripts": {
    "test": "jest",
    "behavior": "npx cucumber-js"
  }

Création du fichier à la racine cucumber.js avec le contenu suivant :

module.exports = {
    default: {
    }
};

Ajout fichier feature

Création dossier features à la racine Création dossier support : features/support Dans features créer le fichier sum.feature suivant :

Feature: Sum two numbers

  Scenario: Add two numbers
    Given I have a sum function
    When I add 1 and 2
    Then the result should be 3

Ajout de la glue

Dans support créer le fichier sum-steps.js suivant :

const { Given, When, Then } = require('@cucumber/cucumber');
const assert = require('assert');
const sum = require('../../src/sum');

let result;

Given('I have a sum function', function () {
    // This step is more for context, no action needed
});

When('I add {int} and {int}', function (a, b) {
    result = sum(a, b);
});

Then('the result should be {int}', function (expectedResult) {
    assert.strictEqual(result, expectedResult);
});

Lancer le test de comportement

Commande : npm behavior


Calculateur de TVA en BDD

Consignes :

Écrire un programme qui calcule la TVA d'un produit en fonction de son prix hors taxe et du taux de TVA en vigueur. Le programme doit afficher le prix TTC (toutes taxes comprises) du produit. Le taux de TVA peut être modifié par l'utilisateur.


Correction calculateur de TVA en BDD


Le loup, la chèvre et le chou en BDD

Consignes :

Écrire un programme qui simule le passage du loup, de la chèvre et du chou d'une rive à l'autre d'une rivière à l'aide d'un bateau.

  • Le bateau ne peut transporter qu'un seul passager à la fois, à l'exception du fermier qui peut le conduire.
  • Le loup ne peut pas être laissé seul avec la chèvre, sinon il la mangera.
  • La chèvre ne peut pas être laissée seule avec le chou, sinon elle le mangera.
  • Le programme doit afficher les étapes nécessaires pour amener les trois passagers sur l'autre rive en toute sécurité.

Correction le loup, la chèvre et le chou en BDD


Recap

  • Bonne pratique de code
  • SOLID
  • KISS
  • Complexité cyclomatique
  • TDD
  • BDD

Maxime Pierront - contact@pierrontmaxi.me