geb tutorial browser automation testing using geb tool
Geb (prononcé «jeb») est la réponse aux défis de l'automatisation des navigateurs. C'est un outil très efficace pour effectuer des tests d'automatisation sur le Web.
Geb est né de la nécessité de rendre l'automatisation du navigateur (initialement pour les tests Web) moins compliquée, sans tracas et plus efficace. Il peut être utilisé pour la programmation, l'extraction de données du Web et l'automatisation des tâches Web manuelles. De plus, Geb est un cross-browser outil de test d'automatisation.
Geb fonctionne comme un outil conçu par les développeurs pour automatiser la collaboration entre les navigateurs Web et le contenu Web. Il exécute le WebDriver en langage Groovy.
La beauté de l'outil de test Geb est qu'il combine les meilleures fonctionnalités du langage de programmation Groovy, jQuery, WebDriver et la modélisation d'objets de page pour fournir une inspection, une sélection et une interaction Web puissantes, robustes et dynamiques.
Ce qui rend Geb unique par rapport aux autres outils de test d'automatisation disponible sur le marché est sa syntaxe. Il est similaire à jQuery qui est normalement utilisé pour interroger facilement les pages HTML. Deuxièmement, il a intégré la prise en charge du modèle d'objet de page.
Geb fournit une aide précieuse pour les tests Web fonctionnels grâce à l'intégration avec certaines plates-formes de test largement utilisées et courantes, notamment Spock , Grails, JUnit , Concombre-JVM , TestNG, etc. Nous verrons comment Geb peut être intégré au framework Grails dans la dernière partie de cet article.
Ce que vous apprendrez:
- Utilisations pratiques
- Avantages
- Conditions préalables
- Commencer
- Apprendre avec l'exemple
- Test de validation de la base de données via le script Geb:
- Peu de méthodes utiles en Geb
- Inconvénients de cet outil
- Plus de ressources:
- Conclusion
- lecture recommandée
Utilisations pratiques
Comme déjà discuté dans l'introduction de ce tutoriel Geb, il peut être utilisé:
- En tant qu'outil de test sur plusieurs navigateurs tels que Chrome, Firefox, Internet Explorer, etc. (Le même script d'automatisation peut être exécuté sur différents navigateurs pour effectuer des tests Web de votre application.)
- Pour automatiser l'acceptation des utilisateurs et les cas de test fonctionnels.
- Pour automatiser les scénarios de test créés pour les tests fonctionnels ou Web de toute application.
- Pour couvrir les tests de bout en bout, y compris la validation de l'interface utilisateur (interface utilisateur) et la validation de la base de données (base de données).
- En tant qu'outil de développeur pour automatiser l'interaction entre un navigateur Web et du contenu Web.
Avantages
- Geb est un outil gratuit et open-source. Il est sous licence Apache, version 2.0.
- Facile et simple à automatiser les tests Web.
- Les objets de page de Geb et Groovy DSL rendent les tests lisibles dans la mesure où ils ressemblent presque à un anglais ordinaire.
- Exécute les tests rapidement et économise ainsi le temps et le coût des tests.
- Compatible avec différents navigateurs comme IE, Firefox, Chrome et HTMLUnit.
- Il exécute les tests dans le navigateur réel. C'est comme si on testait dans l'environnement réel - celui que l'utilisateur verrait.
- Cela facilite les tests de régression. Vous pouvez exécuter les cas de test automatisés Geb pour vérifier si une fonctionnalité existante est interrompue après un correctif ou une modification dans l'application.
- Lors de l'utilisation de Geb pour les tests d'automatisation, des modifications minimales du code de test sont requises en cas de modification de l'interface utilisateur dans votre application. Ainsi, cela réduit l'effort et la duplication du code.
- Il permet une couverture de test à 360 degrés (ou maximum) dans le script unique.
Conditions préalables
Avant de commencer, nous devons télécharger et installer le logiciel. Dans le référentiel central de Maven, Geb est disponible sous la forme d'un seul pot Geb-core. Cliquez ici pour l'installer sur votre machine.
Vous aurez besoin du jar Geb-core ci-dessus, d'une implémentation de pilote Web et du jar de prise en charge du sélénium pour que Geb fonctionne sur votre machine.
Veuillez vous référer à la section d'installation et d'utilisation ci-dessous du livre de Geb pour installer l'outil et le faire fonctionner => Manuel d'installation et d'utilisation Geb .
Commencer
Comme déjà discuté, Geb peut être intégré à différents frameworks de test.
Selon le framework que vous avez choisi, vous devrez installer le plugin associé.
Par exemple : Grails ( Grails est un framework très connu pour les applications web) pour écrire des scripts de test d'automatisation et automatiser les scénarios de test. Si vous souhaitez utiliser Geb pour vos tests fonctionnels Grails, vous pouvez installer le plugin associé à partir d'ici plugin grails-geb . Ce plugin gère le baseUrl et reportsDir éléments de configuration.
Apprendre avec l'exemple
Laissez-moi maintenant vous montrer comment écrire un script Geb pour automatiser un scénario de test.
Prenez le scénario de test ci-dessous:
ID du scénario de test | Aide au test du logiciel-1 | ID de cas de test | Aide au test du logiciel -1A |
Sortir | |||
Description du scénario de test | Vérifier la page Softwaretestinghelp.com via le moteur de recherche | État du script d'automatisation | En cours |
Prérequis | 1 Navigateur 2. moteur de recherche 3. site Web - Softwaretestinghelp.com devrait exister | Script pré-requis | N / A |
Les étapes d'exécution sont:
Lancer le moteur de recherche Google |
Vérifiez si le moteur de recherche a été chargé avec succès |
Entrez softwaretestinghelp.com dans la zone de recherche |
Attendez que les résultats se chargent |
Vérifiez si le premier lien dans les résultats dirige vers softwaretestinghelp.com |
Si oui, ouvrez le lien. |
Attendez que le site Web s'ouvre. |
Voici le script de l'outil d'automatisation Geb pour le scénario ci-dessus:
import geb.Browser Browser.drive { go 'http://google.com/' //verify if we are on the correct page assert title=='Google' //enter softwaretestinghelp.com into the search field $('input',name:'q').value('softwaretestinghelp.com') //wait for the change to results page to happen //(google updates the page dynamically without a new request) waitFor{ title.endsWith('Google Serach')} //is the first link to softwaretestinghelp.com? def firstLink = $('li.g,0).find('a.l') assert firstLink.text()= ='Software Testing Help - A Must Visit Software Testing Portal' //click the link firstLink.click() //wait for Google's javascript waitFor { title = ='Software Testing Help - A Must Visit Software Testing Portal' } }
Vous pouvez maintenant essayer d'écrire un simple script GEB par vous-même en faisant référence à l'exemple ci-dessus.
Test de validation de la base de données via le script Geb:
Tout test d'automatisation Web est divisé en trois parties:
- UI Validation – Validation des données reflétées sur l'interface utilisateur (front-end) avant et après l'exécution du scénario de test d'automatisation.
- Validation DB - Validation des données reflétées dans la base de données (backend) avant et après l'exécution du scénario de test d'automatisation.
- Flux de test réel / flux de script.
Le script Geb écrit pour automatiser un scénario de test peut contenir le code de toutes les trois sections ci-dessus.
Le script Geb dans la section d'exemple ci-dessus était destiné à automatiser le flux de test et la validation de l'interface utilisateur. De même, vous pouvez écrire un script de test pour la validation de la base de données.
Pour tout test de validation DB, vous pouvez toujours utiliser le modèle ci-dessous comme aperçu de votre code:
def validateDB(/*define all variables here*/) { def errorMessages = '' try { Configuration conf = (new ConfigurationLoader()).getConf() def sql = Sql.newInstance(conf.readValue('dbPath', ''), conf.readValue('dbUserName', ''), conf.readValue('dbPassword', ''), conf.readValue('dbDriverName', '')) /* Populate any required variables */ } /* Give print commands here to print required values */ def qry = /* select statement to pull all required values from database */ println 'SQL=$qry' sql.eachRow(qry) { row -> /* ‘if’ block to perform validation and returning error in case of any variations */ } catch(Exception e) { println 'EEEE=$e' } return errorMessages }
Peu de méthodes utiles en Geb
- Lorsque votre scénario de test implique plusieurs onglets et fenêtres: Chaque fois que vous rencontrez une application qui ouvre de nouvelles fenêtres ou onglets, Par exemple en cliquant sur un lien avec un ensemble d'attributs cible, vous pouvez utiliser withWindow () et withNewWindow () méthodes pour exécuter du code dans le contexte d'autres fenêtres.
- La méthode d'entraînement: La classe Browser contient une méthode statique - conduire() . Cette méthode donne une commodité supplémentaire aux scripts Geb. Tous les appels de méthode de niveau supérieur et tous les accès aux propriétés sont supposés être contre le navigateur.
- Faire des demandes: Les instances de navigateur respectent une baseUrl propriété utilisée pour résoudre toutes les URL relatives. Il est généralement préférable de définir vos URL de base avec des barres obliques à la fin et de ne pas utiliser de barres obliques sur les URL relatives.
- Changement de page: Avec l'aide d'utiles page() méthodes, il est possible de modifier l'instance de page sans faire une nouvelle demande.
- Quitter le navigateur: L'objet navigateur fournit quitter() et Fermer() méthodes (qui transfèrent simplement la tâche au pilote de base).
Inconvénients de cet outil
- Né exécute WebDriver dans la langue Groovy. L'idée derrière tout cela est d'utiliser WebDriver plus facile et plus simple. Ainsi, lorsque vous utilisez Webdriver via Geb, seul le langage de programmation Groovy sera pris en charge. Mais, si vous utilisez directement WebDriver , il prend en charge de nombreux langages comme Ruby, C #, Python, Java.
- Je ne suggérerais pas l'utilisation de Geb pour de petits projets - Cela fonctionne très bien pour des tâches énormes mais prend un coup sur les petites activités. Si votre application Web ne contient pas plusieurs pages et formulaires à travers lesquels les informations doivent circuler, vous pouvez découvrir que Geb vous coûte vraiment plus de temps qu'il n'épargne.
- L'environnement utilisé par votre application de site Web est très particulier. Geb doit être bien intégré dans un environnement spécifique pour qu'il fonctionne correctement.
Plus de ressources:
- Vérifiez Livre de Geb ici pour une documentation détaillée et des exemples.
- Voici un exemple de projet montrant le intégration de Geb avec grails .
Conclusion
Geb est très utile pour automatiser les scénarios de cas de test. Il est utile pour automatiser les tests d'acceptation Web, fonctionnels et utilisateurs. Il prend en charge plusieurs navigateurs et peut être intégré à différents frameworks. Il combine la puissance de WebDriver, l'élégance de jQuery Selection, la robustesse du Page Object Modeling et l'expressivité de Groovy.
Les scripts Geb sont à la fois conviviaux pour les développeurs et les utilisateurs, offrant une meilleure couverture de test et des tests accélérés tout en le rendant plus efficace en même temps.
A propos de l'auteur: Ceci est un article invité par Priya K. Elle a plus de 4 ans d'expérience dans les services informatiques avec une expertise dans les tests et le support pour diverses applications.
N'hésitez pas à publier vos requêtes de test d'automatisation Geb dans les commentaires.
lecture recommandée
- Tutoriel sur l'outil de test d'accessibilité WAVE
- Tutoriel Ranorex: un puissant outil de test d'automatisation de bureau, Web et mobile
- Outil de test d'automatisation de l'interface graphique Sikuli - Guide du débutant, partie 2
- Tutoriel Parrot QA: Revue de l'outil de test fonctionnel Cross Browser
- Meilleurs outils de test de logiciels 2021 (Outils d'automatisation des tests QA)
- Tutoriels Eclipse détaillés pour les débutants
- Qu'est-ce que les tests d'automatisation (Guide ultime pour démarrer l'automatisation des tests)
- Tutoriel Parasoft SOAtest: outil de test d'API sans script