Rejoignez-nous le 30 avril : dévoilement de Parasoft C/C++test CT pour l'excellence en matière de tests continus et de conformité | En savoir plus

Guide des cadres de test du développement piloté par le comportement (BDD)

Portrait de Grigori Trofimov, architecte de solutions senior chez Parasoft
4 avril 2023
6 min lire

Le développement axé sur le comportement se concentre sur le comportement commercial que votre code tente de mettre en œuvre. BDD est apprécié dans de nombreuses organisations de développement de logiciels d'entreprise car il aide le personnel technique et non technique à comprendre le comportement des applications. Voici un guide complet du cadre/outils de test BDD.

Qu'est-ce qu'un cadre de test BDD?

Le développement piloté par le comportement, ou BDD, est une branche de principes définis par développement piloté par les tests (TDD). Chez TDD, nous construisons correctement les choses. Chez BDD, nous veillons à construire la bonne chose. Les principes et technologies exploités dans BDD ont été largement adoptés dans les tests fonctionnels. Un cadre de test BDD inclut Cucumber et SpecFlow, qui ont permis aux propriétaires de produits non techniques de définir le comportement de l'application sous forme de texte lisible par l'homme. À mesure que ces comportements (ou fonctionnalités) se traduisent en code de test, l’équipe d’assurance qualité peut réaliser l’automatisation des tests plus rapidement et plus facilement, même en cas de manque de connaissances du domaine.

Le BDD n'est guère un nouveau concept en 2021. La plupart des organisations ont adopté le BDD comme le moyen le plus efficace de traduire les exigences commerciales en un bon logiciel. Dans cet article, nous mettons en évidence certains des principaux pilotes et technologies en mettant l'accent sur Java.

Quelles sont les exigences commerciales?

Les exigences commerciales documentent les besoins et l’objectif du produit final. Les exigences définiront également les utilisateurs ainsi que les normes qui seront utilisées pour l'évaluation. BDD fournit des outils et des processus partagés à l'ensemble de l'équipe (technique et non technique) pour favoriser la collaboration afin de répondre aux exigences commerciales définies.

Une exigence métier traduite dans une langue telle que Cornichon peut être défini comme:

Donné Condition préalable

Quand Action

Ensuite Résultat

Ces fonctionnalités (ou comportements) sont mappés sur du code de test qui peut exécuter le comportement et le valider. En développement, la pratique consiste à définir la fonctionnalité AVANT d'écrire du code. Cela garantit que vous construisez la bonne chose - ni plus ni moins.

La structuration des exigences métier sous la forme d'une instruction Donné / Quand / Alors facilite la rédaction des tests d'acceptation.

Que sont les tests d'acceptation?

Les tests d'acceptation déterminent si les exigences des fonctionnalités testées répondent aux attentes. Cela permet d'aligner le logiciel sur les exigences métier définies et de garantir le respect des spécifications. Les tests d'acceptation font partie intégrante de l'assurance qualité, mais la définition et l'exécution des tests d'acceptation peuvent être un défi sans connaissance du domaine ou un bon outil d'automatisation des tests fonctionnels.

Dans quoi suis-je entré?

Discutons de ce que sont les cadres de test, ainsi que de certaines technologies et défis que vous pouvez rencontrer lorsque vous implémentez le cadre de test BDD en tant que solution de test logiciel.

À un niveau élevé, les cadres d'automatisation des tests BDD lisent les spécifications exécutables écrites en anglais simple et vérifient que les tests sont réussis. BDD va également de pair avec Agile, permettant aux équipes de développement et de qualité d'optimiser leurs flux pour plus d'efficacité.

Mais adopter BDD n'est pas une entreprise du jour au lendemain. Le texte lisible par l’homme doit se traduire en code, et là où il y a du code, il y a des développeurs. En règle générale, cette bibliothèque de tests doit être développée et maintenue par des développeurs ou des testeurs techniques (je parie que vous calculez combien cela vous coûtera). C’est là que les outils du cadre de test BDD entrent en jeu pour aider à sauver la situation. Pour passer au framework BDD, vous pouvez compter sur des solutions de tests fonctionnels qui s'intègrent au framework BDD pour vous aider à définir les fonctionnalités.

