En introduksjon til Appium

An Introduksjon til Appium
110
Del
8
Del

Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert å bare $ 3. Ikke gå glipp av.
Hva du skal lage

Automatisert testing er kjent for å være svært verdifull for enhver programmerer. Det er et verktøy som gjør det mulig for simulering av en persons handlinger på en bestemt enhet, og det er foretrukket fordi den mangler de feil og hastighetsbegrensninger av en faktisk person.

Appium er en automatisert testverktøy, basert på den populære testing rammeverk selen, som gjør det mulig automatisert testing på både innfødte iOS og Android apps. Dens viktigste begrensningen er at det bare er bygget for OS X og Linux.

På kontoret mitt, bruker vi Appium for regresjonstesting. Regresjonstesting betyr ganske enkelt å teste eksisterende funksjoner for å sikre at de fortsetter å fungere som forventet som produkt vokser. Det er veldig viktig å vite når funksjoner bryte slik at fremgangen kan fortsette i en lineær måte.

I denne opplæringen, vil jeg vise deg hvordan du setter opp Appium, generere automatiserte skript, og lage noen enkle innloggings tester for en Android-applikasjon.

1. Appium Setup

Får Appium tar ikke mye tid, men det er lett å rote opp oppsettet. Første gang jeg installerte Appium, jeg naivt lastet ned programmet (.dmg) før du setter den opp på kommandolinjen. Det viser seg at hvis du laster ned programmet først, kan det gjøre å få Appium på kommandolinjen ganske vanskelig. Så starte med å få Appium fra kommandolinjen.

I de følgende trinnene, jeg antar du har homebrew installert og bruker et OS X. Hvis du ikke har node installert, utført følgende kommando fra kommandolinje:
$ brygge installere node

Deretter installerer Appium bruker node pakkebehandleren. Det er viktig at du gjør ikke
bruk sudo for disse kommandoene eller Appium vil ikke fungere.
$ NPM installere -g appium $ NPM installere wd

Hvis du ikke har tillatelse til å bruke disse kommandoer, må du chmod dem selv heller enn sudo. Plasseringen av mappen kan være annerledes for deg, avhengig av oppsettet.
$ Sudo chmod -R a + w /usr /local

Å kjøre Appium serveren og se om du har satt det opp riktig, utføre følgende kommando fra kommandolinjen
$ appium &.

Appium på kommandolinjen kan du kjøre Selen tester ikke bare på Android og iOS simulatorer, men også om fysiske enheter. Søknaden har en fin brukergrensesnitt som lar deg kjøre en simulert versjon av AUT (Application Under Testing) og enkelt generere Selen kode for enkle handlinger på programmet. Du vil i hovedsak bruke programmet i startfasen av å lage tester og deretter bruke kommandolinjen for å kjøre tester.

Hvorfor kan ikke vi bruke programmet for hele flyten? Hvis du har planer om å kjøre en serie med tester på ulike enheter i en automatisert måte, kanskje på en tidsplan, å kunne kjøre Appium fra kommandolinjen vil være avgjørende.

Appium programmet kan lastes ned fra Bitbucket. Etter nedlasting av disk image, dobbeltklikker du på den og dra Appium søknad til Programmer-mappen.

2. AUT Setup

Deretter må vi et program for å teste. For denne introduksjon til Appium, vil vi teste en innfødt Android-applikasjon som jeg ringer AUT. Det er en veldig enkel innlogging og utlogging søknad. På en vellykket pålogging, vil det bringe oss til en side som forteller oss at vi nå logget inn, viser en utlogging knappen.

Mange apps har en login funksjon slik vi vil skape en grunnleggende pakke med innloggings tester for å teste mulige utfall av en bruker i samspill med innlogging flyt. Det er ikke så mye som vi ønsker å være sikker på at innloggings fungerer, vi ønsker å teste app respons på de ulike måter en bruker kan unnlate å logge inn, for eksempel ved å legge inn ugyldige legitimasjon.

