36
Automatisierte Akzeptanztests für iOS-Apps Sven Günther • it-agile GmbH

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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fragen?