Daniel Knott
XING AG
@dnlkntt
http://www.adventuresinqa.com
Agile Testautomatisierung
im XING Mobile Team
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
1.  XING AG
2.  Agile Entwicklung der XING Mobile Apps
3.  Herausforderungen in der mobilen Entwicklung
4.  Agile Testautomatisierung
5.  Werkzeuge
6.  Best Practices
Inhaltsverzeichnis
2Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
3Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
XING AG
 Gegründet 2003 als OpenBC
 Seit 2006 XING AG
 > 11.7 Mio. Mitglieder
 ~ 25% Mobile Traffic
XING AG
4Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
XING AG
5Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Releases
50
XING AG
6Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
7Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Agile Entwicklung der
XING Mobile Apps
Agile Entwicklung der XING Mobile Apps
8Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Agile Entwicklung der XING Mobile Apps
9Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Selected	
  Backlog	
  
Product	
  Backlog	
  
Feature/ Discovery
Es2ma2on	
   Developing	
   Tes2ng	
  
Internal	
  Beta	
  Phase	
  
10Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Herausforderungen
in der mobilen
Entwicklung
Herausforderungen – Plattformen
11Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Herausforderungen – Plattformen
12Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Verschiedene	
  Hersteller	
  
Verschiedene	
  User	
  Interfaces	
  
Unterschiedliche	
  Hardware	
  
Viele	
  So5ware-­‐Versionen	
  
Ein	
  Hersteller	
  
Unterschiedliche	
  Hardware	
  
Viele	
  So5ware-­‐Versionen	
  
Herausforderungen – I18N
13Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Herausforderungen – Datennetze
14Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
15Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Agile Test-
automatisierung
Agile Testautomatisierung – Warum?
16Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Agile Testautomatisierung – Warum?
17Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
App	
  lässt	
  sich	
  nicht	
  installieren	
  
Layout-­‐Probleme	
  
Probleme	
  mit	
  Landscape	
  /	
  Portrait	
  Mode	
  
Falsche	
  Übersetzungen	
  
Fehlende	
  Resourcen	
  
Keine	
  Verbindung	
  zum	
  Backend	
  
Agile Testautomatisierung – Beispiel QR Code
18Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
19Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Werkzeuge
Werkzeuge – Robotium
20Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Black	
  Box	
  Test	
  Tool	
  
Basiert	
  auf	
  Java	
  und	
  JUnit	
  3	
  
Support	
  für	
  Android	
  1.6	
  –	
  4.x	
  
Simuliert	
  User	
  InteracVon	
  
Einfacher	
  AuWau	
  
Device	
  &	
  Simulator	
  
Testet	
  gegen	
  APK	
  Datei	
  
Werkzeuge – Robotium
21Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));	
  
	
  }	
  
Werkzeuge – Robotium
22Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));	
  
	
  }	
  
Werkzeuge – Robotium
23Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));	
  
	
  }	
  
Werkzeuge – Robotium
24Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));	
  
	
  }	
  
Werkzeuge – Robotium
25Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Werkzeuge – KIF (Keep It Functional)
26Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Grey	
  Box	
  Test	
  Tool	
  
ObjecVve	
  C	
  
Device	
  &	
  Simulator	
  
Simuliert	
  User	
  InteracVon	
  
Sehr	
  schnell	
  &	
  CI	
  IntegraVon	
  
Werkzeuge – KIF (Keep It Functional)
27Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
+	
  (id)scenarioLoginWithWrongCredentials	
  {	
  
KIFTestScenario	
  *scenario	
  =	
  [KIFTestScenario	
  scenarioWithDescription:@"Test	
  
	
  the	
  login	
  wrong	
  credentials"];	
  
[scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongusername"	
  	
  	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  User	
  Name"]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongpassword"	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  Password"]];	
  	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToTapViewWithAccessibilityLabel:@"done"]];	
  
[scenario	
  addStep:[KIFTestStep	
  
	
  stepToWaitForViewWithAccessibilityLabel:LocalizedString 	
   	
   	
   	
  	
  	
  
	
  (@"ID_LOGIN_FAILED_MESSAGE")]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  
	
  stepToTapViewWithAccessibilityLabel:LocalizedString
	
  (@"ACC_FIELD_USER_NAME_LOGIN")]];	
  