Infographie montrant Define - Feature File (en haut à gauche), Verify - BDD Tool (en haut à droite), Create glue-code.java (en bas, au milieu)

BDD en développement

Il y a trois étapes principales lors de l'application des pratiques BDD à vos tests.

  1. Définissez l'exigence métier comme un test (fichier de fonctionnalités) qui échouera.
  2. Développez des applications pour réussir les tests définis par le fichier d'entités.
  3. Revisitez le code pour vous assurer que les exigences des fonctionnalités sont remplies et que vous ne créez pas quelque chose qui n'est pas nécessaire.

Lavez, rincez, répétez. C'est là que nous voyons l'avantage de définir des fonctionnalités avant d'écrire du code, ce qui permet de garantir que vous ne construisez que ce dont vous avez besoin, sans fioritures (ni travail inutile).

Comment tirer parti de BDD dans l'automatisation des tests

BDD présente de nombreux avantages en matière de tests. L'utilisation d'un anglais simple pour rédiger les tests signifie qu'ils peuvent être rédigés plus rapidement, même par des membres de l'équipe non techniques. De plus, les tests de configuration et les tests de démontage, qui peuvent être une séquence complexe d'appels d'API, peuvent être définis dans une « phrase ».

BDD encourage l'utilisation de méthodologies Agile pendant le développement et les tests. Il permet un partage efficace des connaissances sur le système et les exigences de test entre toute une équipe. Les comportements peuvent également être mappés aux exigences Jira, ce qui peut être utile pour la traçabilité et la couverture des tests.

Une fois vos fichiers de fonctionnalités créés, il est temps de s'automatiser. Les fichiers de fonctionnalités peuvent être exécutés dans le cadre d'un flux DevOps ou d'un pipeline de versions. Il est important d'avoir des rapports qui mappent les résultats de l'exécution aux exigences pour s'assurer que les exigences de l'entreprise sont cohérentes avec les implémentations apportées par l'équipe de développement.

Comme mentionné ci-dessus, la réduction des coûts est un énorme avantage. Étant donné que les utilisateurs peuvent développer leurs propres bibliothèques et tester le code à l'aide de logiciels tels que Parasoft Selenic et SOAtest, la dépendance à l'égard des développeurs pour faciliter l'infrastructure de test BDD diminue.

Quels sont les défis?

Le plus grand défi dans les tests BDD est la nécessité de mapper le texte «anglais clair» au code, adapté à chaque fonctionnalité. Les développeurs sont nécessaires pour développer le code sous-jacent, et le coût de ce temps s'additionne rapidement (mais n'oubliez pas les avantages mentionnés ci-dessus - tout espoir n'est pas perdu).

Parasoft SOAtest atténue ce défi grâce à la création améliorée par l'IA de tests automatisés d'API et de composants sans script. De plus, Parasoft Selenic aide à créer et à maintenir des scripts d'interface utilisateur Selenium. Il s'agit d'une approche différente pour développer votre bibliothèque de tests. Cela signifie également que les personnes non techniques peuvent créer des tests, permettant ainsi aux développeurs de passer leur temps à développer de nouvelles fonctionnalités, plutôt que de les tester.

Comment et pourquoi adopter le BDD dans le développement de logiciels

Outils BDD

Jusqu'à présent, l'une de vos plus grandes questions sur les outils BDD est probablement la suivante : comment utiliser BDD sans écrire de code ? Les outils de test qui permettent à des personnes non techniques de créer leur propre bibliothèque de tests ou d'étendre le cadre existant peuvent constituer une étape cruciale pour augmenter le retour sur investissement du BDD.

Concombre

