Selendroid-tutorial voor beginners met voorbeeld

Heeft u ooit een Android-applicatie ontwikkeld en deze op Google Play gepubliceerd? Wat gaat u doen als u een gebruikersrecensie krijgt zoals:

Selendroid-zelfstudie

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 de Android-app is Selendroid.

Wat is Selendroid?

Selendroid is een testautomatiseringsframework voor meerdere soorten mobiele applicaties: inheemse en hybride Android-app en mobiel web.

Wat is Selendroid

U kunt de tests schrijven met behulp van de Selenium 2 client-API's. Omdat Selendroid nog steeds de bestaande Selenium-infrastructuur voor internet hergebruikt

Selendroid is een krachtige testtool. Het kan worden gebruikt op emulators en echt apparaten

Wat is Selendroid

Waarom hebben we Selendroid nodig?

Selendroid is een geweldige testtool. Maar misschien twijfel je nog steeds aan het nut ervan.

Waarom hebben we Selendroid nodig?

In dit gedeelte worden de belangrijke kenmerken van Selendroid geïntroduceerd om de vraag te beantwoorden waarom je Selendroid nodig hebt.

Waarom hebben we Selendroid nodig?

  • U kunt de te testen applicatie testen met 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
  • De Selendroid-testapp kan tegelijkertijd communiceren met meerdere apparaten of simulatorenneonuttig. Het is een groot voordeel van Selendroid. U kunt uw app dus testen met verschillende 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
  • Overeenkomstig de Android API-versie ondersteunt Selendroid ook de nieuwe Android API (van API 10 tot API 19)
  • Selendroid heeft ook een ingebouwde inspectietool 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-instrumentatieframework. Selendroid-tests zijn geschreven op basis van de Selenium Web driver client API, en ondersteunen dus volledige integratie met de huidige Selenium-frameworks.

De following figuur beschrijft de architectuur van Selendroid

Selendroid Architectuur

Selendroid bevat 4 belangrijke componenten:

Selendroid Architectuur

  • 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 die wordt uitgevoerd, wordt in de app getest op een Android-apparaat of simulator. Dit zijn de belangrijkste componenten van een Selendroid architectuur
  • Android Driver-App – Een ingebouwd Android-stuurprogramma, Web View-app om het mobiele internet te testen.
  • Selendroid-Standalone – Dit onderdeel wordt gebruikt om de Selendroid-server en de geteste applicatie (AUT) te installeren

Aan de slag met Selendroid

Je kent het belang van de Selendroid al. Laten we nu onze handen vuil maken met Selendroid.

Er moeten 3 stappen worden uitgevoerd vóór de eerste test met Selendroid

Aan de slag met Selendroid

Een Selendroid-omgeving opzetten

Selendroid kan werken op Windows, Linux en MacOS. In deze tutorial zullen we Selendroid instellen in Windows OS.

Voordat u Selendroid gebruikt, moet u following eerst verpakken

  • Java-SDK (minimaal 1.6)

    U moet de licentieovereenkomst accepteren en het Java-installatieprogramma downloaden (kies x64- of x86-basis op uw besturingssysteem)

    Een Selendroid-omgeving opzetten

    Download en installeer de Java SDK als normale software

  • Nieuwste versie van Android SDK
  • Op uw computer moet minimaal één Android Virtual Device (AVD) of een echt Android-apparaat op de pc zijn aangesloten.
  • Selendroid Standalone met afhankelijkheden, Selendroid-client en Selenium-client
  • Eclipse software
  • Stel JAVA_HOME en ANDROID_HOME in

    Stap 1) Klik in Windows met de rechtermuisknop op Computer -> Properties -> Geavanceerde systeeminstellingen

    Een Selendroid-omgeving opzetten

    Stap 2) Venster Systeemeigenschappen, selecteer het tabblad Geavanceerd -> Omgevingsvariabelen

    Een Selendroid-omgeving opzetten

    Stap 3) Klik in het venster Omgeving op Nieuw -> Voer als volgt een variabele ANDROID_HOME inwing

    Een Selendroid-omgeving opzetten

    De variabele waarde is het pad naar android-sdks dat u al hebt geïnstalleerd.

    Zoek de systeemvariabele Path -> Edit -> Voeg de volgende toewing regel na de huidige regel

    Een Selendroid-omgeving opzetten

    Een Selendroid-omgeving opzetten

    Voeg, net als bij ANDROID_HOME, een nieuwe variabele JAVA_HOME toe met de waarde zoals hieronder

    Een Selendroid-omgeving opzetten

    De waarde is het pad naar uw Java JDK-installatie

    Stap 4) Start uw pc opnieuw op -> Klaar

