Construire un cadre d’automatisation des tests évolutif pour votre projet
An INFJ personality wielding brevity in speech and writing.
Supposons que vous soyez relativement nouveau dans l’automatisation des tests et que vous souhaitiez vous impliquer dans la création d’un framework. Dans ce cas, il est important de connaître les composants qui sont nécessaires pour le cadre et comment ils s’emboîtent. Il peut être utile de réfléchir aux besoins et aux objectifs spécifiques de votre projet, ainsi qu’aux contraintes ou limitations dans lesquelles vous travaillez.
Par exemple, si vous êtes un architecte de test, posez-vous ces questions
Et il pourrait y en avoir d’autres.
Dans quelques cas, il existe des frameworks qui ne font jamais vraiment leur travail comme ceux qui ne font aucune différence même lorsque vous les avez désactivés.
Un cadre d’automatisation est plus que de simples outils. Ce sont des personnes et des processus mis en place pour mettre en place un cadre à partir de zéro et permettre aux équipes de fournir plus rapidement une meilleure qualité logicielle.
Nous en parlerons plus en détail dans les sections ci-dessous.
Types de framework d’automatisation des tests
Certains types courants de frameworks de test d’automatisation incluent :
Cadre de test linéaire : Il s’agit du type le plus basique de framework de test d’automatisation, où les cas de test sont exécutés dans une séquence linéaire, les uns après les autres.
Les frameworks de test linéaires peuvent être utiles pour tester des applications avec une architecture relativement simple ou directe. Cependant, ils peuvent ne pas être aussi efficaces pour tester des applications plus complexes ou interconnectées, car ils peuvent ne pas prendre en compte les interactions et les dépendances entre les différentes parties de l’application.
Cadre de test modulaire:Dans ce type de framework, l’application est divisée en modules plus petits, et chaque module est testé séparément avant de les intégrer pour tester l’application complète.
L’avantage d’utiliser un cadre de test modulaire est qu’il permet aux testeurs de se concentrer sur des zones plus petites et plus spécifiques du logiciel, ce qui peut rendre le processus de test plus efficace et efficient. Cela permet également une plus grande flexibilité, car les modules peuvent être testés dans n’importe quel ordre et réutilisés dans différents contextes.
Cependant, un cadre de test modulaire peut ne pas être aussi efficace pour identifier les problèmes qui surviennent lorsque différents modules sont intégrés, car ces problèmes peuvent ne pas être apparents tant que le système complet n’est pas testé. En tant que tel, il est souvent utilisé en conjonction avec d’autres frameworks de test pour fournir une approche de test plus complète.
Cadre de test basé sur les données : Dans ce type de framework, les cas de test sont exécutés en lisant les données de test à partir de sources externes, telles qu’une feuille Excel ou une base de données.
Voici un exemple simplifié d’un cadre de test basé sur les données :
- Le script de test contient les étapes du scénario de test, telles que l’ouverture d’une page Web, la saisie des informations d’identification de connexion et le clic sur un bouton.
- Les données de test sont stockées dans un fichier ou une base de données séparé et contiennent les identifiants de connexion qui seront utilisés comme entrée pour le script de test.
- Le lanceur de test est le composant qui exécute le script de test et lui transmet les données de test.
- Le script de test utilise les données de test comme entrée et exécute les étapes du scénario de test. La sortie du script de test est comparée aux résultats attendus pour déterminer si le test a réussi ou échoué. Les résultats des tests sont généralement stockés dans un fichier ou une base de données séparé.
L’utilisation d’un cadre de test basé sur les données vous permet de créer un script de test unique qui peut être exécuté plusieurs fois avec différents ensembles de données, améliorant ainsi l’efficacité et la flexibilité de votre processus de test.
Cependant, les frameworks de test basés sur les données peuvent être plus complexes à configurer et à maintenir, car ils nécessitent la création et la maintenance d’un fichier de données distinct pour les cas de test. Ils peuvent également être moins efficaces pour identifier les problèmes non liés à l’entrée et à la sortie des données, tels que les problèmes d’interface utilisateur ou de performances.
Cadre de test basé sur des mots clés: Ce type de framework utilise une table de mots clés prédéfinis pour représenter les actions à effectuer dans les cas de test.
Dans cette approche, les mots clés doiventt être connecté aux objets ou aux éléments de l’interface utilisateur auxquels ils correspondent. Cela se fait généralement en créant un référentiel d’objets partagé qui mappe les objets à leurs actions requises. Il convient de noter que ces mots clés peuvent ensuite être réutilisés dans plusieurs scripts de test.
Au fur et à mesure que la suite de tests se développe, la bibliothèque de mots-clés peut devenir volumineuse et difficile à maintenir. Il est important d’avoir un système en place pour suivre les mots-clés et s’assurer qu’ils sont à jour.
Cadre de test hybride: Comme son nom l’indique, ce type de framework combine des éléments de plusieurs frameworks de test d’automatisation.
Un framework d’automatisation des tests hybrides combine les fonctionnalités et les avantages de plusieurs types de frameworks de test afin d’augmenter l’efficacité et la rentabilité des tests d’assurance qualité. En abordant les limites et en utilisant les points forts de divers frameworks de test, les frameworks hybrides offrent une solution complète pour répondre à la demande croissante d’automatisation des tests.
Le cadre approprié doit être choisi en fonction de la nature du projet, de la taille du projet, du type d’application testée et des compétences et de l’expérience de l’équipe de test.
Quel cadre d’automatisation est le meilleur ?
Les entreprises sont passées au framework hybride depuis longtemps, car il englobe les avantages de tous les autres types de frameworks. Les frameworks hybrides les plus populaires sont :
Test NG:
TestNG est un framework de test basé sur Java qui est conçu pour couvrir un plus large éventail de catégories de tests : unitaires, fonctionnels, de bout en bout, d’intégration, etc. Il s’agit d’un outil open source qui peut être utilisé pour écrire et exécuter des cas de test, et il est particulièrement utile pour les tests dans un environnement d’équipe, car il prend en charge l’exécution de tests parallèles et la génération de rapports de test.
Pour utiliser TestNG, vous devrez d’abord l’installer dans votre projet Java. Cela peut généralement être fait à l’aide d’un outil de construction tel que Maven ou Gradle. Une fois TestNG installé, vous pouvez écrire des scénarios de test en utilisant les annotations et l’API de TestNG. Ces cas de test peuvent ensuite être exécutés en exécutant l’exécuteur de test TestNG, qui découvrira et exécutera les tests selon la configuration spécifiée dans un fichier XML TestNG ou via la ligne de commande.
Dans cet exemple, l’annotation @Test marque les méthodes comme cas de test. Lorsque l’exécuteur de test TestNG est exécuté, il découvre et exécute ces méthodes de test.
TestNG fournit également un certain nombre d’autres annotations que vous pouvez utiliser pour contrôler l’exécution de vos cas de test, telles que @BeforeMethod et @AfterMethod, qui peuvent être utilisées pour configurer et démonter les données de test avant et après l’exécution de chaque méthode de test.
Pour exécuter vos tests TestNG, vous pouvez utiliser le plug-in TestNG Eclipse, ou vous pouvez exécuter l’exécuteur de test TestNG à partir de la ligne de commande à l’aide de la commande suivante :
java org.testng.TestNG testng.xml
Le fichier testng.xml est un fichier de configuration XML qui spécifie la suite de tests à exécuter et toutes les options de configuration supplémentaires.
BDD:
Le BDD (Behavior-Driven Development) est une méthodologie de développement logiciel qui vise à réunir les développeurs, les testeurs et les parties prenantes non techniques en encourageant la collaboration et la communication tout au long du processus de développement.
Un framework BDD est un outil ou un ensemble d’outils qui prennent en charge le processus BDD. Ces frameworks fournissent généralement des outils pour écrire et exécuter des tests d’acceptation lisibles par l’homme, qui définissent le comportement du système testé du point de vue de l’utilisateur final.
L’un des frameworks BDD les plus populaires est Cucumber, un outil pour écrire et exécuter des tests d’acceptation dans un langage appelé Gherkin. Les tests Gherkin sont rédigés en anglais courant (ou dans la langue de votre choix) et utilisent une syntaxe simple pour décrire les étapes d’un scénario de test.
Dans cet exemple, les lignes « Fonctionnalité » et « Scénario » définissent le comportement de haut niveau testé, et les lignes suivantes décrivent les étapes individuelles du test en langage clair.
Pour utiliser le framework Cucumber, vous devrez l’installer dans votre projet et écrire vos tests d’acceptation dans Gherkin. Vous devrez également écrire du code pour implémenter les étapes définies dans vos tests d’acceptation, ce qui peut être fait à l’aide de divers langages de programmation.
Une fois vos tests et définitions d’étapes rédigés, vous pouvez exécuter vos tests d’acceptation en exécutant le testeur Cucumber. L’exécuteur de test analysera vos tests Gherkin, exécutera les définitions d’étape et rendra compte des résultats.
Étapes pour créer un cadre d’automatisation des tests en interne
Définissez vos objectifs : Expliquez clairement ce que vous voulez réaliser avec votre infrastructure d’automatisation des tests. Vous souhaitez améliorer la rapidité de vos tests ? Augmenter la fiabilité de vos tests ? Améliorer la productivité de votre équipe ? L’identification de vos objectifs vous aidera à déterminer les fonctionnalités et les capacités que votre framework devrait avoir.
Pointe: Commencez par comprendre la structure et l’environnement de l’application et lancez un projet pilote. Sélectionnez quelques éléments que vous souhaitez automatiser et fixez-vous des objectifs à la fin de cette expérience. Une fois que vous avez atteint ces objectifs, c’est un signe que vos expérimentations sont terminées et que vous pouvez lancer votre projet réel. Ne partez pas dans le but de tout automatiser.
Identifiez les outils et les technologies que vous utiliserez : Choisissez le langage de programmation, l’exécuteur de tests, l’outil de gestion des tests et les autres outils que vous utiliserez pour créer et maintenir votre infrastructure d’automatisation des tests. Tenez compte de facteurs tels que les compétences et l’expérience de votre équipe, le type de logiciel que vous testez et votre budget.
Pointe: Encadrez votre équipe pour s’adapter au changement de paradigme
Développez votre cadre : Créez une conception de haut niveau pour votre infrastructure d’automatisation des tests qui décrit son architecture globale et les relations entre ses différents composants. Cela devrait inclure une description des différentes couches de votre cadre (par exemple, l’interface utilisateur, la logique métier, l’accès aux données), ainsi que les interfaces qui seront utilisées pour communiquer entre ces couches.
Créez des éléments réutilisables, tels que des fonctions d’assistance, des classes utilitaires et des méthodes d’assertion courantes, qui peuvent être utilisés dans plusieurs scripts de test.
Implémenter votre framework: Élaborez un plan détaillé pour l’organisation du cadre, y compris sa conception modulaire, son flux de contrôle, son modèle de conception et la pile technologique à mettre en œuvre. Utilisez les outils et les technologies que vous avez sélectionnés pour créer les différents composants de votre infrastructure d’automatisation des tests. Cela peut impliquer l’écriture de code pour implémenter les différentes couches de votre framework et la création de scripts de test et de données de test.
Conseil : Il faut généralement 4 à 6 mois à des professionnels qualifiés pour mettre en œuvre un cadre, les aspects techniques représentant environ 50 % du travail requis. Travailler avec experts en tests automatiséspeut raccourcir le chemin vers la mise en œuvre et éviter les faux pas courants.
Journalisation et rapports: Implémentez un système de journalisation dans le cadre pour enregistrer des informations telles que la progression de l’exécution des tests, les résultats des tests et tous les messages d’erreur qui surviennent pendant les tests.
Intégrez un système de rapport dans le cadre pour générer des rapports d’exécution de test avec un aperçu des résultats des tests, y compris des détails tels que le nombre de cas de test réussis/échoués, le temps d’exécution des tests et les erreurs qui se sont produites.
Maintenir et mettre à jour votre cadre: Au fur et à mesure que votre logiciel évolue et que vos besoins de test changent, vous devrez maintenir et mettre à jour votre infrastructure d’automatisation des tests.
Rendre le cadre d’automatisation des tests plus efficace
Utiliser une approche modulaire: Divisez vos tests en unités plus petites et indépendantes qui peuvent être combinées pour former des tests plus grands. Cela facilitera la maintenance et la mise à jour de vos tests.
Évaluez la facilité d’automatisation des tests pour chaque service et analysez les avantages de l’automatisation pour chaque service. Tenez compte de facteurs tels que la maintenabilité et les limites de l’automatisation dans ce processus.
Utiliser un langage de programmation facile à apprendre et a une grande communauté d’utilisateurs, tels que Python ou Java. Cela vous permettra de trouver plus facilement de l’aide et des ressources lorsque vous en aurez besoin. Essayez d’utiliser un langage que les développeurs utilisent également.
Envisagez d’utiliser des infrastructures d’automatisation des tests spécialement conçues pour vos besoins de test. Par exemple, si vous testez une application Web, vous pouvez utiliser un framework comme Selenium.
Utiliser un lanceur de test ou un outil de gestion de test pour exécuter vos tests. Des outils tels que PyTest, JUnit ou TestNG peuvent vous aider à exécuter vos tests plus efficacement et à générer des rapports sur les résultats.
Utiliser un système de contrôle de version comme Git pour suivre les modifications apportées à votre code de test. Cela facilitera la collaboration avec les autres et annulera les modifications si nécessaire.
Mettre en œuvre l’intégration continue (CI)pour exécuter automatiquement vos tests chaque fois que vous apportez des modifications à votre code. Configurez des tests de fumée pour chaque build et chaque régression tous les soirs. Cela vous aidera à détecter et à résoudre les problèmes dès le début, avant qu’ils ne deviennent de plus gros problèmes. Les outils CI populaires incluent : GitLab, CircleCI, les pipelines Azure, TravisCI…
Utiliser les outils de gestion des données de testpour stocker et gérer vos données de test. Cela vous aidera à organiser vos tests et à vous assurer que vous utilisez les données les plus récentes.
Utiliser un outil de rapport de test pour générer des rapports clairs et faciles à comprendre sur les résultats de vos tests. Il devrait être facile de :
- Voir les traces de pile d’exceptions
- Utiliser rapidement les assertions ayant échoué et les entrées/journaux associés
- Bon aperçu des métriques réussite/échec/sauté
- Devrait avoir une comparaison des résultats historiques
Certains cadres de création de rapports disponibles incluent les rapports Gradle, les rapports Cucumber, les portails de rapports, Allure.
Fondements d’un cadre d’automatisation évolutif : vue Zuci
Nous avons demandé à notre responsable SDET, Dhanalakshmi Tamilarasan, quelle devrait être la base d’un cadre d’automatisation des tests évolutif et voici ce qu’elle a énuméré.
Intéressé à regarder une vidéo à la place? Cliquez ci-dessous pour regarder
Définir la portée
Allez-vous automatiser une application Web ou mobile ou une API ou une base de données ? Assurez-vous que l’infrastructure d’automatisation peut gérer toutes ces applications testées.
Automatiser les scénarios de test critiques : Est-ce que ça va être long ou petit ?
Type de demande: Cela va-t-il consommer beaucoup de données ? Dois-je exécuter des scénarios de test pour plusieurs ensembles de données ?
Testez-vous sur ces paramètres et définissez votre périmètre de test et votre framework.
Flexibilité du code
Quelle est la flexibilité de votre code pour que vous puissiez ajouter/mettre à jour tout nouveau code et avec quelle facilité puis-je maintenir le code existant
Intégration continue
Dans le monde agile d’aujourd’hui, nous obtenons un nombre (n) de builds et les scripts d’automatisation doivent être exécutés quotidiennement. Alors, regardez à quel point il est facile pour votre framework de s’intégrer au pipeline CI/CD.
Tests multiplateformes
Pour effectuer des tests réactifs en automatisant les applications Web et mobiles prenant en charge une combinaison de navigateurs/systèmes d’exploitation/appareils, votre infrastructure d’automatisation doit pouvoir s’intégrer à des plates-formes basées sur le cloud telles que Sauce Labs, Browser Stack.
Gestion des tests
Les outils de gestion des tests comme JIRA et Test rail sont importants pour suivre les activités de test, analyser les résultats, etc. Ainsi, votre cadre devrait vous permettre de mettre à jour automatiquement les résultats des tests sans assistance/intervention manuelle.
Exécution parallèle
Un cadre d’automatisation doit prendre en charge l’exécution parallèle de suites de tests afin que les résultats des tests soient disponibles rapidement. Des résultats de test rapides signifient une détection rapide des défauts.
Prise en charge de la localisation
Aujourd’hui, la plupart des applications sont conçues avec la localisation pour offrir une expérience transparente aux utilisateurs du monde entier. Nous devons nous assurer que le framework est capable de gérer différentes langues.
Dépôt de test
Le cadre d’automatisation devrait avoir des dispositions pour fournir des rapports de test à partir de différents outils de rapport de test afin qu’il devienne pour l’équipe de gestion des tests.
Dernières pensées
Très souvent, lorsqu’il y a une restructuration d’équipe ou lorsque quelqu’un de nouveau rejoint l’équipe, il y a cette envie de réécrire la base de code et de construire un framework à partir de zéro.
Et bien souvent, c’est la base de code copier-coller de l’entreprise précédente sans comprendre le contexte de l’équipe ou de l’entreprise actuelle. Si vous vous retrouvez à le faire, faites une pause.
La meilleure façon d’aborder cela est axée sur le contexte, aussi simple que cela puisse paraître. Vous devriez parler aux membres de votre équipe et leur faire parcourir tous les processus, outils, versions, CRM et tout cela.
Envisagez de faire ce qui est le mieux pour votre équipe et votre projet tout en gardant à l’esprit les principes sous-jacents de l’automatisation et des frameworks.
Si les tests sont un moyen de comprendre la qualité du logiciel, l’automatisation n’est qu’un moyen vers un moyen.– James Bach
Vous cherchez à améliorer votre couverture d’automatisation des tests ? Jetez un oeil à Zuciservices d’automatisation des tests et découvrez comment vous pouvez tirer parti de Zuci pour les besoins de votre entreprise.