Android-Testautomatisierung mit Robotium

Ähnliche Dokumente
Android Testautomatisierung mit dem Framework Robotium

Agile Testautomatisierung im XING Mobile Team

Agile Testautomatisierung im XING Mobile Team

ROFIN App Benutzerhandbuch. Version 1.0

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Installations- und Bedienungsanleitung CrontoSign Swiss

Installationsanleitung FRITZ!BOX Fon 7270

Apple Train the Trainer 08 Developer Programs. Josef Kolbitsch

Ein mobiler Electronic Program Guide

WinVetpro im Betriebsmodus Laptop

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Studenten-Team der Universität Rostock erringt 2. Platz im nationalen Finale des Ricoh & Java Developer Challenge

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Informatik, Mathematik und Naturwissenschaften

Smartphones: Affinitäten der CHECK24-Kunden. Nach Herstellern, Städten, Alter und Geschlecht

AbaWeb Treuhand. Hüsser Gmür + Partner AG 30. Oktober 2008

Ergebnisse: Online- Fundraising Studie 2011 von Thomas Seidl & Altruja GmbH

Workflows verwalten. Tipps & Tricks

AndroidRCCar & Physical Computing mit Android

Vorarlberger Standardschulinstallation Anbindung von Android Mobile Devices

SmartDispatch DMR-Dispatcher. Bestellablauf. SmartDispatch-Bestellablauf V1.0

15 Arten von QR-Code-Inhalten!

Anforderungen und Umsetzung einer BYOD Strategie

Präsentation Von Laura Baake und Janina Schwemer

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Mobile Development in.net mit Xamarin

Mobilität der Zukunft in Blauen Fahren wir zusammen!

Google findet Teilen gut? Eine empirische Studie zum Einfluss von Facebook- Shares und Co. auf das organische Ranking von Suchmaschinen

Das Internet ist mobil. John Riordan Bern, 17. Jan 2013

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Sage 200 BI Häufige Fehler & Lösungen. Version

Multimedia und Datenkommunikation

IBM SPSS Statistics Version 22. Installationsanweisungen für Linux (Lizenz für gleichzeitig angemeldete Benutzer)

PROFIS Software Lösungen

Schlüsselaustausch. Version 1.1. APCS Power Clearing and Settlement AG

Mastermind. Testplan. Hochschule Luzern Technik & Architektur. Programmieren 2 FS12. Gruppe 10

Enterprise Mobility, Live! Pascal Kaufmann, Swisscom IT Services AG 12. Juni 2013

Einrichtung einer eduroam Verbindung unter dem Betriebssystem Android

Handbuch für die DailyDeal Entwertungs-App

PlaceCam 3. Die Videokonferenzsoftware für Windows und Mac OS X. Jürgen Völkel Vertrieb daviko GmbH

Informatik Sommercamp 2012

Lokale Installation von DotNetNuke 4 ohne IIS

Der schnelle Weg zu Ihrer eigenen App

Wie schafft man eine optimale Multiscreen-Experience?

Mobile App Testing - Mit der richtigen Strategie zum Erfolg

VDW Statistik Portal Häufig gestellte Fragen. Version 1.2 ( Katharina Düngfelder & Markus A. Litters) Vorwort

Albert Dengg. Graz,

ITIL und Entwicklungsmodelle: Die zwei Kulturen

64% 9% 27% INFORMATIONSSTATUS INTERNET. CHART 1 Ergebnisse in Prozent. Es fühlen sich über das Internet - gut informiert. weniger gut informiert

Deckblatt. SIMOCRANE V4.1 Hotfix 2 SIMOCRANE CMS. FAQ Juli Service & Support. Answers for industry.

mobile Responsive Design Lässt Ihre Anwendungen und Inhalte auf jedem Gerät einfach gut aussehen

WLGauge: : Web Link Gauge to Measure the Quality of External WWW Links. Andreas Lübcke

IVE-W530BT. Bluetooth Software Update Manual mit Android Telefonen

ways2gether ipad App Guide

Mobiler. Vernetzter. Emotionaler. Wie SBG auf die Entwicklung des Internets reagiert

Liferay 6.2. Open Source IT-Dienstleister. Ein modernes Open Source Portal System. forwerts solutions GmbH, Gabriele Maas

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Rene Schneider GEBIT Solutions GmbH. Integrity - ein innovatives Tool zur Acceptance-Test-Automatisierung

Java Entwicklung für Embedded Devices Best & Worst Practices!

Drei Jahre ADAC Apps in den App Stores Lessons learned

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Testen mit JUnit. Motivation

Was ist das Tekla Warehouse

c t HTML 5 App Werbemittelanforderung

Bewusster Umgang mit Smartphones

Anleitung für Zugriff auf Hosted Zarafa

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

