geb tutorial browser automation testing using geb tool
Geb (udtales 'jeb') er svaret på udfordringerne ved browserautomatisering. Det er et meget effektivt værktøj til at udføre automatiseringstest over internettet.
Geb stammer fra behovet for at gøre browserautomatisering (oprindeligt til webtest) mindre kompliceret, problemfri og mere effektiv. Det kan bruges til programmering, udpakning af data fra internettet og automatisering af de manuelle webopgaver. Derudover er Geb en cross-browser værktøj til automatiseringstest.
Geb fungerer som et udviklerdrevet værktøj til automatisering af samarbejdet mellem webbrowsere og webindhold. Det kører WebDriver på Groovy-sprog.
Det smukke ved Geb testværktøj er, at det kombinerer de bedste funktioner i Groovy programmeringssprog, jQuery, WebDriver og Page Object Modeling for at give kraftfuld, robust og dynamisk indholdsinspektion, valg og webinteraktion.
Hvad gør Geb unik i forhold til andre værktøjer til automatiseringstest tilgængelig på markedet er dens syntaks. Det svarer til jQuery, der normalt bruges til forespørgsel på HTML-sider let. For det andet har den integreret understøttelse af Page Object-mønsteret.
Geb giver god hjælp til funktionel webtest gennem integration med nogle bredt anvendte og almindelige testplatforme, herunder Spock , Grails, JUnit , Agurk-JVM , TestNG osv. Vi vil se, hvordan Geb kan integreres med Grails framework i den senere del af denne artikel.
Hvad du lærer:
- Praktiske anvendelser
- Fordele
- Forudsætninger
- Kom godt i gang
- Lær med eksempel
- Databasevalideringstest gennem Geb-script:
- Få nyttige metoder i Geb
- Ulemper ved dette værktøj
- Flere ressourcer:
- Konklusion
- Anbefalet læsning
Praktiske anvendelser
Som allerede diskuteret i introduktionen af denne Geb-tutorial kan den bruges:
- Som testværktøj i flere browsere som krom, Firefox, Internet explorer osv. (Det samme automatiseringsscript kan køres i forskellige browsere for at udføre webtest af din applikation.)
- At automatisere brugeraccept og funktionstestsager.
- At automatisere testscenarier oprettet til funktionel eller webtest af enhver applikation.
- Til dækning af test til ende til slut inklusive UI (User Interface) validering og DB (Database) validering.
- Som udviklerværktøj til automatisering af interaktionen mellem en webbrowser og webindhold.
Fordele
- Geb er et gratis, open source-værktøj. Det er licenseret under Apache-licens, version 2.0.
- Nemt og nemt at automatisere webtest.
- Geb's Page Objects og Groovy DSL gør test læselige, i det omfang de næsten ligner almindeligt engelsk.
- Kører testene hurtigt og sparer dermed tid og omkostninger ved testning.
- Kompatibel med forskellige browsere som IE, Firefox, Chrome og HTMLUnit.
- Det udfører testene i den rigtige browser. Det er som om at teste i det virkelige miljø - det, som brugeren ville se.
- Det gør regressionstesten let. Du kan køre Geb automatiserede testsager for at kontrollere, om nogen eksisterende funktionalitet går i stykker efter en rettelse eller ændring i applikationen.
- Mens du bruger Geb til automatiseringstest, kræves der minimale ændringer af testkoder, hvis der er ændringer i brugergrænsefladen i din applikation. Så det reducerer indsatsen og duplikering af kode.
- Det hjælper med 360 graders (eller maksimum) testdækning inden for det enkelte script.
Forudsætninger
Inden vi kommer i gang, skal vi downloade og installere softwaren. I det centrale Maven-lager findes Geb som en enkelt Geb-core-krukke. Klik her for at installere det på din maskine.
Du har brug for ovenstående Geb-core jar, en implementering af en webdriver og selen-support jar for at få Geb til at arbejde på din maskine.
Se nedenstående afsnit om installation og brug i Geb's bog for at installere værktøjet og få det til at køre => Geb installations- og brugsanvisning .
Kom godt i gang
Som allerede diskuteret kan Geb integreres med forskellige testrammer.
Afhængigt af de rammer, du har valgt, skal du installere det relaterede plugin.
For eksempel : Grails ( Gral er en meget berømt ramme for webapplikationer) til at skrive automatiseringstestscript og automatisere testscenarierne. Hvis du ønsker at bruge Geb til din Grails funktionstest, kan du installere det relaterede plugin herfra grails-geb plugin . Dette plugin håndterer baseUrl og rapporterer Dir konfigurationselementer.
Lær med eksempel
Lad mig nu vise, hvordan man skriver et Geb-script for at automatisere et testscenarie.
Tag nedenstående testscenarie:
Test scenario-id | Softwaretesthjælp-1 | Test sag id | Softwaretestningshjælp -1A |
Afslut | |||
Test case beskrivelse | Bekræft Softwaretestinghelp.com-siden gennem søgemaskinen | Status for automatiseringsscript | I gang |
Forudsætning | 1 browser 2. søgemaskine 3. websted - Softwaretestinghelp.com burde eksistere | Forudsat script | NA |
Udførelsestrinene er:
Start google søgemaskine |
Kontroller, om søgemaskinen er indlæst med succes |
Indtast softwaretestinghelp.com i søgefeltet |
Vent på, at resultaterne indlæses |
Kontroller, om det første link i resultaterne henviser til softwaretestinghelp.com |
Hvis ja, skal du åbne linket. |
Vent, indtil webstedet åbnes. |
Her er Geb automatiseringsværktøjsskriptet til ovenstående scenario:
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' } }
Du kan nu prøve at skrive et simpelt GEB-script alene med henvisning til ovenstående eksempel.
Databasevalideringstest gennem Geb-script:
Enhver webautomatiseringstest er opdelt i tre dele:
- UI-validering - Validering af de data, der reflekteres i brugergrænsefladen (frontend) før og efter køringen af automatiserings testscenariet
- DB-validering - Validering af de data, der reflekteres i databasen (backend) før og efter køringen af automatiseringstestscenariet.
- Faktisk testflow / scriptflow.
Geb-scriptet, der er skrevet for at automatisere et testscenarie, kan indeholde koden for alle de ovennævnte tre sektioner.
Geb-scriptet i ovenstående eksempelafsnit var til automatisering af testflow og UI-validering. På samme måde kan du skrive et test script til validering af database.
For enhver DB-valideringstest kan du altid bruge nedenstående skabelon som en oversigt over din kode:
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 }
Få nyttige metoder i Geb
- Når dit testsagsscenarie involverer flere faner og vinduer: Når du støder på et program, der åbner nye vinduer eller faner, For eksempel når du klikker på et link med et målattributsæt, kan du gøre brug af withWindow () og withNewWindow () metoder til at udføre kode i forbindelse med andre vinduer.
- Drevmetoden: Browser klasse indeholder en statisk metode - køre() . Denne metode giver Geb scripting ekstra bekvemmelighed. Alle topopkaldsmetodeopkald og ejendomsadgang antages at være imod browseren.
- At fremsætte anmodninger: Browserinstanser opretholder a baseUrl ejendom, der er brugt til at løse alle relative URL'er. Det foretrækkes normalt at definere dine basis-URL'er med efterfølgende skråstreg og ikke at bruge førende skråstreger på relative URL'er.
- Ændring af siden: Ved hjælp af nyttige side() metoder, er det muligt at ændre sideinstansen uden at fremsætte en ny anmodning.
- Afslutte browseren: Browserobjektet giver Afslut() og tæt() metoder (der blot overfører opgaven til basedriveren).
Ulemper ved dette værktøj
- Født udfører WebDriver på Groovy-sproget. Hele ideen bag dette er at gøre brug af WebDriver lettere og enklere. Så når du bruger Webdriver gennem Geb, understøttes kun Groovy programmeringssprog. Men hvis du bruger det direkte WebDriver , det understøtter mange sprog som Ruby, C #, Python, Java.
- Jeg vil ikke foreslå brugen af Geb til små projekter - Det fungerer fantastisk til enorme opgaver, men tager et hit på små aktiviteter. Hvis din webapplikation ikke indeholder flere sider og formularer, gennem hvilke oplysningerne skal strømme, kan du opdage, at Geb virkelig koster dig ekstra tid, end den sparer.
- Det handler meget specifikt om, hvilket miljø dit webstedsapplikation bruger. Geb kræves for at være godt integreret i et specifikt miljø for at få det til at fungere fint.
Flere ressourcer:
- Tjek den Book of Geb her for detaljeret dokumentation og eksempler.
- Her er et eksempel på et projekt, der viser integration af Geb med korn .
Konklusion
Geb er meget nyttigt ved automatisering af testscenarier. Det er nyttigt at automatisere test af web, funktion og accept af brugere. Det understøtter flere browsere og kan integreres med forskellige rammer. Det kombinerer kraften i WebDriver, elegance ved jQuery Selection, robustheden ved Page Object Modeling og Groovys udtryksevne.
Geb-scripts er både udvikler og brugervenlige, hvilket giver bedre testdækning og accelereret test og samtidig gør det mere effektivt på samme tid.
Om forfatteren: Dette er et gæstepost af Priya K. Hun har 4+ års erfaring inden for IT-tjenester med ekspertise inden for test og support til forskellige applikationer.
Du er velkommen til at sende dine Geb-automatiseringstestforespørgsler i kommentarer.
Anbefalet læsning
- Vejledning til WAVE-tilgængelighedstestværktøj
- Ranorex Tutorial: Et kraftfuldt testværktøj til desktop, web og mobil automatisering
- Sikuli GUI Automation Testing Tool - Beginner's Guide Part # 2
- Parrot QA Tutorial: Cross Browser Functional Testing Tool Review
- Bedste softwaretestværktøjer 2021 (QA Test Automation Tools)
- Dybdegående formørkelsesvejledninger til begyndere
- Hvad er automatiseringstest (ultimativ guide til start af testautomatisering)
- Parasoft SOAtest Tutorial: Scriptless API Test Tool