Siden det er umulig å eier alle tilgjengelige Android-enhet, jeg vanligvis teste på simulerte enheter. Dette tillater meg å enkelt endre hvilken enhet blir simulert for kompatibilitetstesting. For å få en Android simulator, får AVD Manager og sette opp noen Android-enhet som du selv velger, kompatibel med API-nivå 21.


    Last ned APK fra GitHub.
  1. Få JDK, hvis du ikke allerede har gjort det.

    Få Android SDK med AVD Manager.

    Sett ANDROID_HOME, JAVA_HOME, og PATH miljøvariabler i din .profile eller Bash_profile (eller .zshrc hvis du bruker zsh).

    ANDROID_HOME skal peke til plasseringen av Android SDK mens JAVA_HOME skal peke til plasseringen av JDK.

    Dette er hvordan du kan legge disse stiene til Bash_profile. . Merk at stiene kan være annerledes for deg
    $ vim ~ /.bash_profile $ eksport ANDROID_HOME = /Users /(brukernavn) /Library /Android /SDK $ export PATH = $ PATH: $ ANDROID_HOME /verktøy: $ ANDROID_HOME /platform-tools $ eksport JAVA_HOME = /Library /Java /JavaVirtualMachines /jdk1.8.0_40.jdk /Innhold /Home

    Deretter oppretter du en simulert enhet med AVD Manager. Sørg for å muliggjøre bruk vert GPU og sett VM Heap til 64.
    $ cd $ ANDROID_HOME /verktøy $ ./android avd

    For å gjøre simulatoren kjøre raskere, installere HAX fra Intels nettsted.

    3. Appium Inspector

    Det er på tide å bruke Appium Inspector og begynne å skrive noen tester. Start Appium søknaden. I Generelle innstillinger, fjern krysset Se etter oppdateringer, prelaunch Application, Styr Eksisterende Sessions, og drepe prosesser ved hjelp av Server Port Før Launch.

    Deretter kontrollerer Android Radio Button og klikk på Android-ikonet. Sjekk App Path og sette verdien til plasseringen av hvor du setter APK av programmet under test. Sjekk Launch AVD og velg den simulerte enheten. Velg 5,1 Lollipop (API nivå 21) fra rullegardinmenyen fra Platform versjon.

    Hit Launch og vente på appen starte på den simulerte enheten.

    Du kan kjøre inn i en sak der programmet krasjer på unlock siden vi bruker den splitter nye API 21. For å løse dette, kan du starte programmet på nytt etter manuelt låse den simulerte skjermen.

    Når den simulerte enheten har lansert appen, traff forstørrelsesglasset å lansere inspektøren.

    Dette er Appium inspektør. Det er et veldig praktisk verktøy for å hjelpe deg med å komme i gang med å skrive tester for Appium. I hovedsak kan inspektøren deg utføre handlinger på den innfødte Android søknad og registrere dine handlinger som genererte koden.

    Boksene på venstre side av inspektør utgjør UI Navigator og lar deg navigere elementer av den aktuelle aktivitet. Nederst er alternativene til å samhandle med element valgt fra elementboksene. Detaljene for det valgte elementet vises i detaljer. Hvis du gjør noe manuelt til simulering, må du trykke Refresh for inspektøren å gjenkjenne disse endringene. Hvis du ønsker å begynne å spille inn dine handlinger i koden, må du trykke på opptaksknappen.

    La oss lage koden som er nødvendig for en vellykket innlogging. Appen har to hardkodede innlogging, [email protected]: passord og [email protected]~~number=plural: password2


      Ved å klikke Record og observere at det er nå koden under inspektøren.. Du kan velge forskjellige språk for å vise i. For denne opplæringen, vil vi bruke Python.
    1. I UI Navigator navigere til android.widget.LinearLayout/android.widget.FrameLayout/
      android.widget.LinearLayout/android.widget.ScrollView/
      android.widget.LinearLayout/android.widget.EditText[1].

      Click Tekst nederst og legg inn [email protected].
    2. Klikk på Send Keys, og observere at koden under nå har en ny linje.

      5. I UI Navigator, navigere til android.widget.LinearLayout/
      android.widget.FrameLayout/android.widget.LinearLayout/
      android.widget.ScrollView/android.widget.LinearLayout/
      android.widget.EditText[2]

      6. Skriv inn passordet.

      7. Klikk Send Keys.

      8. I UI Navigator, navigere til android.widget.LinearLayout/android.widget.FrameLayout/
      android.widget.LinearLayout/android.widget.ScrollView/
      android.widget.LinearLayout/android.widget.Button[1]

      9. Klikk Touch nederst, etterfulgt av Tap. Vi er nå på en ny aktivitet så UI Navigator har endret seg.

      10. Hit Refresh siden inspektøren sannsynligvis ikke har innsett at simulatoren er forbi lasteskjerm nå.

      11. I UI Navigator navigere til android.widget.LinearLayout/android.widget.FrameLayout/
      android.widget.RelativeLayout/android.widget.Button[1].

      12. Klikk Tap.

      I koden nedenfor, har vi all koden for å simulere en vellykket innlogging. Føl deg fri til å leke litt mer med inspektøren. Senere i denne opplæringen, vil vi også være å skrive tester for mislykkede innlogginger.

      4. Logg Tester

      Vi skal nå skrive noen tester ved hjelp Appium å sikre at vår innloggingsside fungerer som det skal. Hvis du ikke har Python, så kan du laste den ned fra det offisielle nettstedet.

      For å bruke Appium web driver med Python, må du også få Appium biblioteker for Python.

        < li> Last ned og dearkiverer GZ-filen

        Åpne .gz fil, går du til plasseringen på kommandolinjen, og utføre følgende kommando:. product: $ python setup.py installere < p> Før vi begynner å skrive testene, må vi bestemme hvilke test tilfeller vil vi skal gjøre. En god test suite bør vurdere alle mulige interaksjoner. La oss starte med en enkel en.

          En vellykket innlogging.
        1. Et mislykket innlogging. Product: #! /Usr /bin /pythonfrom appium import webdriver import timeimport unittestimport os

          Først må vi importere alt vi trenger for testen. Vi vil bruke den innebygde Python enhet test for å kjøre våre tester. . Den Appium element er nettet driver, som vi vil bruke til å samhandle med Appium serveren
          klasse LoginTests (unittest.TestCase): def Setup (selv): desired_caps = {} desired_caps ['appium-versjon'] = ' 1.0 'desired_caps [' platformName '] =' Android 'desired_caps [' platformVersion '] =' 5.1 'desired_caps [' app '] = os.path.abspath (' /Brukere /mkim /Dokumenter /AUT /app /bygge /utganger /apk/app-debug-unaligned.apk ') self.wd = webdriver.Remote (' http://0.0.0.0:4723/wd/hub ', desired_caps) self.wd.implicitly_wait (60)

          opprette en klasse LoginTests å definere vår serie med tester. Setup funksjon av vår enhet test kjøres ved starten av testen. I denne metoden, har vi satt de ønskede egenskapene, for eksempel Android og app banen. Vi deretter initialisere web driver self.wd ved å koble til Appium serveren
          def Teardown (egen-):. Self.wd.quit ()

          Teardown funksjon løper etter en test, og det kobler fra Appium server.
          def test_success (egen-): basepath = "//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/" basepath2 = "//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/" self.wd.find_element_by_xpath (basepath + "android.widget.EditText [1] ") .send_keys (" [email protected] ") self.wd.find_element_by_xpath (basepath +" android.widget.EditText [2] "). send_keys (" passord ") self.wd.find_element_by_xpath (basepath +" android. widget.Button [1] ".) Klikk på () prøve: self.wd.find_element_by_xpath (basepath2 +" android.widget.TextView [1] "), unntatt: self.fail (". Ikke ved innlogging suksess siden \\ n ") self.wd.find_element_by_xpath (basepath2 + "android.widget.Button [1]"). Klikk på ()

          Listen kodeblokken er stort sett kopiert fra Appium inspektør kode. Vi utfører de nødvendige handlinger på brukergrensesnitt for en vellykket innlogging. I forsøk klausulen, prøver vi å finne textView element som viser teksten Pålogging suksess! Hvis et unntak, mislykkes testen
          def test_fail (egen-). Basepath = "//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/" self.wd.find_element_by_xpath (basepath + "android.widget.EditText [1]"). send_keys ("[email protected]") self.wd.find_element_by_xpath (basepath + "android.widget.EditText [2]"). . send_keys ("wrongpassword") self.wd.find_element_by_xpath (basepath + "android.widget.Button [1]") klikk () prøve: self.wd.find_element_by_xpath (basepath + "android.widget.Button [1]") unntatt: self.fail (". Ikke fremdeles på innloggingsbildet \\ n")

          For å mislykkes innloggings test, vi bevisst bruker feil passord, wrongpassword, forventer login til å mislykkes. Vi sjekker om vi kan finne innloggingsknappen element og ikke klarer testen hvis vi ikke kan
          hvis __name__ == '__main__':.. Suite = unittest.TestLoader () loadTestsFromTestCase (LoginTests) unittest.TextTestRunner (detaljnivå = 2). run (suite)

          Dette er den viktigste funksjonen som trengs for å kjøre våre tester. Det er ingenting galt med vår første test. Imidlertid kan en mislykket innlogging bety mange ting. Når en bruker er i stand til å logge inn, vil vi sørge for at brukergrensesnittet er å hjelpe dem til å innse hvordan å løse sine feil for en bedre brukeropplevelse.


            En vellykket innlogging.
          1. Logg inn med feil passord.

            Logg inn med feil e-post.

            Logg inn uten passord.

            Logg uten e-post.

            Logg inn med en ugyldig e- .

            Vi har utvidet vår testtilfeller fra to til seks testtilfeller for påloggingssiden. Det kan virke som mye for en så enkel funksjon, men det er absolutt nødvendig.

            Den vanskeligste delen av å skrive tester sjekker forventninger. For eksempel, hvis et element finnes de mislykkede innloggings testen sjekker i brukergrensesnittet. Dette betyr at innloggings tester helt stole på brukergrensesnittet til å fortelle oss om kravene er oppfylt.

            Dette kan være en dårlig ting siden brukergrensesnittet ikke forteller oss alt om den underliggende koden. Men er målet å teste brukergrensesnittet så å ha en forventning sjekk som et brukergrensesnitt element eksisterer er riktig. Vi kan gjøre våre forventning grundigere ved å sjekke at alle forventet element er til stede på siden eller ved å sjekke at hvert element er riktig plassert

            Konklusjon

            Vi har lært hvordan de skal:. < .no>
            sette opp Appium

            bruke Appium inspektør for å hjelpe skape automatiserte testskript

            bruk automatisering for å lage noen enkle innloggings tester for en Android-applikasjon

            Det er mye mer å lære om Appium og testing. Det neste steget kan være å skape en kontinuerlig integrert testsystem som utnytter mulighetene i Appium for dine egne applikasjoner.