Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install...
Transcript of Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install...
![Page 1: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/1.jpg)
Automatisierte Akzeptanztests für iOS-Apps
Sven Günther • it-agile GmbH
![Page 2: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/2.jpg)
Wer entwickelt native Apps?
![Page 3: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/3.jpg)
Wer testet die Apps selbst?
![Page 4: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/4.jpg)
Wer hat externe Testdienstleister?
![Page 5: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/5.jpg)
Wer hat Unit-Tests?
![Page 6: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/6.jpg)
Wer hat Akzeptanztests?
![Page 7: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/7.jpg)
Wer hat automatisierte Akzeptanztests?
![Page 8: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/8.jpg)
Wer macht Continuous Integration?
![Page 9: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/9.jpg)
Was sind Akzeptanztests?
![Page 10: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/10.jpg)
Testquadrantennach
einer Idee von Brian Marick
technisch orientiert
fachlich orientiertun
ters
tütz
en
die
Entw
ickl
ung
bew
erte
n di
e An
wen
dung
Unit-Tests
Integration Tests
Akzeptanz Tests
Performance Tests
Last Tests
User Tests
Explorative Testsα / β Tests
“-ility" Tests
automatisiert & manuell
automatisiert mit Hilfe von Tools
manuell
![Page 11: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/11.jpg)
Teste das Verhalten
• Klickpfade durch die App
• wird erwartete Logik erfüllt
• werden externe Schnittstellen korrekt bedient
• ist die App richtig “verdrahtet”
![Page 12: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/12.jpg)
• Stimmt das Layout?
• Werden alle Assets geladen?
• Stimmen die Constraints?
Teste das Design
![Page 13: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/13.jpg)
Akzeptanztest = Ausführbare Spezifikation
![Page 14: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/14.jpg)
Anatomie einer ausführbaren Spezifikation
ausführbares Beispiel beschreibt die Anforderungen
ausführbare Schritte bildet das Vokabular ab
Treiber steuert die zu testende Anwendung
Anwendung getestetes System
![Page 15: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/15.jpg)
Ausführbares Beispiel
• beschreibt Funktionalität
• erlaubt direktes Feedback ob Funktionalität umgesetzt ist
• unterstützt die Kommunikation zwischen Entwickler und Fachabteilung
![Page 16: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/16.jpg)
Cucumber
http://cukes.info
works with Ruby, Java, .NET, Flex or other languages
gem install cucumber
![Page 17: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/17.jpg)
Given <Vorbedingung>When <Handlung, Aktion>Then <beobachtbares Ergebnis>
Given - When - Then
Given the browser shows the google homepageWhen I enter "iPhone" into the the search fieldThen I should see search results regarding "iPhone"
![Page 18: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/18.jpg)
Feature FileFeature: Addition In Order to Avoid silly mistakes As a math idiot I want to be told the sum of two numbers
Scenario: Add two integers Given I haven entered 50 into the calculator And I have entered 70 into the calculator When I I press add Then the result should be 120 on the screen
![Page 19: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/19.jpg)
Step-Definition
Given /I have entered (.*) into the calculator/ do |n| calculator = Calculator.new calculator.push(n.to_i) end
![Page 20: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/20.jpg)
Frankwww.testingwithfrank.comiOS-Treiber für cucumber
gem install frank-cucumber
![Page 21: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/21.jpg)
Demo
![Page 22: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/22.jpg)
Wartbare Akzeptanztests
![Page 23: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/23.jpg)
Tests sollen die Intention ausdrücken
![Page 24: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/24.jpg)
Feature File
Given I am at the Amazon homepage When I click on “My Account” And I enter username “hugo” And I enter password “secret” And I click on “latest orders” … And I click on “OK” Then I should see my order cancelled
![Page 25: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/25.jpg)
Kurze prägnante Tests
Given I am at my orders overview page When I cancel my latest order Then I should see a confirmation info
![Page 26: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/26.jpg)
Page Object PatternAPI über HTML
• findElementByID() • click() • getText() • setText()
![Page 27: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/27.jpg)
Page Object PatternAPI über Applikation
• login() • getRecentOrders() • cancelOrder()
![Page 28: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/28.jpg)
Demo
![Page 29: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/29.jpg)
Weitere Frameworks
![Page 30: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/30.jpg)
KIF• https://github.com/kif-framework/KIF
• Tests werden in Objective-C geschrieben (oder auch in Swift)
• Keine Bridge zwischen Objekten
• Direkte Integration in XCode-Test-Umgebung
• Läuft auch mit XCode-Bots
![Page 31: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/31.jpg)
UIAutomation• Läuft über Instruments
• Tests werden in Javascript geschrieben
• direkt von Apple für diesen Zweck vorgesehen
• Von Haus aus kein Testframework vorhanden
• wenig Literatur und Unterstützung aus Community
![Page 32: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/32.jpg)
Zucchini• Setzt auf UIAutomation auf
• Tests werden in CoffeeScript geschrieben und vom Framework nach Javascript übersetzt
• erlaubt den direkten Vergleich von Screens über Screenshots (Test des Designs)
![Page 33: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/33.jpg)
Was sonst noch geht
![Page 34: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/34.jpg)
ScreenshotsErzeuge Screenshots aus deinem Testlauf für
• verschiedene Devices • verschiedene Sprachen
frankly_screenshot()
Strippe den Screenshot • Status Magic (http://shinydevelopment.com/status-magic/)
![Page 35: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/35.jpg)
VideoNutze einen Testlauf für ein Video
• AppStore-Marketing
• Website-Marketing
![Page 36: Automatisierte Akzeptanztests für iOS-Apps€¦ · iOS-Treiber für cucumber gem install frank-cucumber. Demo. Wartbare Akzeptanztests. Tests sollen die Intention ausdrücken. Feature](https://reader034.fdocuments.net/reader034/viewer/2022042320/5f09e9d57e708231d4291b05/html5/thumbnails/36.jpg)
Fragen?