- XPages 2.0? René Winkelmeyer

Angebot. UVV-Prüfungen und Wartungen von mobilen Abfallpressen

Antrag auf finanzielle Förderung der UniX-AG An den Studentischen Rat der Leibniz Universität Hannover

Lizenzen auschecken. Was ist zu tun?

Vitaminkapseln.ch - SEO Check

Anwendungsbeispiele Sign Live! Secure Mail Gateway

Leonhard. Ottinger. career:forum richtig guten. journalismus. lernen

doubleslash Net-Business GmbH

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Bitte beachten Sie. Nur für Kabelmodem! - 1 -

Information zum Projekt. Mitwirkung von Menschen mit Demenz in ihrem Stadtteil oder Quartier

f Link Datenbank installieren und einrichten

die wichtigsten online-tools für augenoptiker websites

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Transkript:

Android-Testautomatisierung mit Robotium Daniel Knott XING AG @dnlkntt http://www.adventuresinqa.com

Daniel Knott Manager Quality Assurance @dnlkntt daniel.knott@xing.com Daniel Knott hat einen technischen Hintergrund in verschiedenen Programmiersprachen und Quality Assurance Tools. Nach seiner Ausbildung bei der IBM Deutschland GmbH studierte er an der Fachhochschule Wiesbaden Informatik mit dem Schwerpunkt Softwarequalitätssicherung. Seit 2010 arbeitet Daniel Knott als Manager Quality Assurance bei der XING AG. In verschiedenen Projekten ist er verantwortlich für das Testmanagement, für die Ausführung der Testfälle sowie für die Testautomatisierung. Zur Zeit arbeitet Daniel Knott im XING mobile Team. Dort ist er verantwortlich für das Testmanagement und die Testautomatisierung der Android und iphone App. Sein XING Profil https://www.xing.com/profile/daniel_knott. Sein Blog http://www.adventuresinqa.com

Inhaltsverzeichnis 1. XING AG 2. Warum Testautomatisierung? 3. Robotium 4. Code / Live Demo 5. Vor -und Nachteile 6. Best Practices 3

XING AG Gegründet 2003 als OpenBC Seit 2006 XING AG > 11.4 Mio. Mitglieder > 5,1 Mio. Mitglieder DACH > 779.000 Premium-Mitglieder 4

XING AG 5

XING AG >80 Entwickler Ruby on Rails Perl Java Objective-C HTML/CSS/JavaScript 6

XING AG +400 7

XING AG 50 Releases im Jahr 8

Warum Testautomatisierung? 9

Warum Testautomatisierung? - Typische Fehler Falsche Übersetzung App lässt sich nicht installieren App crash während der Ausführung App friert bei Nutzung ein Keine Verbindung zum Backend Fehlende Ressourcen Layout- Probleme Probleme mit Landscape / Portrait Mode 10

Warum Testautomatisierung? 11

Warum Testautomatisierung? 12

Robotium Allgemeines Black Box Test Tool Basiert auf Java und JUnit 3 Support von Android 1.6 4.x Simuliert User- InterakTonen Device & Simulator Einfacher AuVau Testet APK Files 13

Robotium Wichtige Methoden clickonbutton(text) clickontext(text) clickonimage(id) clickinlist(line) searchtext(text) entertext(id, text) waitforactivity(name, timeout) waitforview(view) It s like Selenium, but for Android TM 14

Robotium Was wird benötigt? Android APK/ Source Code IDE zum Bauen des Projektes Android Development Tools als Plugin Android SDK Java Development Kit RoboTum Version 3.1 15

Code-Beispiele 16

Code Login public void testloginfailed() throws Exception { } solo.entertext(0, wrongusername ); solo.entertext(1, wrongpassword ); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_login)); solo.waitforactivity("com.xing.android.activities.spinnerloginactivity", 2000); asserttrue("error: Error message is not shown", verifytextispresent(solo.getstring( com.xing.android.r.string.dialog_error_body))); solo.clickonbutton(solo.getstring(com.xing.android.r.string.dialog_button)); 17

Code Login public void testloginfailed() throws Exception { } solo.entertext(0, wrongusername ); solo.entertext(1, wrongpassword ); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_login)); solo.waitforactivity("com.xing.android.activities.spinnerloginactivity", 2000); asserttrue("error: Error message is not shown", verifytextispresent(solo.getstring( com.xing.android.r.string.dialog_error_body))); solo.clickonbutton(solo.getstring(com.xing.android.r.string.dialog_button)); 18

Code Login public void testloginfailed() throws Exception { } solo.entertext(0, wrongusername ); solo.entertext(1, wrongpassword ); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_login)); solo.waitforactivity("com.xing.android.activities.spinnerloginactivity", 2000); asserttrue("error: Error message is not shown", verifytextispresent(solo.getstring( com.xing.android.r.string.dialog_error_body))); solo.clickonbutton(solo.getstring(com.xing.android.r.string.dialog_button)); 19

