Découvrez comment la solution Parasoft Continuous Quality permet de contrôler et de gérer les environnements de test pour fournir des logiciels de haute qualité en toute confiance. Inscrivez-vous pour la démo >>

BLOG

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

2021 Guide des cadres de test du développement piloté par le comportement (BDD) Temps de lecture : 6 minutes

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

Le développement axé sur le comportement, ou BDD, est une branche de principes définis par Test Driven Development (TDD). Dans TDD, nous construisons la chose correctement. Chez BDD, nous nous assurons de construire la bonne chose. Les principes et technologies mis à profit dans BDD ont été largement adoptés dans les tests fonctionnels. Un cadre de test BDD inclut des logiciels tels que Cucumber et SpecFlow, qui ont permis aux propriétaires de produits non techniques de définir le comportement des applications sous forme de texte lisible par l'homme. Au fur et à 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 avec un 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 le but 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 métier 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é.

Réduisez le coût de maintenance continue de votre code de test BDD

Mais l'adoption de BDD n'est pas une aventure 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 à la structure BDD, vous pouvez compter sur des solutions de test fonctionnel qui s'intègrent à la structure 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 lors des 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 non techniques de l'équipe. 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 précieux 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, les économies de coûts sont 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, le recours aux développeurs pour faciliter l'infrastructure de test BDD diminue.

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

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.

Outils BDD

L'une de vos plus grandes questions sur les outils BDD jusqu'à présent a probablement été: 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 être une étape cruciale pour augmenter le retour sur investissement de 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 la qualité et la livraison, elles se tournent souvent vers des fournisseurs comme Parasoft, spécialisés dans le développement de logiciels et l'automatisation des tests depuis plus de 30 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 à des éléments de travail, des fonctionnalités ou une user story. Ces métadonnées peuvent vivre avec le test et être liées à la fonction initiale de traçabilité à travers 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.

Top 10 des outils de test de l'interface utilisateur Web: tests automatisés de l'interface utilisateur Web

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.

Texte blanc sur fond bleu marine: Comment être plus efficace avec le développement axé sur le comportement (BDD) avec un bouton rouge ci-dessous indiquant Regarder le webinaire à la demande.

Écrit par

Grigori Trofimov

Grigori Trofimov est un architecte de solutions chez Parasoft, fournissant des services de conseil pour les solutions de test de Parasoft aux prospects, clients et partenaires. Il a récemment pris la parole lors de conférences sur le thème de la virtualisation des services et du déploiement d'environnements jetables dans le cloud.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.