Hoe Selendroid te starten

Stap 1) Een applicatie laten testen

U kunt de bestaande Selendroid-testapp gebruiken 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 Standalone pot bestand naar een map met de naam “Guru99″

Stap 2) Start de Selendroid

Open de terminal aan Windows & navigeer naar de map Guru99 die in stap 1 is gemaakt.

Voer het volgende uitwing commando

Start Selendroid

De uitvoer wordt als volgt weergegevenwing

Start Selendroid

Na het uitvoeren van deze opdracht start de Selendroid-standalone HTTP-server! Het standaardpoortnummer van deze server is 4444. Alle hardwareapparaten, evenals Android Virtual Device, worden automatisch gescand en herkend. Selendroid identificeert de Android-doelversie en de schermgrootte van het apparaat.

Om de Android-doelversie en de apparaatinformatie te controleren, kunt u het volgende venster openenwing URL in een browser: http://localhost:4444/wd/hub/status.

Start Selendroid

Selendroid basiscommando

In deze sectie maak je kennis met een aantal eenvoudige Selendroid-Standalone-opdrachtregels. U kunt ze gebruiken om de Selendroid-testomgeving in te stellen

  1. Poort van Selendroid instellen

    De standaardpoort van Selendroid is 4444. Maar u kunt naar een andere poort overschakelen door een parameter toe te voegen aan de opdracht om Selendroid te starten

    Parameter: -poort [poortnummer]

    Bijvoorbeeld:

    Selendroid basiscommando

    In bovenstaande opdracht is 5555 de nieuwe poort.

Dus de URL om de Android-doelversie te controleren is gewijzigd in: http://localhost:5555/wd/hub/status

  1. Geef de locatie op van de te testen applicatie (binair APK-bestand). Selendroid had vaak het absolute pad voor dit bestand nodig

    Parameter: -app [bestandspad]

    Bijvoorbeeld:

    Selendroid basiscommando

    In het bovenstaande commando vindt Selendroid automatisch de binaire bestandsbasis 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

    Selendroid basiscommando

  2. Wijzig de poort die Selendroid gebruikt om te communiceren met de instrumentatieserver. Selendroid gebruikt standaard poort 8080

    Parameter: -selendroidServerPort [poortnummer]

    Voorbeeld

    Selendroid basiscommando

    De poort is nu gewijzigd in 9000

  3. Wijzig de time-out om emulators te starten. De eenheid is milliseconden.

    Parameter: -timeoutEmulatorStart

    Standaard wacht Selendroid 300,000 milliseconden totdat de emulator start. U kunt via een opdracht overschakelen naar een nieuwe time-out (200,000 ms).

    Selendroid basiscommando

    Na deze tijd is onze verlopen, als de emulator niet kan starten, zal de Selendroid de uitzonderingsfout genereren (er is een fout opgetreden tijdens het zoeken naar apparaten/emulators.) en vervolgens stoppen met werken

  4. Wanneer u de Selendroid-opdracht op de terminal start, ziet u een logboek op het scherm afgedrukt. U kunt het type logboek dat u ziet wijzigen door het volgende toe te voegen:wing parameter

    Parameter: -logLevel [type logboek]

    De logniveauwaarden zijn ERROR, WAARSCHUWING, INFO, DEBUG en VERBOSE. Standaard: FOUT.

    Stel Selendroid bijvoorbeeld in om alleen het WAARSCHUWING-logboek af te drukken. U kunt deze opdracht gebruiken

    Selendroid basiscommando

    De Selendroid drukt alleen het WAARSCHUWINGslogboek af

Start uw eerste test met Selendroid

Deze sectie is een stapsgewijze handleiding voor het maken van uw eerste testscript met Selendroid

Stel dat we een Android-applicatie hebben onder testnaam Guru99App. De applicatie bevat een tekstveld en een knopnaam "Tekst weergeven".

DOWNLOAD DE APK HIER

Eerste test met Selendroid

We moeten follo uitvoerenwing Testgeval met behulp van Selendroid

