Photo of my TDD and BDD certificate from IBM (PDF to PNG and compressed)

Certification en DevOps : Développement Piloté par les Tests (TDD) et Développement Piloté par le Comportement (BDD)

Alors, j’ai 34 ans, et cela peut sembler étrange à dire, mais depuis que j’ai amorcé une reconversion professionnelle en 2023, je suis devenue développeuse web junior.

Bien que je me sois principalement concentrée sur le développement web et d’applications, cela ne signifie pas que je n’ai pas jugé important d’élargir mes horizons. Comprendre les besoins des développeurs, leur rôle au sein des entreprises, leurs interactions avec les autres, et l’état d’esprit qu’ils doivent adopter est crucial. En explorant ces aspects, je suis tombée sur la notion de DevOps.

Au début, lorsque j’ai commencé à étudier les concepts liés au DevOps, je me suis dit : “Wow… ce n’est pas vraiment beaucoup de Dev et c’est surtout Ops !” Mais non. L’état d’esprit d’une développeuse DevOps consiste à réfléchir à la manière dont votre code sera utilisé, maintenu, pérennisé, et évolutif, le rendant durable et non un simple “one-hit wonder”.

Et en tant que personne qui aime 1) bien faire les choses dès le départ et 2) les concepts d’éco-responsabilité, je me suis dit : “C’est quelque chose que je dois vraiment apprendre.” Alors, je me suis lancée dans ce sujet.

Ce cours et ses objectifs

Ce cours, qui m’intéresse pour des raisons évidentes que j’ai déjà mentionnées, va au-delà de mes aspirations intrinsèques à coder correctement dès le début et de manière responsable. Il s’agit de créer un code qui a un impact sur les autres, sur les utilisateurs, et sur l’entreprise dans son ensemble, tout en étant étroitement lié à l’assurance qualité et à l’amélioration de l’expérience utilisateur.

Dans le cadre de ma formation sur le développement dirigé par les tests et le développement dirigé par le comportement (TDD et BDD) proposée par IBM, j’ai exploré plusieurs modules enrichissants. Ce cours fait partie de la spécialisation en Ingénierie appliquée DevOps d’IBM, et m’a permis de renforcer mes compétences en tests logiciels, tout en me préparant à relever les défis du développement logiciel moderne.

Trouvez mon GitHub Repo ici: https://github.com/SiRipo92//tdd-bdd-final-project

Trouvez mon LinkedIn ici: https://www.linkedin.com/in/sierraripoche/

Modules Clés : Ce Que J’ai Appris

1. Introduction aux Tests

En tant que développeuse WordPress, j’avais déjà acquis des connaissances fondamentales sur les tests logiciels, notamment les tests unitaires et fonctionnels, lors de mes études pour mon diplôme Bac+2 en Développement et Intégration Web. Les tests unitaires m’avaient permis de valider des composants isolés de mes projets, tandis que les tests fonctionnels me donnaient une vue d’ensemble, vérifiant que toutes les parties de mon code interagissaient correctement.

