Selendroid Tutorial voor beginners met voorbeeld
Heeft u ooit een Android applicatie en deze publiceren op Google Play? Wat gaat u doen als u een gebruikersrecensie krijgt zoals:
Wanneer u een app op Google Play publiceert, moet deze goed worden getest om mogelijke bugs te voorkomen. Er zijn een heleboel testscenario's die moeten worden uitgevoerd voordat een app wordt gepubliceerd. Om de Testen inspanning, heb je een testtool nodig. Een van de beste testtools voor Android app is Selendroid.
Wat is Selendroid?
Selendroid is een testautomatiseringsframework voor meerdere soorten mobiele applicaties: inheemse en hybride Android app en mobiel web.
U kunt de tests schrijven met behulp van de Selenium 2 client-API's. Omdat Selendroid nog steeds hergebruik van het bestaande Selenium infrastructuur voor het internet
Selendroid is een krachtig testinstrument. Het kan worden gebruikt op emulators en echt apparaten
Waarom hebben we nodig Selendroid?
Selendroid is een geweldig testinstrument. Maar misschien twijfel je nog steeds aan het nut ervan.
In dit gedeelte worden de belangrijkste kenmerken van de Selendroid om de vraag te beantwoorden waarom je dat nodig hebt Selendroid.
- U kunt de te testen toepassing testen met behulp van Selendroid zonder enige wijziging van de app. Je hebt alleen het binaire bestand nodig (APK) op de computer geïnstalleerd. Om het binaire bestand op het apparaat te installeren, moeten de testapp en de mobiele app met dezelfde tekensleutel worden ondertekend
- Selendroid test-app kan tegelijkertijd met meerdere apparaten of simulatoren communiceren. Het is een groot voordeel van Selendroid. U kunt uw app dus met verschillende testen Android apparaten om de compatibiliteit te controleren.
- Selendroid kan menselijke gebruikersacties op een app simuleren, zoals aanraken, vegen, slepen en neerzetten op apparaten
- U kunt tijdens het testen de hardwareapparaten wijzigen (aansluiten en loskoppelen) zonder de test opnieuw te starten of te stoppen. Selendroid herkent de nieuwe apparaten automatisch
- overeenkomend met de Android API-versie omhoog, Selendroid ondersteunt ook het nieuwe Android API (van API 10 tot API 19)
- Selendroid heeft ook een ingebouwde inspecteurtool waarmee u het UI-element van een te testen applicatie kunt identificeren. Bijvoorbeeld de ID-knop, het tekstveld, de tekstweergave…
Selendroid Architectuur
Selendroid is gebaseerd op de Android instrumentatie raamwerk. Selendroid tests zijn geschreven op basis van de Selenium Web driver client API, dus het ondersteunt volledige integratie met current Selenium kaders.
De volgende afbeelding beschrijft de architectuur van Selendroid
Selendroid bevat 4 belangrijke componenten:
- Web Driver-client – De Java clientbibliotheek gebaseerd op Selenium. Deze bibliotheek moet op de computer worden geïnstalleerd (die wordt gebruikt om de testgevallen te ontwikkelen)
- Selendroid-Server – De server waarop de app draait, wordt getest Android apparaat of simulator. Dit zijn de belangrijkste componenten van a Selendroid architectuur
- Android Driver-app – Een ingebouwd Android driver, Web View-app om het mobiele internet te testen.
- Selendroid-Standalone – Dit onderdeel wordt gebruikt om de Selendroid server en de geteste applicatie (AUT)
Beginnen met Selendroid
Je kent al het belang van de Selendroid. Laten we nu onze handen vuil maken Selendroid.
Er moeten 3 stappen worden uitgevoerd vóór de eerste test Selendroid
Een instellen Selendroid omgeving houden
Selendroid kan werken op Venster, Linux en MacOS. In deze zelfstudie gaan we instellen Selendroid in Windows-besturingssysteem.
Voor het gebruik van Selendroid, u moet eerst het volgende pakket installeren
- Java SDK (minimaal 1.6)
U moet de licentieovereenkomst accepteren en het Java-installatieprogramma downloaden (kies x64- of x86-basis op uw besturingssysteem)
Download en installeer de Java SDK als normale software
- Nieuwste versie van Android SDK
- Uw computer moet er minimaal één hebben Android Virtueel apparaat (AVD), of een echt apparaat Android apparaat aangesloten op de pc.
- Selendroid Standalone met afhankelijkheden, Selendroid Bedrijfen Selenium Bedrijf
- Eclipse software
- JAVA_HOME en ANDROID_HOME instellen
Stap 1) Klik in Windows met de rechtermuisknop op Computer -> Mijn Advertenties -> Geavanceerde systeeminstellingen
Stap 2) Venster Systeemeigenschappen, selecteer het tabblad Geavanceerd -> Omgevingsvariabelen
Stap 3) Klik in het venster Omgeving op Nieuw -> Voer een variabele ANDROID_HOME in als volgt
De variabelewaarde is het pad naar android-sdks dat u al hebt geïnstalleerd.
Zoek de systeemvariabele Path -> Edit -> Voeg de volgende regel toe na de huidige regel
Vergelijkbaar met ANDROID_HOME, voeg een nieuwe variabele JAVA_HOME toe met de waarde zoals hieronder
De waarde is het pad naar jouw Java JDK-installatie
Stap 4) Start uw pc opnieuw op -> Klaar
Hoe te starten Selendroid
Stap 1) Een applicatie laten testen
Je kunt bestaande gebruiken Selendroid test-app om te controleren hoe Selendroid werkt (Link naar voorbeeldtoepassing die wordt getest)
Zodra een download is voltooid, kopieert u deze APK en het bovenstaande Selendroid Op zichzelf staande pot bestand naar een map met de naam “Guru99″
Stap 2) Start het Selendroid
Open de terminal aan Windows & navigeer naar de map Guru99 die in stap 1 is gemaakt.
Voer de volgende opdracht uit
De uitvoer wordt als volgt weergegeven
Na het uitvoeren van deze opdracht, Selendroid-zelfstandige HTTP-server start! Het standaardpoortnummer van deze server is 4444. Alle hardwareapparaten, evenals Android Virtueel apparaat wordt automatisch gescand en herkend. Selendroid zal identificeren Android doelversie en schermgrootte van het apparaat.
Om het te controleren Android Om de doelversie en de apparaatgegevens te bekijken, kunt u de volgende URL in een browser openen: http://localhost:4444/wd/hub/status
.
Selendroid basis commando
In dit gedeelte worden enkele basisprincipes geïntroduceerd Selendroid-Zelfstandige opdrachtregel. U kunt ze gebruiken om de Selendroid testomgeving
- Haven instellen van Selendroid
De standaardpoort van Selendroid is 4444. Maar u kunt naar een andere poort overschakelen door een parameter toe te voegen aan de opdracht om te starten Selendroid
Parameter: -poort [poortnummer]
Bijvoorbeeld:
In bovenstaande opdracht is 5555 de nieuwe poort.
Dus de URL om het Android doelversie is gewijzigd in: http://localhost:5555/wd/hub/status
- Geef de locatie op van de te testen applicatie (binair APK-bestand). Selendroid vaak het absolute pad voor dit bestand vereist
Parameter: -app [bestandspad]
Bijvoorbeeld:
In het bovenstaande commando wordt de Selendroid automatisch de binaire bestandsbasis vinden op “C:\Guru99App.apk” om de informatie van de te testen applicatie te verkrijgen.
Controleer de URL
http://localhost:4444/wd/hub/status
, ziet u deze informatie - Wijzig de poort de Selendroid gebruikt om te communiceren met de instrumentatieserver. Selendroid gebruikt standaard poort 8080
Parameter: -selendroidServerPort [poortnummer]
Voorbeeld
De poort is nu gewijzigd in 9000
- Wijzig de time-out om emulators te starten. De eenheid is milliseconden.
Parameter: -timeoutEmulatorStart
Standaard Selendroid wacht 300,000 milliseconden totdat de emulator start. U kunt via een opdracht overschakelen naar een nieuwe time-out (200,000 ms).
Na deze tijd is onze verlopen, als de emulator niet kan starten, de Selendroid zal de uitzonderingsfout genereren (er is een fout opgetreden tijdens het zoeken naar apparaten/emulators.) en vervolgens stoppen met werken
- Wanneer u het Selendroid opdracht op terminal, ziet u een log afgedrukt op het scherm. U kunt het type log dat u ziet wijzigen door de volgende parameter toe te voegen
Parameter: -logLevel [type logboek]
De logniveauwaarden zijn ERROR, WAARSCHUWING, INFO, DEBUG en VERBOSE. Standaard: FOUT.
Instellen bijvoorbeeld Selendroid Als u alleen het WAARSCHUWINGslogboek wilt afdrukken, kunt u deze opdracht gebruiken
Het Selendroid druk alleen het WAARSCHUWINGslogboek af
Begin uw eerste test met Selendroid
Dit gedeelte is een stapsgewijze handleiding voor het maken van uw eerste testscript met behulp van Selendroid
Stel dat we een Android applicatie onder testnaam Guru99App. De applicatie bevat een tekstveld en een knopnaam "Tekst weergeven".
We moeten het volgende uitvoeren Testgeval gebruik Selendroid
Test Cases | Conditie | Verwachte resultaten |
---|---|---|
|
Het binaire bestand van de geteste applicatie is beschikbaar
Er is een apparaat aangesloten op de pc |
De tekst “Tekst Toon hier” wordt gewijzigd in de tekst
welke gebruiker in een tekstveld invoert |
Stap 1) Maak een Java project in Eclipse
Stap 2) Voeg selenium toe en Selendroid jar-bestand in Eclipse-omgevingen
Klik met de rechtermuisknop op Guru99Test-project -> Pad bouwen -> Extern toevoegen Archives
Navigeer naar de map waarin de jar-bestanden zijn opgeslagen
Er moeten 3 jar-bestanden worden toegevoegd
- selendroid-client-0.10.0.jar : Selendroid Java-clientbibliotheek
- selendroid-standalone-0.11.0-met-afhankelijkheden : Selendroid zelfstandige serverbibliotheek
- selenium-java-2.40.0.jar : Selenium Web Driver-bibliotheek
Selecteer alle -> Kies Openen om een jar-bestand aan het project toe te voegen
Stap 3) na het toevoegen van de bovenstaande bibliotheek, worden deze bibliotheken toegevoegd aan de referentiebibliotheken van het testproject. Een tester kan de API’s van die bibliotheken gebruiken om het testprogramma te ontwikkelen
Maak pakket “com.guru.test” en voeg het Java-bestand “Guru99Test.java” toe, zoals hieronder
Klik met de rechtermuisknop op Guru99Test -> Nieuw -> Pakket
Typ com.guru.test in het veld Naam onder Nieuw Java Pakketdialoog à Voltooien
Het Eclipse zal dergelijke lijstmappen en submappen maken in de broncodestructuur
Stap 4) Install TestNG voor betere Eclipse
In Eclipse, Help -> Nieuwe software installeren, klik in het installatiedialoogvenster op Toevoegen en voer het volgende in
- Naam: TestNG
- Locatie: https://github.com/selendroid/selendroid
druk op OK -> Naast het installeren van de TestNG
Stap 5) Kopieer de Guru99App.apk naar de map Test App
Stap 6) Haal de ID op van een applicatie die wordt getest.
Stel dat we een APK-bestandsnaam Guru99App.apk hebben. Volg de stap die in de vorige sectie is beschreven en voer de opdracht uit op de terminal
Open de volgende link in een browser: http://localhost:4444/wd/hub/status
.
De informatie van het apparaat wordt weergegeven, kopieer de appId-waarde "com.guru99app:1.0"
Stap 7) Open het bestand Guru99Test.java (in de voorbeeldcode) en wijzig als volgt
Om een nieuwe testsessie aan te maken met Selendroid, moet u de app-ID opgeven in de indeling: com.guru99app:1.0. Deze app-ID kan worden geïdentificeerd in stap 6. Als u de app-ID niet instelt die overeenkomt met de Android apparaat, zal de testsessie een foutmelding geven en niet starten.
Na het initialiseren van het gevonden apparaat, Selendroid maakt een aangepaste selendroid-server en installeert de Selendroid server erop
Selendroid installeert ook de te testen applicatie en start de selendroid-server op het apparaat
Nadat de testsessie succesvol is geïnitialiseerd, wordt de testopdracht op een apparaat uitgevoerd. (Zoals tekst invoeren, op de knop drukken…). Als de test de testsessie toevoegt, stopt de emulator automatisch
Stap 8) Start de nieuwe testsessie
Start de Selendroid server met behulp van de volgende opdracht op de terminal zoals stap 6
Na het Selendroid Server gestart, open het voorbeeldtestproject Guru99test op Eclipse, stel een breekpunt in op regel 77 in het bestand Guru99Test.java door te dubbelklikken op regel 77 -> Er wordt een punt weergegeven zoals hieronder
Start een testsessie door met de rechtermuisknop te klikken naar het Guru99Test-project -> Foutopsporing als -> Testen Test.
Er start een testsessie zoals hieronder
Stap 9) Haal de ID van het GUI-element op van een applicatie die wordt getest
Nadat de testsessie succesvol is gestart, opent u de browser en navigeert u naar de URL http://localhost:4444/inspector
U zult zien dat de applicatie die wordt getest, wordt gestart, zoals hieronder
Beweeg de muis naar elk UI-element van AUT (Button, TextField, Text Label). De ID van elk element wordt gemarkeerd in het rechterdeelvenster
Na deze stap kunt u de ID van elk hierboven UI-element verkrijgen
- Knop Tekst-ID weergeven: “btnToon"
- Tekstveld-ID: “edtTekst"
- Labeltekst-ID: “txtBekijk"
Deze ID's worden in de volgende stap gebruikt
Stap 10) Voer het testprogramma in zoals hieronder
Een testprogramma met Selendroid omvat 3 secties
Opstellingstest:
Hieronder staat de code voor het instellen van een test. Hiermee worden de voorwaarden voor een testsessie ingesteld. In geval van een fout wordt de Selendroid zal de uitzondering genereren en de test-app zal stoppen.
De code bevat de opmerkingen om elke verklaring uit te leggen.
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); }
Test uitvoeren
Hieronder vindt u de code om een test uit te voeren. De code bevat het commentaar
Hier zijn nogmaals de teststappen
- Voer de tekst "Hallo Guru" in
- Klik op de knop Tekst weergeven
- Wacht even
- Controleer of de app de tekst weergeeft terwijl de gebruiker een tekstveld invoert (bijvoorbeeld de tekst 'Hallo Guru' weergeven)
/** * 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()); }
Test voltooien
De volgende code voltooit de test door de Selendroid bestuurder.
/** * Stop the Selendroid driver * */ @AfterSuite public void tearDown() { driver.quit(); }
U kunt de details bekijken in de voorbeeldcode in dit artikel.
Stap 10) Connect Android apparaat via een USB-kabel op de pc. Waar u op moet letten –
- Zorg ervoor dat er op het apparaat geen schermvergrendeling is geconfigureerd.
- Apparaten moeten via USB worden aangesloten op de computer waarop het selendroid-standalone-onderdeel wordt uitgevoerd.
- Het apparaat zou op zijn minst moeten worden geïnstalleerd Android Target Versie-API 10
Stap 11) Voer de testapp uit: klik met de rechtermuisknop op Guru99test -> Rennen als -> TestNG proef
Stap 10) Het script start als volgt uitgevoerd
Stap 12) Nadat de uitvoering van de test is voltooid, TestNG genereert automatisch het testrapport als volgt
Goed gedaan, je bent nu klaar met de test.
Samenvatting
- Selendroid is een zeer krachtig hulpmiddel om te testen Android native app, zowel de hybride app als de webapp.
- Het kan zowel op echte apparaten als op de simulator worden gebruikt.
- Hiermee kunt u ook parallel tests uitvoeren door een test op meerdere apparaten uit te voeren.
- De hele Selendroid suite bestaat uit vier componenten:
- Web Driver-client,
- Selendroid-Server,
- Android Bestuurders-app
- Selendroid- alleen staan
- Te gebruiken Selendroid je nodig hebt Java JDK, Android SDK en Eclipse geïnstalleerd.