Door: Gerben de la Rambelje
Auteur: Trees Lensink ● treeslensink@ziggo.nl
Afgelopen dinsdag 29 augustus heb ik bij de Werkgroep Testautomatisering (WTA) van TestNet de workshop ‘ Mobile Testen met Appium’ gegeven. Bij de workshop konden de deelnemers niet achterover leunen. Je leert immers veel meer door te doen, dan door na te doen. Voor de meeste deelnemers was het flink aanpoten om alle tools en software aan de gang te krijgen om überhaupt te kunnen testen. Het werd een uitdagende sessie.
Over de Appium tool
Appium is een open source tool voor het automatiseren van native, mobiele web- en hybride applicaties op iOS- en Android-platforms. Het werkt als volgt: koppel een mobiel device aan je laptop en je kunt met Appium het device geautomatiseerd testen. Een groot voordeel van Appium is dat je gebruik kunt maken van Selenium WebDriver, op dit moment nog steeds de meest gebruikte tool voor het automatiseren van web testen. Daarnaast kun je met Appium, naast de standaard WebDriver commando’s, ook device specifieke elementen automatiseren, zoals hardware buttons van een mobiel device en swipe of tap acties.
Requirements Appium
We hebben onderstaande tutorials gebruikt om Appium aan de praat te krijgen:
Installatie Tutorial Mac: https://www.testautomationsimplified.com/appium-tutorial/appium-download-osx/
Installatie Tutorial Windows: https://www.testautomationsimplified.com/appium-tutorial/appium-installation-on-windows/
Naast bovenstaande ook het volgende installeren:
- Maven: https://maven.apache.org/install.html
- Banking App Triodos: https://grvermeulen.stackstorage.com/s/aZii4N76Zq8QIXk
Bankingnl-release.apk (Android)
zip (app voor iOS)
Mobile-test_wg (maven project met wat uitleg bij wat capabilities)
Aan de slag met Appium
Degene die voldoende geïnstalleerd hadden konden beginnen met Appium inspector. Dit deden we door Appium te openen en vervolgens een ‘Start Server’ te doen. Je hebt hier de knop Start New Session. Als je daar op klikt, kom je op een scherm waarbij je de ‘desired capabilities’ op kan geven. Eerste uitdaging hier was uitzoeken welke capabilities er nodig zijn. Gelukkig biedt Appium een hele goede logging. Hierdoor was steeds na een klik op Start Session snel duidelijk wat je in moest voeren. Hierbij voer je in het meest linkse veld de naam van de capability in en in het rechtse veld de waarde.
Minimaal benodigde desired capabilities voor Android:
platformName = “Android”
deviceName = “emulator-5554”
platformVersion = “7.1.1”
app = “path/to/your/bankingnl-release.apk”
Minimaal benodigde desired capabilities voor iOS:
platformName = “iOS”
deviceName = “iPhone Simulator”
paltformVersion = “10.3”
app = “path/to/your/bankingnl.app’
automationName = “XCUITest” (platformVersion>+10)
Nadat de juiste capabilities waren gezet werd op de emulator/simulator de banking app geopend. De eerste keer altijd een leuk moment.
Tijd om de eerste automatiseringsstappen te doen. Dit deden we met de record functie (Start recording knopje bovenaan). Daarbij kun je kiezen of je het wilt doen met Java – JUnit (hebben we nu gedaan), Python, Ruby, JS – WD (Promise), JS – webdriover.io. We hebben flink door het registratie proces zitten tappen. Eerst twee keer, tien willekeurige cijfers invoeren. Al snel werd duidelijk dat dit niet lukte met SendKeys. We moesten dus elke toets apart ‘tappen’. Inlogcode is 12346. Hiermee moet het lukken om in de applicatie te komen.
Appium heeft geen playback mogelijkheid
Appium heeft wel een record functie, maar geen playback. We hebben daarom het voorbeeld maven project geïmporteerd in IntelliJ / eclipse. Zo hoefden we ons niet druk te maken over het importeren van de juiste libraries. In de test class hebben we de code geplakt die we met Appium opgenomen hadden. Vervolgens konden we de test runnen via de Run in IntelliJ, of Run -> Run As -> JUnit Test in eclipse.
In IntelliJ hebben we dit aan de praat gekregen en zagen we dat in de simulator de app werd geopend en dat er geklikt werd. Alleen ging de test te snel. De volgende stap was op de juiste momenten een ‘implicit wait’ inbouwen. Helaas was de tijd te kort om dit ook voor elkaar te krijgen. In eclipse kregen we een foutmelding waar we niet meteen een oplossing voor hadden.
Zelf werk ik met Java en maven in IntelliJ. Voor het werken met Java is het handig als je een goede tool gebruikt. Je kunt hiervoor IntelliJ community edition nemen, maar eclipse werkt natuurlijk net zo goed.
Tot slot
Uiteraard kun je in een blog niet geheel uiteenzetten hoe Appium werkt, je moet er gewoon mee aan de slag en ontdekken wat er allemaal voor nodig is om het geheel werkend te krijgen. De deelnemers van de werkgroep gingen gemotiveerd naar huis om met de wondere wereld van Appium verder aan de slag te gaan.
Wil jij ook aan de slag met Appium en wil je daarbij iets meer begeleiding? Leden van de werkgroep hebben o.a. naar onderstaande video tutorials gekeken:
- Requirements Appium: https://www.youtube.com/watch?v=5rUIT9KxheE
- Eerste setup Appium met IDE-framework voor Mac: https://www.youtube.com/watch?v=2VKyW1lkbq0
- Appium with Java series: https://www.youtube.com/watch?v=HwcJhUVbkfk