Code Login public void testloginfailed() throws Exception { } solo.entertext(0, wrongusername ); solo.entertext(1, wrongpassword ); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_login)); solo.waitforactivity("com.xing.android.activities.spinnerloginactivity", 2000); asserttrue("error: Error message is not shown", verifytextispresent(solo.getstring( com.xing.android.r.string.dialog_error_body))); solo.clickonbutton(solo.getstring(com.xing.android.r.string.dialog_button)); 20

Code Login 21

Code Status Update public void teststatusupdate() throws Exception { solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_news)); solo.entertext(0, bin auf der Mobile Developer Conference ); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_send)); solo.clickonmenuitem(solo.getstring(com.xing.android.r.string.menu_refresh)); asserttrue("error: Update is not shown", searchtext( bin auf der Mobile Developer Conference )); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_delete)); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_yes)); assertfalse("error: Update is still shown", searchtext( bin auf der Mobile Developer Conference )); } 22

Code Status Update public void teststatusupdate() throws Exception { solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_news)); solo.entertext(0, bin auf der Mobile Developer Conference ); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_send)); solo.clickonmenuitem(solo.getstring(com.xing.android.r.string.menu_refresh)); asserttrue("error: Update is not shown", searchtext( bin auf der Mobile Developer Conference )); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_delete)); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_yes)); assertfalse("error: Update is still shown", searchtext( bin auf der Mobile Developer Conference )); } 23

Code Status Update public void teststatusupdate() throws Exception { solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_news)); solo.entertext(0, bin auf der Mobile Developer Conference ); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_send)); solo.clickonmenuitem(solo.getstring(com.xing.android.r.string.menu_refresh)); asserttrue("error: Update is not shown", searchtext( bin auf der Mobile Developer Conference )); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_delete)); solo.clickonbutton(solo.getstring(com.xing.android.r.string.button_yes)); assertfalse("error: Update is still shown", searchtext( bin auf der Mobile Developer Conference )); } 24

Code Status Update 25

Vor -und Nachteile 26

Vorteile Testen auf echter Hardware Verschiedene Versionen testen Einfacher Aufbau App Source Code nicht notwendig Integration in CI Server (Jenkins) Open Source Starke Community 27

Nachteile Ausführungszeit sehr langsam Kein Web-View- oder Flash-Support Keine Screenshotfunktion Kein Multi Device Support Kein Zugriff auf andere APKs Reaktion auf Anrufe, SMS, Tweets Kamera, Sensoren, Bluetooth 28

Best Practices 29

Best Practices Testcode und Entwicklungscode in gleicher Sprache Sicherung aller Tests in einer Versionskontrolle Tools kombinieren Continuous Integration Server nutzen Android Simulator meiden Gerootete Geräte meiden In allen Netzen Testen Die Kunden kennen! 30

Vielen Dank für Ihre Aufmerksamkeit Daniel Knott Manager Quality Assurance daniel.knott@xing.com @dnlkntt http://www.adventuresinqa.com/ XING Android App: https://market.android.com/details?id=com.xing.android Das professionelle Netzwerk www.xing.com 31

Links & Referenzen Robotium http://code.google.com/p/robotium/ Android Logo http://www.android.com/media/wallpaper/gif/android_logo.gif Twitter Logo https://si0.twimg.com/a/1318896278/images/logos/twitter_newbird_white.png Businesswoman http://www.istockphoto.com/stock-photo-16742115-businesswoman-holdinga-blank-sign-isolated.php Letters, by davide vizzini limbte http://www.flickr.com/photos/limbte/4007115435/ Robotium Logo http://f.hatena.ne.jp/images/fotolife/r/re_shikajiro/ 20110601/20110601224550.jpg Samsung Logo http://samsung.de/webdownloads/pressedownloads/ samsung_standard_brandline_c.jpg 32

Links & Referenzen HTC Logo http://fs02.androidpit.info/userfiles/44704/image/bilder/htc/htc_logo.jpg LG Logo http://upload.wikimedia.org/wikipedia/de/f/f1/lg-logo.svg Sony Ericsson Logo http://www.xginsider.com/wp-content/uploads/2010/09/sony-ericsson- Logo.jpg Motorola Logo http://www.android-hilfe.de/attachments/android-news/42706d1310665896- motorola-atrix-ab-sofort-deutschland-erhaeltlich-ohne-lapdock-logomotorola.jpg] Huawei Logo http://www.android.com/media/wallpaper/gif/android_logo.gif Mobile Developer Conference Logo http://www.mobile-developer-conference.de/content/download/6794/45545/file/ Logo_MDC.gif 33