Werkzeuge – KIF (Keep It Functional)
28Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
+	
  (id)scenarioLoginWithWrongCredentials	
  {	
  
KIFTestScenario	
  *scenario	
  =	
  [KIFTestScenario	
  scenarioWithDescription:@"Test	
  
	
  the	
  login	
  wrong	
  credentials"];	
  
[scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongusername"	
  	
  	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  User	
  Name"]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongpassword"	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  Password"]];	
  	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToTapViewWithAccessibilityLabel:@"done"]];	
  
[scenario	
  addStep:[KIFTestStep	
  
	
  stepToWaitForViewWithAccessibilityLabel:LocalizedString 	
   	
   	
   	
  	
  	
  
	
  (@"ID_LOGIN_FAILED_MESSAGE")]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  
	
  stepToTapViewWithAccessibilityLabel:LocalizedString
	
  (@"ACC_FIELD_USER_NAME_LOGIN")]];	
  
Werkzeuge – KIF (Keep It Functional)
29Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
+	
  (id)scenarioLoginWithWrongCredentials	
  {	
  
KIFTestScenario	
  *scenario	
  =	
  [KIFTestScenario	
  scenarioWithDescription:@"Test	
  
	
  the	
  login	
  wrong	
  credentials"];	
  
[scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongusername"	
  	
  	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  User	
  Name"]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongpassword"	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  Password"]];	
  	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToTapViewWithAccessibilityLabel:@"done"]];	
  
[scenario	
  addStep:[KIFTestStep	
  
	
  stepToWaitForViewWithAccessibilityLabel:LocalizedString 	
   	
   	
   	
  	
  	
  
	
  (@"ID_LOGIN_FAILED_MESSAGE")]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  
	
  stepToTapViewWithAccessibilityLabel:LocalizedString
	
  (@"ACC_FIELD_USER_NAME_LOGIN")]];	
  
