Selendroid Tutorial for begyndere med eksempel
Har du nogensinde udviklet en Android applikation og udgive den til Google Play? Hvad vil du gøre, hvis du får en brugeranmeldelse som -
Når du udgiver en app til Google Play, skal den være godt testet for at undgå de potentielle fejl. Der er et væld af testscenarier, der bør udføres, før du udgiver en app. For at gemme Test indsats, har du brug for et testværktøj. Et af de bedste testværktøjer til Android app er Selendroid.
Hvad er Selendroid?
Selendroid er en testautomatiseringsramme for multi-type mobilapplikation: indfødte og hybrid Android app og mobil web.
Du kan skrive testene ved hjælp af Selenium 2 klient-API'er. Fordi Selendroid stadig genbrug af det eksisterende Selenium infrastruktur til nettet
Selendroid er et kraftfuldt testværktøj. Den kan bruges på emulatorer og ægte enheder
Hvorfor har vi brug for Selendroid?
Selendroid er et fantastisk testværktøj. Men du kan stadig tvivle på dets anvendelighed.
Dette afsnit vil introducere de vigtige funktioner i Selendroid at besvare spørgsmålet, hvorfor du har brug for Selendroid.
- Du kan teste applikationen under test vha Selendroid uden nogen ændring af appen. Du skal bare bruge den binære fil (APK) installeret på computeren. For at installere den binære fil på enheden skal testappen og mobilappen signeres med samme fortegnsnøgle
- Selendroid test app kan interagere med flere enheder eller simulatorer samtidigt. Det er en stor fordel ved Selendroid. Så du kan teste din app med forskellige Android enheder for at kontrollere kompatibilitet.
- Selendroid kan simulere menneskelige brugerhandlinger på en app, såsom berøring, swipe, træk og slip på enheder
- Du kan ændre hardwareenhederne (tilslut og frakoble) under testen uden at genstarte eller stoppe testen. Selendroid genkender de nye enheder automatisk
- Svarende til Android API version op, Selendroid understøtter også det nye Android API (fra API 10 til API 19)
- Selendroid har også et eller andet indbygget inspektørværktøj til at hjælpe dig med at identificere UI-elementet i en applikation, der testes. For eksempel ID-knappen, tekstfeltet, tekstvisningen...
Selendroid Architecture
Selendroid er baseret på den Android instrumenteringsramme. Selendroid prøver er skrevet baseret på Selenium Web driver klient API, så det understøtter fuld integration med nuværende Selenium rammer.
Følgende figur beskriver arkitekturen af Selendroid
Selendroid indeholder 4 hovedkomponenter:
- Web Driver Client – Den Java klientbibliotek baseret på Selenium. Dette bibliotek skal installeres på computeren (som bruges til at udvikle testcases)
- Selendroid-Server – Serveren, der kører, skal være i den app, der testes på Android enhed eller simulator. Dette er hovedkomponenterne i en Selendroid arkitektur
- Android Driver-app – En indbygget Android driver, Web View-app for at teste mobilnettet.
- Selendroid-Standalone – Denne komponent bruges til at installere Selendroid server og applikationen under test (AUT)
Kom i gang med Selendroid
Du har allerede kendt vigtigheden af Selendroid. Lad os nu få hænderne snavsede med Selendroid.
Der er 3 trin, der skal udføres før den første test med Selendroid
Opsætning af a Selendroid miljø
Selendroid kan arbejde på Window, Linux og Mac OS. I denne tutorial vil vi opsætte Selendroid i Windows OS.
Før du bruger Selendroid, skal du installere følgende pakke først
- Java SDK (minimum 1.6)
Du skal acceptere licensaftalen og downloade java-installationsprogrammet (Vælg x64 eller x86 base på dit OS)
Download og installer Java SDK som normal software
- Seneste version af Android SDK
- Din computer skal have mindst én Android Virtual Device (AVD), eller en rigtig Android enhed tilsluttet pc'en.
- Selendroid Standalone med afhængigheder, Selendroid Klientog Selenium Klient
- Eclipse software
- Konfigurer JAVA_HOME og ANDROID_HOME
Trin 1) Højreklik på Computer i vinduet -> Ejendomme -> Avanceret systemindstilling
Trin 2) Vinduet Systemegenskaber, vælg fanen Avanceret -> Miljøvariabler
Trin 3) I vinduet Miljø, klik på Ny -> Indtast en variabel ANDROID_HOME som følger
Variabelværdien er stien til android-sdks, som du allerede har installeret.
Find systemvariablen Path -> Redigere -> Tilføj følgende linje efter den aktuelle linje
I lighed med ANDROID_HOME, tilføje ny variabel JAVA_HOME med værdi som nedenfor
Værdien er vejen til din Java JDK installation
Trin 4) Genstart din pc -> Udført
Sådan starter du Selendroid
Trin 1) Få en applikation under test
Du kan bruge eksisterende Selendroid test app for at kontrollere, hvordan Selendroid arbejder (Link for at prøve applikation under test)
Når en download er færdig, skal du kopiere denne APK og ovenstående Selendroid Enkeltstående krukke fil til en mappe med navnet "Guru99″
Trin 2) Start Selendroid
Åbn terminalen på Windows & naviger til mappen Guru99 oprettet i trin 1.
Kør følgende kommando
Outputtet vises som følgende
Efter at have kørt denne kommando, Selendroid-standalone HTTP-server starter! Standardportnummeret for denne server er 4444. Al hardwareenhed, samt Android Virtuel enhed, vil blive scannet og genkendt automatisk. Selendroid vil identificere Android målversion og enhedsskærmstørrelse.
At kontrollere Android målversionen såvel som enhedsoplysningerne, kan du starte følgende URL på en browser: http://localhost:4444/wd/hub/status
.
Selendroid grundlæggende kommando
Dette afsnit introducerer dig nogle grundlæggende Selendroid-Fristående kommandolinje. Du kan bruge dem til at konfigurere Selendroid testmiljø
- Indstilling af port for Selendroid
Standardporten for Selendroid er 4444. Men du kan skifte til en anden port ved at tilføje en parameter til kommandoen for at starte Selendroid
Parameter: -port [portnummer]
For eksempel:
I ovenstående kommando er 5555 den nye port.
Så URL'en til at kontrollere Android målversionen ændres til: http://localhost:5555/wd/hub/status
- Angiv placeringen af applikationen under test (binær APK-fil). Selendroid krævede ofte den absolutte sti til denne fil
Parameter: -app [filsti]
For eksempel:
I ovenstående kommando er Selendroid find automatisk den binære filbase på "C:\Guru99App.apk" for at få oplysningerne om den applikation, der testes.
Tjek URL'en
http://localhost:4444/wd/hub/status
, vil du se disse oplysninger - Skift porten Selendroid bruger til at kommunikere med instrumenteringsserver. Selendroid bruger port 8080 som standard
Parameter: -selendroidServerPort [portnummer]
Eksempel
Porten er nu ændret til 9000
- Skift timeout for at starte emulatorer. Enheden er millisekunder.
Parameter: -timeoutEmulatorStart
Som standard Selendroid vil vente 300,000 millisekunder, indtil emulatoren starter. Du kan skifte til ny timeout (200,000 ms) ved kommando
Efter dette tidspunkt er vores udløbet, hvis emulatoren ikke kan starte, vil den Selendroid vil kaste undtagelsesfejlen (Der opstod en fejl under søgning efter enheder/emulatorer.) og derefter stoppe med at køre
- Når du starter Selendroid kommando på terminal, vil du se en log udskrevet på skærmen. Du kan ændre den type log, du ser, ved at tilføje følgende parameter
Parameter: -logLevel [type af log]
Logniveauværdierne er ERROR, WARNING, INFO, DEBUG og VERBOSE. Standard: FEJL.
For eksempel sæt Selendroid for kun at udskrive ADVARSEL-loggen kan du bruge denne kommando
Selendroid udskriv kun ADVARSEL-loggen
Start din første test med Selendroid
Dette afsnit er en trin for trin guide til at oprette dit første testscript ved hjælp af Selendroid
Antag, at vi har en Android applikation under testnavn Guru99App. Applikationen indeholder et tekstfelt og et knapnavn "Vis tekst".
Vi er nødt til at udføre følgende Test sag ved brug af Selendroid
Test Cases | Betingelse | Forventet output |
---|---|---|
|
Den binære applikation til den testede er tilgængelig
En enhed er tilsluttet pc |
Teksten "Tekst Vis her" ændres til teksten
hvilken bruger indtaster i et tekstfelt |
Trin 1) Opret en Java projekt i Eclipse
Trin 2) Tilsæt selen og Selendroid jar-fil i eclipse-miljøer
Højreklik på Guru99Test Project -> Byg sti -> Tilføj ekstern ArchiVes
Naviger til den mappe, der gemte jar-filerne
Der er 3 jar-filer, der skal tilføjes
- selendroid-client-0.10.0.jar : Selendroid java klientbibliotek
- selendroid-standalone-0.11.0-med-afhængigheder: Selendroid selvstændigt serverbibliotek
- selen-java-2.40.0.jar : Selenium Web driver bibliotek
Vælg alle -> Vælg Åbn for at tilføje en jar-fil til projektet
Trin 3) efter tilføjelse af ovenstående bibliotek vil disse biblioteker blive tilføjet til referencebibliotekerne for testprojektet. En tester kan bruge disse bibliotekers API'er til at udvikle testprogrammet
Opret pakken "com.guru.test" og tilføj java-filen "Guru99Test.java" som nedenfor
Højreklik på Guru99Test -> Ny -> Pakke
Skriv com.guru.test i feltet Navn på Ny Java Pakkedialog à Afslut
Eclipse vil oprette listemapper og undermapper som denne i kildekodestrukturen
Trin 4) Installer TestNG forum Eclipse
In Eclipse, Hjælp -> Installer ny software, klik på Tilføj i installationsdialogen, og indtast følgende
- Navn: TestNG
- Beliggenhed: https://github.com/selendroid/selendroid
Tryk på OK -> Næste for at installere TestNG
Trin 5) Kopier Guru99App.apk til mappen Test App
Trin 6) Få id'et for en applikation under test.
Antag, at vi har et APK-filnavn Guru99App.apk. Følg trinnet, som er beskrevet i forrige afsnit, udfør kommandoen på terminalen
Åbn følgende link i en browser: http://localhost:4444/wd/hub/status
.
Oplysningerne om enheden vises, kopier appId-værdien "com.guru99app:1.0"
Trin 7) Åbn filen Guru99Test.java (i eksempelkoden) og skift som følger
Til at oprette en ny testsession med Selendroid, skal du angive app-id'et i formatet: com.guru99app:1.0. Denne app-id kan identificeres i trin 6. Hvis du ikke indstiller app-id'et til at matche Android enhed, vil testsessionen give en fejl og vil ikke starte.
Efter initialisering af den fundne enhed, Selendroid opretter en tilpasset selendroid-server og installerer Selendroid server på den
Selendroid installerer også applikationen under test og starter selendroid-serveren på enheden
Efter vellykket initialisering af testsessionen startes testkommandoen med at udføre på en enhed. (Såsom indtastning af tekst, tryk på knappen...). Hvis testen tilføjer testsessionen, stopper emulatoren automatisk
Trin 8) Start den nye testsession
Start Selendroid server ved at bruge følgende kommando på terminal som trin 6
Efter Selendroid Server startet, åbn prøvetestprojektet Guru99test på Eclipse, indstil et brudpunkt ved linje 77 i filen Guru99Test.java ved at dobbeltklikke til linje 77 -> En prik vises som nedenfor
Start en testsession ved at højreklikke for at Guru99Test-projekt -> Debug As -> Testng Test.
En testsession starter som nedenfor
Trin 9) Få id'et for GUI-elementet for en applikation, der testes
Når testsessionen er startet, skal du åbne browseren, navigere til URL'en http://localhost:4444/inspector
Du vil se, at applikationen under test lanceres som nedenfor
Brug musen til hvert UI-element i AUT (knap, tekstfelt, tekstetiket), ID'et for hvert element fremhæves i højre rude
Efter dette trin kan du få ID'et for hvert ovenstående UI-element
- Knap Vis tekst-id: "btnVis"
- Tekstfelt-id: "edtText"
- Etikettekst-id: "txtView"
Disse ID'er vil blive brugt i næste trin
Trin 10) Gå ind i testprogrammet som nedenfor
Et testprogram vha Selendroid indeholder 3 sektioner
Opsætningstest:
Følgende er koden for opsætningstest, den vil konfigurere betingelsen for en testsession. I tilfælde af en fejl, Selendroid vil kaste undtagelsen, og test-appen stopper.
Koden inkluderer kommentarerne til at forklare hver udsagn.
package com.guru.test; import io.selendroid.SelendroidCapabilities; import io.selendroid.SelendroidConfiguration; import io.selendroid.SelendroidDriver; import io.selendroid.SelendroidLauncher; import io.selendroid.device.DeviceTargetPlatform; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.testng.Assert; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; /** * @author Guru99 Test App using Selendroid * Application under test: Guru99App * */ public class Guru99Test { //Declare web driver variable private WebDriver driver; /** * Setup the environment before testing * @throws Exception */ @BeforeSuite public void setUp() throws Exception { //Start selendroid-standalone during test SelendroidConfiguration config = new SelendroidConfiguration(); // Add the selendroid-test-app to the standalone server config.addSupportedApp("Guru99App.apk"); //start the standalone server SelendroidLauncher selendroidServer = new SelendroidLauncher(config); selendroidServer.launchSelendroid(); // Create the selendroid capabilities SelendroidCapabilities capa = new SelendroidCapabilities(); // Specify to use selendroid's test app capa.setAut("com.guru99app:1.0"); // Specify to use the Android device API 19 capa.setPlatformVersion(DeviceTargetPlatform.ANDROID19); // Don't request simulator, use real device capa.setEmulator(false); //capa.wait(10000000); // Create instance of Selendroid Driver driver = new SelendroidDriver(capa); }
Udfør test
Nedenfor er koden til at udføre en test. Koden inkluderer kommentarerne
Her er testtrinene igen
- Indtast teksten "Hej Guru"
- Klik på Vis tekstknap
- Vent et øjeblik
- Bekræft, at appen viser teksten, når brugeren indtaster i et tekstfelt (f.eks. Vis teksten "Hej Guru")
/** * Start execute the test case * 01. Enter the text "Selendroid" to the textfield * 02. Press OK button * @throws Exception */ @Test public void selendroidTest() throws Exception { // Print the log System.out.print("Start executing test"); // Find the input text field on screen // The id of this text field was get from step 9 WebElement inputField = driver.findElement(By.id("edtText")); // Verify that the text field enabled so user can enter text Assert.assertEquals("true", inputField.getAttribute("enabled")); // Enter a text to text field inputField.sendKeys("Hello Guru"); // click Show Text button // The id of this button was get from step 9 WebElement button = driver.findElement(By.id("btnShow")); button.click(); // Delay time to take effect Thread.sleep(5000); //Find the label "Text Show Here" on screen // The id of this label was get from step 9 WebElement txtView = driver.findElement(By.id("txtView")); //Get the text display on screen String expected = txtView.getText(); // Verify that the text which user enter on text field is same as text display on screen Assert.assertEquals(expected, inputField.getText()); }
Afslut test
Følgende kode vil fuldføre testen ved at stoppe Selendroid chauffør.
/** * Stop the Selendroid driver * */ @AfterSuite public void tearDown() { driver.quit(); }
Du kan se detaljerne i prøvekoden inkluderet i denne artikel.
Trin 10) Tilslut Android enhed til pc'en via USB-kabel. Punkter at observere -
- Sørg for, at enheden ikke har konfigureret en skærmlås.
- Enheder skal tilsluttes via USB til den computer, som selendroid-standalone-komponenten kører på.
- Enheden skal som minimum installeres Android Target Version API 10
Trin 11) Kør testappen: Højreklik på Guru99test -> Løb som -> TestNG prøve
Trin 10) Scriptet starter udført som følger
Trin 12) Når testen er afsluttet, TestNG automatisk genererer testrapporten som følger
Godt arbejde, du er færdig med testen nu.
Resumé
- Selendroid er et meget kraftfuldt værktøj til test Android native app, hybrid-appen samt web-appen.
- Det kan bruges på rigtige enheder såvel som simulatoren.
- Det giver dig også mulighed for at køre test parallelt ved at køre en test på flere enheder.
- Hele Selendroid suite består af fire komponenter:
- Web Driver klient,
- Selendroid-Server,
- Android Driver-app
- Selendroid- stå alene
- At bruge Selendroid du har brug for Java JDK, Android SDK og Eclipse installeret.