Test Cases Conditie Verwachte resultaten
  1. Start de applicatie
  2. Voer een tekst in “Guru99-test” naar het tekstveld
  3. Druk op de knop “Tekst weergeven”.
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- en Selendroid-jarbestand toe eclipse omgevingen

Klik met de rechtermuisknop op Guru99Test-project -> Pad bouwen -> Extern toevoegen Archives

Eerste test met Selendroid

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-with-dependencies : Selendroid standalone 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

Eerste test met Selendroid

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 -> New -> Pakket

Eerste test met Selendroid

Typ com.guru.test in het veld Naam in het dialoogvenster Nieuw Java-pakket à Voltooien

Eerste test met Selendroid

Het Eclipse zal dergelijke lijstmappen en submappen maken in de broncodestructuur

Eerste test met Selendroid

Stap 4) Install TestNG For Eclipse

In Eclipse, Help -> Installeer nieuwe software, klik in het installatiedialoogvenster op Toevoegen en voer het volgende inwing

druk op OK -> Vervolgens installeert u TestNG

Eerste test met Selendroid

Stap 5) Kopieer de Guru99App.apk naar de map Test App

Eerste test met Selendroid

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

Eerste test met Selendroid

Open volgwing 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”

Eerste test met Selendroid

Stap 7) Open het bestand Guru99Test.java (in de voorbeeldcode) en wijzig het als volgtwing

Eerste test met Selendroid

Om een ​​nieuwe testsessie met Selendroid te maken, moet je de app-ID opgeven in het formaat: com.guru99app:1.0. Deze app-ID wordt geïdentificeerd in stap 6. Als u de app-ID niet instelt die overeenkomt met het Android-apparaat, zal de testsessie een foutmelding geven en niet starten.

Na het initialiseren van het gevonden apparaat maakt Selendroid een aangepaste selendroid-server aan en installeert de Selendroid-server daarop

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 het volgendewing commando op terminal zoals stap 6

Eerste test met Selendroid

Nadat de Selendroid Server is gestart, opent u het voorbeeldtestproject Guru99test op Eclipse, stel een breekpunt in op regel 77 in bestand Guru99Test.java by double klik naar regel 77 -> Er wordt een punt weergegeven zoals hieronder

Eerste test met Selendroid

Start een testsessie door met de rechtermuisknop te klikken naar het Guru99Test-project -> Foutopsporing als -> Testng Test.

Er start een testsessie zoals hieronder

Eerste test met Selendroid

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

Eerste test met Selendroid

Beweeg de muis naar elk UI-element van AUT (Button, TextField, Text Label). De ID van elk element wordt gemarkeerd in het rechterdeelvenster

Eerste test met Selendroid

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 bestaat uit 3 secties

Opstellingstest:

Following is de code voor de setup-test, deze zal de voorwaarde voor een testsessie instellen. In geval van een fout zal de Selendroid de uitzondering genereren en zal de test-app 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

  1. Voer de tekst "Hallo Guru" in
  2. Klik op de knop Tekst weergeven
  3. Wacht even
  4. 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 following code voltooit de test door het Selendroid-stuurprogramma te stoppen.

 /**
		     * Stop the Selendroid driver
		     * 
		     */
		    @AfterSuite
		    public
					void tearDown() {
					        driver.quit();
			    }

U kunt de details bekijken in de voorbeeldcode in dit artikel.

Stap 10) Verbind het Android-apparaat met de pc via een USB-kabel. 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 de selendroid-standalone component draait.
  • Het apparaat moet minimaal Android Target Version API 10 installeren

Stap 11) Voer de testapp uit: klik met de rechtermuisknop op Guru99test -> Rennen als -> TestNG-test

Eerste test met Selendroid

Stap 10) Het script wordt als volgt uitgevoerdwing

Eerste test met Selendroid

Stap 12) Nadat de uitvoering van de test is voltooid, genereert TestNG automatisch het testrapport als volgtwing

Eerste test met Selendroid

Eerste test met Selendroid

Goed gedaan, je bent nu klaar met de test.

Samengevat

  • Selendroid is een zeer krachtig hulpmiddel voor het testen van de Android-native app, de hybride app en 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 volledige Selendroid-suite bestaat uit vier componenten:
    • Web Driver-client,
    • Selendroid-server,
    • Android-stuurprogramma-app
    • Selendroid-stand-alone
  • Om Selendroid te gebruiken heb je Java JDK, Android SDK en Eclipse geïnstalleerd.