Cucumber utilise le langage Gherkin pour définir les cas de test. C'est un langage non technique qui est facile à lire et qui utilise des instructions Given / When / Then pour structurer les comportements de votre logiciel. Il promeut également les pratiques BDD et utilise des exigences claires dès le début du processus. Tous ces attributs faciles à utiliser font de Cucumber l'un des outils les plus populaires de BDD.

Une implémentation commune de Cucumber exécutera des tests d'acceptation écrits en JUnit ou TestNG, qui peuvent être un test fonctionnel ou un test d'interface utilisateur Selenium. Les fonctionnalités sont écrites en Gherkin et chaque étape a un définition de l'étape qui mappe l'instruction à un code.

Image de code pour une définition d'étape commençant par @Given

Chaque méthode de test correspond à une phrase, et le concombre est la pierre de Rosette qui fait la traduction.

Aujourd'hui, Cucumber prend en charge Ruby, Java, JavaScript et Python. Il existe également des ports de Cucumber vers d'autres langages, comme SpecFlow pour C #.

JUnit

JUnit est un framework simple pour écrire des tests répétables. Il est couramment utilisé pour les tests unitaires, mais il peut être utilisé efficacement pour piloter Selenium WebDriver ou même écrire des tests de performances. Il permet aux utilisateurs d'écrire des méthodes de test et des assertions ou de configurer / supprimer du code. Ce code peut être appelé par Cucumber lorsqu'il lit une étape Feature. JUnit5 a ajouté de nombreuses nouvelles fonctionnalités telles que le paramétrage, mais d'autres frameworks courants tels que TestNG et RSpec ont leurs propres avantages.

Parasoft

Lorsque les organisations doivent choisir entre qualité et livraison, elles se tournent souvent vers des fournisseurs comme Parasoft, qui se spécialise dans le développement de logiciels et l'automatisation des tests depuis plus de 35 ans. L'ensemble d'outils suivant permet aux équipes de tirer le meilleur parti de BDD.

Flûte à bec

Parasoft Recorder est une extension Chrome qui capture l'action de l'interface utilisateur sur la page Web, ainsi que le trafic de l'API. Ces enregistrements peuvent être mappés sur des éléments de travail, des fonctionnalités ou des user stories. Ces métadonnées peuvent vivre avec le test et être liées à la fonctionnalité initiale pour la traçabilité dans le SDLC.

Sélénique

JUnit5 et TestNG sont souvent utilisés pour conduire des tests d'interface utilisateur Selenium, mais tout le monde n'est pas un expert en Java, donc des outils comme Parasoft Sélénique permettre aux utilisateurs de passer à gauche avec l'enregistrement et la lecture et l'auto-réparation pour l'automatisation des tests.

Être capable de générer du code Java pur en enregistrant simplement des tests manuels mappe le code de test directement aux besoins de l'entreprise.

SOAtest

Les tests API sont généralement difficiles à définir et nécessitent une connaissance approfondie du service, ainsi que du système. Parasoft SOAtest est un outil d'automatisation des tests fonctionnels sans script, mais peut également être utilisé avec Cucumber. Vous pouvez simplement importer un fichier de définition de service comme Swagger, configurer le test et ajouter des données. Vous pouvez également réutiliser l'enregistrement de Parasoft Recorder pour créer automatiquement des tests API, qui peuvent ensuite être réutilisés pour les tests de charge et de performance.

L'intégration de Cucumber permet ensuite aux utilisateurs d'ajouter des définitions d'étape pointant vers ces tests.

Conclusion

BDD permet à toute l'équipe (même aux membres peu techniques de l'équipe) de s'engager dans l'écriture et le test de votre logiciel. Certains des défis associés à BDD, tels que le mappage de texte en anglais simple (alias non technique) au code, peuvent être résolus à l'aide de solutions telles que Parasoft Recorder. Dans l'ensemble, BDD est un excellent guide pour développer la bonne chose de la bonne manière.

Découvrez comment Parasoft peut aider votre équipe de développement de logiciels à adopter et à être plus efficace avec BDD.

 

Article connexe + ressources