Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mobile Testautomatisierung mit Robotium

3 views

Published on

Mobile Testautomatisierung mit Robotium

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Mobile Testautomatisierung mit Robotium

  1. 1. Android Testautomatisierung mit dem Framework Robotium Daniel Knott XING AG @dnlkntt http://www.adventuresinqa.com
  2. 2. 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 (XING Suche, XING Empfehlungen) war 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 aller Mobilen Apps der XING AG, dazu gehören iPhone, Android, touch.xing.com, Windows Phone 7 und die Blackberry App. Neben dem Testmanagement betreut Daniel die Testautomatisierung der iPhone und Android App. Zusätzlich zu seiner Tätigkeit bei der XING AG ist Daniel ein Sprecher auf agilen Konferenzen. Sein XING Profil https://www.xing.com/profile/Daniel_Knott. Sein Blog http://www.adventuresinqa.com
  3. 3. 1.  XING AG 2.  Warum Testautomatisierung? 3.  Robotium 4.  Code / Live Demo 5.  Vor -und Nachteile 6.  Best Practices Inhaltsverzeichnis 3Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012
  4. 4. 4Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 XING AG  Gegründet 2003 als OpenBC  Seit 2006 XING AG  > 11.7 Mio. Mitglieder  ~25% Mobiler Traffic
  5. 5. XING AG 5Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012
  6. 6. 6Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Releases im Jahr 50 XING AG
  7. 7. 7Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 XING AG
  8. 8. 8Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Warum Testautomatisierung?
  9. 9. Warum Testautomatisierung? 9Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012
  10. 10. Warum Testautomatisierung? 10Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 App  lässt  sich  nicht  installieren   Layout-­‐Probleme   Probleme  mit  Landscape  /  Portrait  Mode   Falsche  Übersetzung   Fehlende  Ressourcen   Keine  Verbindung  zum  Backend  
  11. 11. 11Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Warum Testautomatisierung?
  12. 12. 12Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Warum Testautomatisierung?
  13. 13. 13Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Robotium
  14. 14. Robotium – Allgemeines 14Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Black  Box  Test  Tool   Basiert  auf  Java  und  JUnit  3   Support  von  Android  1.6  –  4.x   Simuliert  User-­‐InterakQonen   Einfacher  AuSau   Device  &  Simulator   Testet  APK  Files  
  15. 15. Robotium – Methoden 15Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 It‘s likeSelenium, but for AndroidTM clickOnButton(text) clickOnText(text) clickOnImage(id) clickInList(line) searchText(text) enterText(id, text) waitForActivity(name, timeout) waitForView(view)
  16. 16. 16Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Code-Beispiele
  17. 17. Code – Login 17Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012  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. 18. Code – Login 18Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012  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. 19. Code – Login 19Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012  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. 20. Code – Login 20Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012  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));    }  
  21. 21. Code – Login 21Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012
  22. 22. Code – Status Update 22Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012  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. 23. 23Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012  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”));    }   Code – Status Update
  24. 24. 24Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012  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”));    }   Code – Status Update
  25. 25. 25Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Code – Status Update
  26. 26. 26Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Vor -und Nachteile
  27. 27. Vorteile 27Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Testen auf echter Hardware Verschiedene Versionen testen Einfacher Aufbau App Source Code nicht notwendig Integration in CI Server (Jenkins) Open Source Starke Community
  28. 28. Nachteile 28Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 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
  29. 29. 29Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Best Practices
  30. 30. Best Practices 30Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Gerootete Geräte meiden Testcode und Entwicklungscode in gleicher Sprache Sicherung aller Tests in einer Versionskontrolle Tools kombinieren Continuous Integration Server nutzen Android Simulator meiden In allen Netzen Testen Die Kunden kennen!
  31. 31. Das professionelle Netzwerk www.xing.com Vielen Dank für Ihre Aufmerksamkeit 31Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 Daniel Knott Manager Quality Assurance daniel.knott@xing.com @dnlkntt http://www.adventuresinqa.com/
  32. 32. Links & Referenzen 32Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 •  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-holding-a-blank- sign-isolated.php •  Letters, by davide vizzini limbtehttp://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 •  HTC Logo http://fs02.androidpit.info/userfiles/44704/image/Bilder/HTC/HTC_Logo.jpg
  33. 33. 33Android Testautomatisierung mit dem Framework Robotium | Daniel Knott | @dnlkntt | Iqnite 2012 | Düsseldorf, 24.04.2012 •  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-logo-motorola.jpg] •  Huawei Logo http://www.android.com/media/wallpaper/gif/android_logo.gif •  Iqnite Logo http://www.bredex.de/web/tl_files/BredexDateien/pictures/events/ iqnite_Logo_Deutschland2012_rgb.jpg •  Google Play Logo http://www.android.com/images/brand/android_app_on_play_logo_small.png •  Apple App Store Logo http://www.inext.me/wp-content/uploads/2011/09/ app-store_logo.png •  Windows Market Place Logo http://modmyi.com/attachments/forums/iphone-4- new-skins-themes-launches/483774d1290368882-release-windows-phone-7-hd-market- place-2x.png Links & Referenzen

×