Selendroid Tutorial for begyndere med eksempel
Har du nogensinde udviklet en Android ansรธgning og offentliggรธr den til Google Spil? Hvad vil du gรธre, hvis du fรฅr en brugeranmeldelse som โ
Nรฅr du udgiver en app til Google Play, det skal testes grundigt for at undgรฅ potentielle fejl. Der er et vรฆld af testscenarier, der bรธr udfรธres, fรธr en app udgives. 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 skifte hardwareenhederne (tilslut og tag stikket ud) under testen uden at genstarte eller stoppeping 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 samt 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 at tjekke 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 fil baseret pรฅ โC:\Guru99App.apkโ for at fรฅ oplysninger om den applikation, der testes.
Tjek URL
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 en knap med navnet "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 Guru99Test-projekt -> 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 vist nedenfor
Hรธjreklik Guru99 Test -> 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 med Test-appen
Trin 6) Fรฅ id'et for en applikation under test.
Antag, at vi har et APK-filnavn Guru99App.apk. Fรธlg trinnet beskrevet i forrige afsnit, og udfรธr kommandoen i 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 รฆndr 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 eksempeltestprojektet Guru99test pรฅ Eclipse, sรฆt et breakpoint pรฅ linje 77 i filen Guru99Test.java ved at dobbeltklikke pรฅ linjen 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 korrekt, skal du รฅbne browseren og navigere til URL 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 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 stoppeping og 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 Guru99 test -> 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.


