Werkzeuge – KIF (Keep It Functional)
30Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
+	
  (id)scenarioLoginWithWrongCredentials	
  {	
  
KIFTestScenario	
  *scenario	
  =	
  [KIFTestScenario	
  scenarioWithDescription:@"Test	
  
	
  the	
  login	
  wrong	
  credentials"];	
  
[scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongusername"	
  	
  	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  User	
  Name"]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToEnterText:@"wrongpassword"	
  	
  
	
  	
  intoViewWithAccessibilityLabel:@"Login	
  Password"]];	
  	
  
	
  [scenario	
  addStep:[KIFTestStep	
  stepToTapViewWithAccessibilityLabel:@"done"]];	
  
[scenario	
  addStep:[KIFTestStep	
  
	
  stepToWaitForViewWithAccessibilityLabel:LocalizedString 	
   	
   	
   	
  	
  	
  
	
  (@"ID_LOGIN_FAILED_MESSAGE")]];	
  
	
  [scenario	
  addStep:[KIFTestStep	
  
	
  stepToTapViewWithAccessibilityLabel:LocalizedString
	
  (@"ACC_FIELD_USER_NAME_LOGIN")]];	
  
Werkzeuge – KIF (Keep It Functional)
31Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
32Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Best
Practices
Best Practices
33Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Kunden	
  kennen!	
  
TestautomaVsierung	
  schreiben	
  
Werkzeuge	
  Kombinieren	
  
Crowd-­‐/	
  Cloud	
  TesVng	
  nutzen	
  
Nutzer	
  und	
  den	
  Markt	
  beobachten	
  
Testcode	
  und	
  Anwendung	
  in	
  gleicher	
  Sprache	
  
Versionskontrolle	
  nutzen	
  
ConVnuous	
  IntegraVon	
  nutzen	
  
Mobile	
  Simulatoren	
  meiden	
  
Vielen Dank
für Ihre
Aufmerksamkeit!
The professional network
www.xing.com
Daniel Knott
Manager Quality Assurance
daniel.knott@xing.com
@dnlkntt
http://www.adventuresinqa.com/
34Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
Links & Referenzen
35Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  Robotium [http://code.google.com/p/robotium/]
  KIF [http://corner.squareup.com/2011/07/ios-integration-testing.html]
  WaxSim [https://github.com/square/waxsim]
  Hockeykit [http://hockeykit.net/]
  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 limbte [http://www.flickr.com/photos/limbte/4007115435/]
  Little Dish, by Juan de Dios Santander Vela [http://www.flickr.com/photos/juandesant/
209098053]
  App Store Logo [http://upload.wikimedia.org/wikipedia/de/0/05/App-Store-Logo.png]
  Robot [http://www.nassaulibrary.org/eastrock/robot.jpg]
  Robotium Logo [http://f.hatena.ne.jp/images/fotolife/r/re_shikajiro/20110601/
20110601224550.jpg]
  Square Logo [http://c580513.r13.cf2.rackcdn.com/wp-content/uploads/2011/07/Square_Logo
_Landscape1-500x214.png?9d7bd4]
Links & Referenzen
36Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  Apple Logo [http://www.lte-tablets.de/files/2011/08/apple_logo.jpg]
  Android Logo [http://www.android.com/media/wallpaper/gif/android_logo.gif]
  Windows Phone Logo [http://upload.wikimedia.org/wikipedia/de/thumb/2/23/Windows_
Phone_Logo.svg/500px-Windows_Phone_Logo.svg.png]
  Blackberry Logo [http://us.blackberry.com/legal/bblogo_gray_003.jpg]
  WebOS Logo [http://upload.wikimedia.org/wikipedia/en/e/e0/WebOS_logo.svg]
  Symbian Logo [http://upload.wikimedia.org/wikipedia/de/thumb/c/c8/Symbian_OS_
logo.svg/686px-Symbian_OS_logo.svg.png]
  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]

Mobile Testautomatisierung

  • 1.
  • 2.
    Daniel Knott Manager QualityAssurance @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.
    1.  XING AG 2. Agile Entwicklung der XING Mobile Apps 3.  Herausforderungen in der mobilen Entwicklung 4.  Agile Testautomatisierung 5.  Werkzeuge 6.  Best Practices Inhaltsverzeichnis 2Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 4.
    3Agile Testautomatisierung imXING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 XING AG  Gegründet 2003 als OpenBC  Seit 2006 XING AG  > 11.7 Mio. Mitglieder  ~ 25% Mobile Traffic
  • 5.
    XING AG 4Agile Testautomatisierungim XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 6.
    XING AG 5Agile Testautomatisierungim XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Releases 50
  • 7.
    XING AG 6Agile Testautomatisierungim XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 8.
    7Agile Testautomatisierung imXING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Agile Entwicklung der XING Mobile Apps
  • 9.
    Agile Entwicklung derXING Mobile Apps 8Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 10.
    Agile Entwicklung derXING Mobile Apps 9Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Selected  Backlog   Product  Backlog   Feature/ Discovery Es2ma2on   Developing   Tes2ng   Internal  Beta  Phase  
  • 11.
    10Agile Testautomatisierung imXING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Herausforderungen in der mobilen Entwicklung
  • 12.
    Herausforderungen – Plattformen 11AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 13.
    Herausforderungen – Plattformen 12AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Verschiedene  Hersteller   Verschiedene  User  Interfaces   Unterschiedliche  Hardware   Viele  So5ware-­‐Versionen   Ein  Hersteller   Unterschiedliche  Hardware   Viele  So5ware-­‐Versionen  
  • 14.
    Herausforderungen – I18N 13AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 15.
    Herausforderungen – Datennetze 14AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 16.
    15Agile Testautomatisierung imXING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Agile Test- automatisierung
  • 17.
    Agile Testautomatisierung –Warum? 16Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 18.
    Agile Testautomatisierung –Warum? 17Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 App  lässt  sich  nicht  installieren   Layout-­‐Probleme   Probleme  mit  Landscape  /  Portrait  Mode   Falsche  Übersetzungen   Fehlende  Resourcen   Keine  Verbindung  zum  Backend  
  • 19.
    Agile Testautomatisierung –Beispiel QR Code 18Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 20.
    19Agile Testautomatisierung imXING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Werkzeuge
  • 21.
    Werkzeuge – Robotium 20AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Black  Box  Test  Tool   Basiert  auf  Java  und  JUnit  3   Support  für  Android  1.6  –  4.x   Simuliert  User  InteracVon   Einfacher  AuWau   Device  &  Simulator   Testet  gegen  APK  Datei  
  • 22.
    Werkzeuge – Robotium 21AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));    }  
  • 23.
    Werkzeuge – Robotium 22AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));    }  
  • 24.
    Werkzeuge – Robotium 23AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));    }  
  • 25.
    Werkzeuge – Robotium 24AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.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));    }  
  • 26.
    Werkzeuge – Robotium 25AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 27.
    Werkzeuge – KIF(Keep It Functional) 26Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Grey  Box  Test  Tool   ObjecVve  C   Device  &  Simulator   Simuliert  User  InteracVon   Sehr  schnell  &  CI  IntegraVon  
  • 28.
    Werkzeuge – KIF(Keep It Functional) 27Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 +  (id)scenarioLoginWithWrongCredentials  {   KIFTestScenario  *scenario  =  [KIFTestScenario  scenarioWithDescription:@"Test    the  login  wrong  credentials"];   [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongusername"            intoViewWithAccessibilityLabel:@"Login  User  Name"]];    [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongpassword"        intoViewWithAccessibilityLabel:@"Login  Password"]];      [scenario  addStep:[KIFTestStep  stepToTapViewWithAccessibilityLabel:@"done"]];   [scenario  addStep:[KIFTestStep    stepToWaitForViewWithAccessibilityLabel:LocalizedString              (@"ID_LOGIN_FAILED_MESSAGE")]];    [scenario  addStep:[KIFTestStep    stepToTapViewWithAccessibilityLabel:LocalizedString  (@"ACC_FIELD_USER_NAME_LOGIN")]];  
  • 29.
    Werkzeuge – KIF(Keep It Functional) 28Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 +  (id)scenarioLoginWithWrongCredentials  {   KIFTestScenario  *scenario  =  [KIFTestScenario  scenarioWithDescription:@"Test    the  login  wrong  credentials"];   [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongusername"            intoViewWithAccessibilityLabel:@"Login  User  Name"]];    [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongpassword"        intoViewWithAccessibilityLabel:@"Login  Password"]];      [scenario  addStep:[KIFTestStep  stepToTapViewWithAccessibilityLabel:@"done"]];   [scenario  addStep:[KIFTestStep    stepToWaitForViewWithAccessibilityLabel:LocalizedString              (@"ID_LOGIN_FAILED_MESSAGE")]];    [scenario  addStep:[KIFTestStep    stepToTapViewWithAccessibilityLabel:LocalizedString  (@"ACC_FIELD_USER_NAME_LOGIN")]];  
  • 30.
    Werkzeuge – KIF(Keep It Functional) 29Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 +  (id)scenarioLoginWithWrongCredentials  {   KIFTestScenario  *scenario  =  [KIFTestScenario  scenarioWithDescription:@"Test    the  login  wrong  credentials"];   [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongusername"            intoViewWithAccessibilityLabel:@"Login  User  Name"]];    [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongpassword"        intoViewWithAccessibilityLabel:@"Login  Password"]];      [scenario  addStep:[KIFTestStep  stepToTapViewWithAccessibilityLabel:@"done"]];   [scenario  addStep:[KIFTestStep    stepToWaitForViewWithAccessibilityLabel:LocalizedString              (@"ID_LOGIN_FAILED_MESSAGE")]];    [scenario  addStep:[KIFTestStep    stepToTapViewWithAccessibilityLabel:LocalizedString  (@"ACC_FIELD_USER_NAME_LOGIN")]];  
  • 31.
    Werkzeuge – KIF(Keep It Functional) 30Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 +  (id)scenarioLoginWithWrongCredentials  {   KIFTestScenario  *scenario  =  [KIFTestScenario  scenarioWithDescription:@"Test    the  login  wrong  credentials"];   [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongusername"            intoViewWithAccessibilityLabel:@"Login  User  Name"]];    [scenario  addStep:[KIFTestStep  stepToEnterText:@"wrongpassword"        intoViewWithAccessibilityLabel:@"Login  Password"]];      [scenario  addStep:[KIFTestStep  stepToTapViewWithAccessibilityLabel:@"done"]];   [scenario  addStep:[KIFTestStep    stepToWaitForViewWithAccessibilityLabel:LocalizedString              (@"ID_LOGIN_FAILED_MESSAGE")]];    [scenario  addStep:[KIFTestStep    stepToTapViewWithAccessibilityLabel:LocalizedString  (@"ACC_FIELD_USER_NAME_LOGIN")]];  
  • 32.
    Werkzeuge – KIF(Keep It Functional) 31Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 33.
    32Agile Testautomatisierung imXING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Best Practices
  • 34.
    Best Practices 33Agile Testautomatisierungim XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012 Kunden  kennen!   TestautomaVsierung  schreiben   Werkzeuge  Kombinieren   Crowd-­‐/  Cloud  TesVng  nutzen   Nutzer  und  den  Markt  beobachten   Testcode  und  Anwendung  in  gleicher  Sprache   Versionskontrolle  nutzen   ConVnuous  IntegraVon  nutzen   Mobile  Simulatoren  meiden  
  • 35.
    Vielen Dank für Ihre Aufmerksamkeit! Theprofessional network www.xing.com Daniel Knott Manager Quality Assurance daniel.knott@xing.com @dnlkntt http://www.adventuresinqa.com/ 34Agile Testautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012
  • 36.
    Links & Referenzen 35AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012   Robotium [http://code.google.com/p/robotium/]   KIF [http://corner.squareup.com/2011/07/ios-integration-testing.html]   WaxSim [https://github.com/square/waxsim]   Hockeykit [http://hockeykit.net/]   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 limbte [http://www.flickr.com/photos/limbte/4007115435/]   Little Dish, by Juan de Dios Santander Vela [http://www.flickr.com/photos/juandesant/ 209098053]   App Store Logo [http://upload.wikimedia.org/wikipedia/de/0/05/App-Store-Logo.png]   Robot [http://www.nassaulibrary.org/eastrock/robot.jpg]   Robotium Logo [http://f.hatena.ne.jp/images/fotolife/r/re_shikajiro/20110601/ 20110601224550.jpg]   Square Logo [http://c580513.r13.cf2.rackcdn.com/wp-content/uploads/2011/07/Square_Logo _Landscape1-500x214.png?9d7bd4]
  • 37.
    Links & Referenzen 36AgileTestautomatisierung im XING Mobile Team | Daniel Knott @dnlkntt | Hamburg, 16.04.2012   Apple Logo [http://www.lte-tablets.de/files/2011/08/apple_logo.jpg]   Android Logo [http://www.android.com/media/wallpaper/gif/android_logo.gif]   Windows Phone Logo [http://upload.wikimedia.org/wikipedia/de/thumb/2/23/Windows_ Phone_Logo.svg/500px-Windows_Phone_Logo.svg.png]   Blackberry Logo [http://us.blackberry.com/legal/bblogo_gray_003.jpg]   WebOS Logo [http://upload.wikimedia.org/wikipedia/en/e/e0/WebOS_logo.svg]   Symbian Logo [http://upload.wikimedia.org/wikipedia/de/thumb/c/c8/Symbian_OS_ logo.svg/686px-Symbian_OS_logo.svg.png]   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]