Vortrag im Rahmen des 2. eBay Tech Talks am 22.11.2012.
Es werden verschiedene Testarten vorgestellt, die die Qualität der mobile.de iOS apps sichern: Unit Tests, und vor allem BDD Akzeptanztests mit Cucumber und Frank.
2. Thomas Weese - Senior iOS Dev.
Holger Hammel - Team Lead; Java Dev.
mobile.de
• Deutschlands größter Online-Fahrzeugmarkt
• Teil des eBay-Konzerns
• 150 Leute, 60 Entwickler; Berlin
• 1,4 Mill. Fahrzeuge
• ~ 1 Milliarde Page Impressions / Monat (7/2012)
• rund 30% Traffic Share mobile devices
mobile.de Apps-Team
• iOS, Android, mobile webapps;
• 13 Teammitglieder: Dev, Product, QA, Siteops
2
3. Apps werden komplexer
• Inhaltliche Komplexität
• iOS-Versionen und Gerätevielfalt
• Sprach- und Länderversionen
– mobile.de, automobile.it, automobile.fr iOS
6
68%
iOS
5
23%
• Lange Lebenszeit iOS
4
9%
3
4. Bugs sind sehr teuer
• Apple Review => Mehrere Tage live
• Kundenzufriedenheit sinkt
• Schlechte Rezensionen
• Marketingkampagnen verpuffen
• Neue Funktionen müssen warten
4
5. Automatisiert Testen? JA!
Zwar
• Initial Aufwand nötig: Setup, Lernen, Pflege
Aber
• Reduziert manuellen Testaufwand
• Ermöglicht kurze Releasezyklen
• Sichert Qualität
• Spart Geld und Nerven
5
7. Testarten - Überblick
Unit Tests
OCUnit
AkzeptanzTests
Given I touch the table cell Cucumber -> Frank -> Simulator
When I enter the text "14532”
Session Based Tests
Das Team & die Hardware
7
8. Feature - Aufgabenstellung
A user can filter the result set by location and see his configuration on
the search form.
8
10. Akzeptanztests: Cucumber
• Behaviour Driven Development Tool
– ähnlich Concordion
• für zB Java, .NET, via Frank mit Objective-C
• Beschreibung von erwartetem Verhalten in
natürlicher Sprache: english, deutsch, …
• Pattern: Given – When – Then
• Implementierung der Tests mit Ruby
http://cukes.info
10
11. Cucumber Szenario: Location Text
Scenario: A user can filter the result
set by a location and see his
configuration on the search form
!
Given I touch the table cell marked "PLZ, UmkreisCell”!
When I enter the text "14532" from keyboard to the !
text field "Adresseneingabe”!
Then I should see "14532 Kleinmachnow, Deutschland" !
in view "Adresseneingabe"!
!
When I touch "Zurück”!
Then I should see !
"14532 Kleinmachnow, Deutschland, 100km” !
in view "PLZ, UmkreisCell”
! 11
12. Akzeptanztest Implementierung
Cucumber Akzeptanzkriterien
When I enter the text "14532" from keyboard to the
!text field "Adresseneingabe”!
=>
Ruby Implementierung
When /^I enter the text "([^"]*)" from keyboard !
to the text field "([^"]*)"$/ do !
|text_to_type, text_field_mark|!
!
selector = "view marked:'#{text_field_mark}' first”!
12
13. Frank
• Cucumber Testszenarien auf
iOS Simulator
Given I touch the table cell
• Steuerung des Simulators When I enter the text "14532”
Then I should see
– Touch, Swipe usw.
• Selektieren und Inspektion von Elementen
http://testingwithfrank.com
13