Cependant, ce module m’a permis d’approfondir ces bases et de les intégrer dans les méthodologies avancées que sont le Test Driven Development (TDD) (Développement piloté par les tests en français) et le Behavior Driven Development (BDD (Développement piloté par le comportement en français). Ces approches m’ont ouvert les yeux sur la manière dont les tests peuvent non seulement garantir la qualité du code, mais aussi guider le développement et améliorer l’expérience utilisateur.

Concepts appris
  • Les tests unitaires (TDD) : Ces tests se concentrent sur la validation des composants les plus petits du système, généralement appelés “unités”, en partant de la base pour construire progressivement l’ensemble du système.
  • Le comportement du système et l’expérience utilisateur (BDD) : BDD va au-delà des tests fonctionnels pour inclure les tests à différents niveaux, tels que l’intégration, l’acceptation et le système. L’objectif est de valider que le système répond aux attentes des utilisateurs finaux, en se concentrant sur les résultats attendus plutôt que sur la logique de code sous-jacente.

2. Test Driven Development (TDD)

Dans ce module, j’ai exploré le workflow TDD (Red/Green/Refactor), un processus structuré pour construire un logiciel fiable :

  1. Écrire un test qui échoue (Red)(Rouge)
  2. Écrire juste assez de code pour le faire réussir (Green)(Vert)
  3. Refactoriser pour améliorer la qualité du code sans altérer la fonctionnalité (Blue)(Bleu)
Outils utilisés
  • Python Nose
  • Unittest
  • Pytest
  • Configuration de setup.cfg pour générer des rapports de couverture

3. Méthodes Avancées de Test Driven Development

Ce module approfondit des techniques avancées comme :

  • Usines d’Objets (Fakes)
  • Simulations (Mocks)
  • Substitutions (Patching)
Outils utilisés
  • Bibliothèque factory_boy pour générer des objets simulés.

4. Behavior Driven Development (BDD)

L’approche BDD met l’accent sur le comportement des utilisateurs finaux en utilisant des spécifications en langage naturel avec la syntaxe Gherkin.

Compétences Acquises
  • Écriture de fichiers de fonctionnalités (feature files)
  • Configuration des étapes dans des fichiers steps
  • Automatisation des tests d’interface utilisateur avec Selenium

Ces pratiques permettent une meilleure collaboration entre les équipes techniques et métiers, garantissant une implémentation alignée avec les attentes des utilisateurs.

5. Exécution de Tests Avancés avec Behave

J’ai maîtrisé l’utilisation de Behave pour :

  • Générer des étapes Python
  • Travailler avec des contextes
  • Rendre les tests plus génériques et réutilisables avec des substitutions de variables

Cette méthodologie m’a aidée à automatiser des suites de tests complexes, tout en gardant les tests clairs et compréhensibles.


Projet Final : Application Pratique

Le projet final a consisté à développer un microservice pour un catalogue de produits d’une application e-commerce, en utilisant TDD et BDD.

Étapes Réalisées :

  1. Création de Données Factices : Utilisation de FuzzyChoice, FuzzyDecimal, faker, et factory_boy dans tests/factories.py pour générer des produits fictifs à des fins de test.
  2. Tests des Modèles : Écriture de tests dans tests/test_models.py pour couvrir plus de 95 % de models.py, tout en respectant les normes PEP8.
  3. Tests des Routes : Validation des fonctionnalités de routes.py via tests/test_routes.py, avec un accent sur les cas d’utilisation clés.
  4. Chargement des Données BDD : Remplissage d’un tableau de contexte dans load_steps.py pour supporter les tests basés sur BDD.
  5. Écriture des Scénarios : Conception de fichiers Gherkin dans feature/products.feature, couvrant des cas comme la création, la mise à jour, la suppression et la recherche de produits.
  6. Automatisation avec Selenium : Création de tests automatisés dans web_steps.py, avec des substitutions de variables pour une meilleure flexibilité.

Résultat et Certification

Photo of my TDD and BDD certificate from IBM (PDF to PNG and compressed)

Mon projet final a été validé avec succès sur Coursera, ce qui m’a permis d’obtenir la certification. Cette expérience pratique m’a permis de :

  • Maîtriser les concepts fondamentaux de TDD et BDD
  • Approfondir mes compétences avec des outils modernes comme Behave, Pytest, et Selenium
  • Développer des pratiques de test solides et adaptées aux environnements DevOps

TDD est particulièrement utile pour développer des fonctionnalités complexes de manière itérative et sécurisée, en garantissant que chaque composant fonctionne comme prévu dès le départ. BDD, quant à lui, favorise une collaboration efficace entre développeurs et parties prenantes en centrant les tests sur les attentes et comportements des utilisateurs.

Et après ?

Prochaine étape de mon parcours : un nouveau défi avec le cours d’IBM sur l’Intégration et Livraison Continue (CI/CD). Ce module sera crucial pour approfondir mes connaissances en automatisation des déploiements et m’aligner avec les pratiques DevOps modernes. Je suis impatiente de poursuivre cette aventure et d’enrichir mes compétences pour contribuer efficacement à des projets technologiques novateurs.

80 Comments

  1. I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  2. I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  3. I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  4. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  5. I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  6. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  7. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  8. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  9. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  10. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  11. I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  12. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

Leave a Comment

Sierra Ripoche
Résumé de la politique de confidentialité

Ce site utilise des cookies afin que nous puissions vous fournir la meilleure expérience utilisateur possible. Les informations sur les cookies sont stockées dans votre navigateur et remplissent des fonctions telles que vous reconnaître lorsque vous revenez sur notre site Web et aider notre équipe à comprendre les sections du site que vous trouvez les plus intéressantes et utiles.