SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Sven Günther – it-agile GmbH


iOS-Entwicklung –
der agile Weg
   Softwareentwickler seit 1997
   Objective-C seit 2007
   iOS Entwicklung seit 2009
   Berater und Coach für agile Softwareentwicklung bei it-agile
   Twitter: @inevs




                        www.it-agile.de
www.it-agile.de
Als Nutzer möchte ich eine Suche
  nach einem Fahrzeug ausführen
  und als Ergebnis die Anzahl der
  Treffer sehen, um zu prüfen, ob
  die Suche weiter eingeschränkt
            werden kann.




www.it-agile.de
Als Nutzer möchte ich eine Suche
  nach einem Fahrzeug ausführen
  und als Ergebnis die Anzahl der
  Treffer sehen, um zu prüfen, ob
  die Suche weiter eingeschränkt
            werden kann.




      Walking Skeleton




www.it-agile.de
www.it-agile.de
www.it-agile.de
Jenkins-Logo (c) www.jenkins-ci.org




www.it-agile.de
git push




                             Jenkins-Logo (c) www.jenkins-ci.org




           www.it-agile.de
git push   Compile




                                Jenkins-Logo (c) www.jenkins-ci.org




              www.it-agile.de
git push   Compile         UnitTest




                                      Jenkins-Logo (c) www.jenkins-ci.org




              www.it-agile.de
Akzeptanz-
git push   Compile         UnitTest
                                         Test




                                                   Jenkins-Logo (c) www.jenkins-ci.org




              www.it-agile.de
Akzeptanz-            Beta-
git push   Compile         UnitTest
                                         Test              Deploym.




                                                   Jenkins-Logo (c) www.jenkins-ci.org




              www.it-agile.de
Betatester




             www.it-agile.de
Weiterentwicklung in kleinen Schritten




           www.it-agile.de
Weiterentwicklung in kleinen Schritten



                Ergebnisanzeige




           www.it-agile.de
Weiterentwicklung in kleinen Schritten



                 Ergebnisanzeige




         Suchparameter




            www.it-agile.de
Weiterentwicklung in kleinen Schritten



                 Ergebnisanzeige




         Suchparameter



                                   Design

            www.it-agile.de
Testgetriebene Entwicklung - TDD




          www.it-agile.de
Testgetriebene Entwicklung - TDD

        neue Funktionalität wird durch Test beschrieben


                             Test




           www.it-agile.de
Testgetriebene Entwicklung - TDD

        neue Funktionalität wird durch Test beschrieben


                             Test




                                     Green
                                               Funktionalität wird
                                                 implementiert




           www.it-agile.de
Testgetriebene Entwicklung - TDD

            neue Funktionalität wird durch Test beschrieben


                                   Test




                                                   Funktionalität wird
     Code wird        Refactor            Green
                                                     implementiert
    aufgeräumt




                 www.it-agile.de
Unit Tests




www.it-agile.de
Unit Tests



                        it
          SenT  estingK
OC Unit /      pple.co
                       m)
         per.a
( develo




                   www.it-agile.de
Unit Tests



                        it
          SenT  estingK                 (gith      G
                                             ub.co HUnit
OC Unit /      pple.co
                       m)                         m/ga
         per.a                                         briel/
( develo                                                      gh-unit
                                                                     )




                   www.it-agile.de
Unit Tests



                        it
          SenT  estingK                   (gith      G
                                               ub.co HUnit
OC Unit /      pple.co
                       m)                           m/ga
         per.a                                           briel/
( develo                                                        gh-unit
                                                                       )

                                  GTMTest
                             (code.google.com)




                   www.it-agile.de
Unit Tests



                            it
              SenT  estingK                   (gith      G
                                                   ub.co HUnit
    OC Unit /      pple.co
                           m)                           m/ga
             per.a                                           briel/
    ( develo                                                        gh-unit
                                                                           )

                                      GTMTest
                                 (code.google.com)



   Testen kleine Einheiten (Klassen)
   Laufen schnell bei jedem Build
   Vorbeugen gegen Regression
   Erlauben Refactorings


                       www.it-agile.de
Testen im iOS-SDK


          Logic-Tests



Testen einzelne Funktionalität
    isoliert von anderen
NIB-Files werden nicht
    instantiiert
ViewController werden nicht
    vollständig initialisiert
CoreData (ManagedObjects)
    nicht testbar



                        www.it-agile.de
Testen im iOS-SDK


          Logic-Tests                           Application-Tests



Testen einzelne Funktionalität            Tests laufen gegen die
    isoliert von anderen                    gesamte App
NIB-Files werden nicht                    App wird zur Laufzeit gegen
    instantiiert                            das TestBundle gelinkt
ViewController werden nicht               Tests laufen nur auf dem
    vollständig initialisiert               Device
CoreData (ManagedObjects)                 für Unit-Tests nicht geeignet
    nicht testbar



                        www.it-agile.de
OC-Unit - Anatomie eines Unit-Tests




          www.it-agile.de
Automatische Akzeptanztests




www.it-agile.de
Automatische Akzeptanztests



                    tion
       UI A  utoma
Apple                  m)
         per.a pple.co
( develo




                  www.it-agile.de
Automatische Akzeptanztests



                    tion            (code     U
       UI A  utoma                       .goog ISpec
Apple                  m)
         per.a pple.co                        le.co
                                                    m/p/
( develo                                                 ui   spec)




                  www.it-agile.de
Automatische Akzeptanztests



                    tion              (code     U
       UI A  utoma                         .goog ISpec
Apple                  m)
         per.a pple.co                          le.co
                                                      m/p/
( develo                                                   ui   spec)

                               Frank
                    (github.com/moredip/Frank)




                  www.it-agile.de
Automatische Akzeptanztests



                         tion              (code     U
            UI A  utoma                         .goog ISpec
     Apple                  m)
              per.a pple.co                          le.co
                                                           m/p/
     ( develo                                                   ui   spec)

                                    Frank
                         (github.com/moredip/Frank)



   Testen der fachlichen Funktionalität der App
   Akzeptanzkriterien werden durch ProductOwner
    beschrieben
   Tests bilden die Akzeptanzkriterien ab
   Zeigen Fortschritt der Entwicklung durch grüne Tests
                       www.it-agile.de
Frank




    App wird um HTTP-Server erweitert




                                         Abb. (c) github.com/moredip/Frank




                   www.it-agile.de
Frank




    App wird um HTTP-Server erweitert
    Über FrankDriver wird die UI angesteuert


                                                Abb. (c) github.com/moredip/Frank




                    www.it-agile.de
Frank




    App wird um HTTP-Server erweitert
    Über FrankDriver wird die UI angesteuert
    Testscripte werden mit cucumber geschrieben

                                                   Abb. (c) github.com/moredip/Frank




                    www.it-agile.de
Frank




    App wird um HTTP-Server erweitert
    Über FrankDriver wird die UI angesteuert
    Testscripte werden mit cucumber geschrieben
    Tests laufen gegen die App im Simulator
                                                   Abb. (c) github.com/moredip/Frank




                    www.it-agile.de
Frank




    App wird um HTTP-Server erweitert
    Über FrankDriver wird die UI angesteuert
    Testscripte werden mit cucumber geschrieben
    Tests laufen gegen die App im Simulator
                                                    Abb. (c) github.com/moredip/Frank
    Views mit Accessibility-Label werden erkannt


                    www.it-agile.de
Cucumber

   http://cukes.info/




                         www.it-agile.de
Cucumber

   http://cukes.info/
   BDD: Behaviour Driven Development
        Verhalten beschreiben im Plain Text
        Step Definition in Ruby schreiben
        Ausführen und sehen dass es fehlschlägt
        Code schreiben um Test zum Erfolg zu bringen
        Test erneut ausführen
        Wiederholen




                          www.it-agile.de
Cucumber

   http://cukes.info/
   BDD: Behaviour Driven Development
        Verhalten beschreiben im Plain Text
        Step Definition in Ruby schreiben
        Ausführen und sehen dass es fehlschlägt
        Code schreiben um Test zum Erfolg zu bringen
        Test erneut ausführen
        Wiederholen
   kommt urspünglich aus Webentwicklung




                          www.it-agile.de
Cucumber

   http://cukes.info/
   BDD: Behaviour Driven Development
        Verhalten beschreiben im Plain Text
        Step Definition in Ruby schreiben
        Ausführen und sehen dass es fehlschlägt
        Code schreiben um Test zum Erfolg zu bringen
        Test erneut ausführen
        Wiederholen
   kommt urspünglich aus Webentwicklung
   Viele Portierungen u.a. für Java, .Net, ...




                          www.it-agile.de
Cucumber - Feature




         www.it-agile.de
Cucumber Step Definition




         www.it-agile.de
Cucumber ausführen




        www.it-agile.de
Cucumber Reports




        www.it-agile.de
Integrations-Server

 Continuous Integration
     Frühes Feedback und weniger Risiko durch ständige Integration
     Vermeidet Big-Bang-Integration
     Potentiell auslieferbare Software zu jeder Zeit
     Build läuft immer auf dem letzten Stand im SourceCodeRepository




                                                                       Mac Mini (c) www.apple.com
                                                                Jenkins-Logo (c) www.jenkins-ci.org




                      www.it-agile.de
Integrations-Server

 Continuous Integration
     Frühes Feedback und weniger Risiko durch ständige Integration
     Vermeidet Big-Bang-Integration
     Potentiell auslieferbare Software zu jeder Zeit
     Build läuft immer auf dem letzten Stand im SourceCodeRepository




                                                                       Mac Mini (c) www.apple.com
                                                                Jenkins-Logo (c) www.jenkins-ci.org




                      www.it-agile.de
Integrations-Server

 Continuous Integration
     Frühes Feedback und weniger Risiko durch ständige Integration
     Vermeidet Big-Bang-Integration
     Potentiell auslieferbare Software zu jeder Zeit
     Build läuft immer auf dem letzten Stand im SourceCodeRepository




                                                                       Mac Mini (c) www.apple.com
                                                                Jenkins-Logo (c) www.jenkins-ci.org




                      www.it-agile.de
Xcode auf der Console


                                   xcodebuild




xcodebuild -target "myapp" -configuration "debug" build




                 www.it-agile.de
Makefiles




            www.it-agile.de
Makefiles




            www.it-agile.de
Jenkins
   www.jenkins-ci.org
   führt Jobs aus und zeigt Zustand der Jobs an
   Java-Webanwendung
   Configuration
      pollt git-Repository auf Änderungen (alle 5 min)
      bei Änderungen wird aktueller Stand geladen
      führt make aus (compile, test, deploy)




                         www.it-agile.de
Jenkins
   www.jenkins-ci.org
   führt Jobs aus und zeigt Zustand der Jobs an
   Java-Webanwendung
   Configuration
      pollt git-Repository auf Änderungen (alle 5 min)
      bei Änderungen wird aktueller Stand geladen
      führt make aus (compile, test, deploy)



   Wichtig
     ➡ Parallelität der Build-Queue auf 1 setzen




                         www.it-agile.de
www.it-agile.de
One Click Deployments

   manuelle Buildschritte vermeiden
   leicht installierbare Version erzeugen
   Over the Air Deployment
      Betabuilder (http://www.hanchorllc.com/2010/08/24/introducing-ios-beta-builder/)
      Testflight (http://testflightapp.com/)




                            www.it-agile.de
XCode-Logo (c) www.apple.com
                        git-Logo (c) www.git-scm.com
                  Jenkins-Logo (c) www.jenkins-ci.org




www.it-agile.de
XCode-Logo (c) www.apple.com
                        git-Logo (c) www.git-scm.com
                  Jenkins-Logo (c) www.jenkins-ci.org




www.it-agile.de
XCode-Logo (c) www.apple.com
                        git-Logo (c) www.git-scm.com
                  Jenkins-Logo (c) www.jenkins-ci.org




www.it-agile.de
XCode-Logo (c) www.apple.com
                        git-Logo (c) www.git-scm.com
                  Jenkins-Logo (c) www.jenkins-ci.org




www.it-agile.de
XCode-Logo (c) www.apple.com
                        git-Logo (c) www.git-scm.com
                  Jenkins-Logo (c) www.jenkins-ci.org




www.it-agile.de
Betabuilder
   Ruby-Gem von Luke Redpath
   https://github.com/lukeredpath/betabuilder
   Distribution-Zertifikate müssen auf CI-Server verfügbar sein




                      www.it-agile.de
Betabuilder
   Ruby-Gem von Luke Redpath
   https://github.com/lukeredpath/betabuilder
   Distribution-Zertifikate müssen auf CI-Server verfügbar sein




   Gute Möglichkeit Apps für Betatest zu deployen ist TestFlight
   https://testflightapp.com/
                      www.it-agile.de
www.it-agile.de
Fazit

   Vorgehen mit Walking Skeleton hat sehr geholfen
   Betatest sehr gut angenommen worden
   neue App lässt sich ständig auf verschiedene Geräte ‘Over The Air’ spielen
   Frank-Tests helfen gut gegen Regression
   Frank ist noch sehr Beta, hat sich in den letzten 6 Monaten aber stark
    verbessert




                      www.it-agile.de
Vielen Dank für die Aufmerksamkeit




          www.it-agile.de

Weitere ähnliche Inhalte

Ähnlich wie iOS-Entwicklung - der agile Weg

BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...Marc Müller
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und GerritStefan Lay
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeNico Orschel
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungMarc Müller
 
Test Management mit Visual Studio 2012
Test Management mit Visual Studio 2012Test Management mit Visual Studio 2012
Test Management mit Visual Studio 2012Nico Orschel
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in ScrumFrank Düsterbeck
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJSSebastian Springer
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Nico Orschel
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
 
Unit testing mit Javascript
Unit testing mit JavascriptUnit testing mit Javascript
Unit testing mit Javascriptjoergreichert
 
Softwaremonitoring mit prometheus
Softwaremonitoring mit prometheusSoftwaremonitoring mit prometheus
Softwaremonitoring mit prometheusGeorg Öttl
 
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...NETWAYS
 

Ähnlich wie iOS-Entwicklung - der agile Weg (20)

BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
 
Scaled Scrum bei der Post CH AG
Scaled Scrum bei der Post CH AGScaled Scrum bei der Post CH AG
Scaled Scrum bei der Post CH AG
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und Gerrit
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für Fortgeschrittende
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
 
Test Management mit Visual Studio 2012
Test Management mit Visual Studio 2012Test Management mit Visual Studio 2012
Test Management mit Visual Studio 2012
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in Scrum
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
20110406 activiti mai
20110406 activiti mai20110406 activiti mai
20110406 activiti mai
 
Unit testing mit Javascript
Unit testing mit JavascriptUnit testing mit Javascript
Unit testing mit Javascript
 
Softwaremonitoring mit prometheus
Softwaremonitoring mit prometheusSoftwaremonitoring mit prometheus
Softwaremonitoring mit prometheus
 
Gearconf 2011
Gearconf 2011Gearconf 2011
Gearconf 2011
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
Eat Your Own Dog Food
Eat Your Own Dog FoodEat Your Own Dog Food
Eat Your Own Dog Food
 
20110406 activiti april
20110406 activiti april20110406 activiti april
20110406 activiti april
 
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
 

Mehr von Sven Günther

Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317Sven Günther
 
Was Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssenWas Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssenSven Günther
 
Mit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauenMit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauenSven Günther
 
Continuous Integration for iOS Developer
Continuous Integration for iOS DeveloperContinuous Integration for iOS Developer
Continuous Integration for iOS DeveloperSven Günther
 
iOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsiOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsSven Günther
 
Pitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-EntwicklungPitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-EntwicklungSven Günther
 

Mehr von Sven Günther (6)

Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317
 
Was Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssenWas Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssen
 
Mit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauenMit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauen
 
Continuous Integration for iOS Developer
Continuous Integration for iOS DeveloperContinuous Integration for iOS Developer
Continuous Integration for iOS Developer
 
iOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsiOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click Deployments
 
Pitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-EntwicklungPitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-Entwicklung
 

iOS-Entwicklung - der agile Weg

  • 1. Sven Günther – it-agile GmbH iOS-Entwicklung – der agile Weg
  • 2. Softwareentwickler seit 1997  Objective-C seit 2007  iOS Entwicklung seit 2009  Berater und Coach für agile Softwareentwicklung bei it-agile  Twitter: @inevs www.it-agile.de
  • 4. Als Nutzer möchte ich eine Suche nach einem Fahrzeug ausführen und als Ergebnis die Anzahl der Treffer sehen, um zu prüfen, ob die Suche weiter eingeschränkt werden kann. www.it-agile.de
  • 5. Als Nutzer möchte ich eine Suche nach einem Fahrzeug ausführen und als Ergebnis die Anzahl der Treffer sehen, um zu prüfen, ob die Suche weiter eingeschränkt werden kann. Walking Skeleton www.it-agile.de
  • 9. git push Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 10. git push Compile Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 11. git push Compile UnitTest Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 12. Akzeptanz- git push Compile UnitTest Test Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 13. Akzeptanz- Beta- git push Compile UnitTest Test Deploym. Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 14. Betatester www.it-agile.de
  • 15. Weiterentwicklung in kleinen Schritten www.it-agile.de
  • 16. Weiterentwicklung in kleinen Schritten Ergebnisanzeige www.it-agile.de
  • 17. Weiterentwicklung in kleinen Schritten Ergebnisanzeige Suchparameter www.it-agile.de
  • 18. Weiterentwicklung in kleinen Schritten Ergebnisanzeige Suchparameter Design www.it-agile.de
  • 19. Testgetriebene Entwicklung - TDD www.it-agile.de
  • 20. Testgetriebene Entwicklung - TDD neue Funktionalität wird durch Test beschrieben Test www.it-agile.de
  • 21. Testgetriebene Entwicklung - TDD neue Funktionalität wird durch Test beschrieben Test Green Funktionalität wird implementiert www.it-agile.de
  • 22. Testgetriebene Entwicklung - TDD neue Funktionalität wird durch Test beschrieben Test Funktionalität wird Code wird Refactor Green implementiert aufgeräumt www.it-agile.de
  • 24. Unit Tests it SenT estingK OC Unit / pple.co m) per.a ( develo www.it-agile.de
  • 25. Unit Tests it SenT estingK (gith G ub.co HUnit OC Unit / pple.co m) m/ga per.a briel/ ( develo gh-unit ) www.it-agile.de
  • 26. Unit Tests it SenT estingK (gith G ub.co HUnit OC Unit / pple.co m) m/ga per.a briel/ ( develo gh-unit ) GTMTest (code.google.com) www.it-agile.de
  • 27. Unit Tests it SenT estingK (gith G ub.co HUnit OC Unit / pple.co m) m/ga per.a briel/ ( develo gh-unit ) GTMTest (code.google.com)  Testen kleine Einheiten (Klassen)  Laufen schnell bei jedem Build  Vorbeugen gegen Regression  Erlauben Refactorings www.it-agile.de
  • 28. Testen im iOS-SDK Logic-Tests Testen einzelne Funktionalität isoliert von anderen NIB-Files werden nicht instantiiert ViewController werden nicht vollständig initialisiert CoreData (ManagedObjects) nicht testbar www.it-agile.de
  • 29. Testen im iOS-SDK Logic-Tests Application-Tests Testen einzelne Funktionalität  Tests laufen gegen die isoliert von anderen gesamte App NIB-Files werden nicht  App wird zur Laufzeit gegen instantiiert das TestBundle gelinkt ViewController werden nicht  Tests laufen nur auf dem vollständig initialisiert Device CoreData (ManagedObjects)  für Unit-Tests nicht geeignet nicht testbar www.it-agile.de
  • 30. OC-Unit - Anatomie eines Unit-Tests www.it-agile.de
  • 32. Automatische Akzeptanztests tion UI A utoma Apple m) per.a pple.co ( develo www.it-agile.de
  • 33. Automatische Akzeptanztests tion (code U UI A utoma .goog ISpec Apple m) per.a pple.co le.co m/p/ ( develo ui spec) www.it-agile.de
  • 34. Automatische Akzeptanztests tion (code U UI A utoma .goog ISpec Apple m) per.a pple.co le.co m/p/ ( develo ui spec) Frank (github.com/moredip/Frank) www.it-agile.de
  • 35. Automatische Akzeptanztests tion (code U UI A utoma .goog ISpec Apple m) per.a pple.co le.co m/p/ ( develo ui spec) Frank (github.com/moredip/Frank)  Testen der fachlichen Funktionalität der App  Akzeptanzkriterien werden durch ProductOwner beschrieben  Tests bilden die Akzeptanzkriterien ab  Zeigen Fortschritt der Entwicklung durch grüne Tests www.it-agile.de
  • 36. Frank  App wird um HTTP-Server erweitert Abb. (c) github.com/moredip/Frank www.it-agile.de
  • 37. Frank  App wird um HTTP-Server erweitert  Über FrankDriver wird die UI angesteuert Abb. (c) github.com/moredip/Frank www.it-agile.de
  • 38. Frank  App wird um HTTP-Server erweitert  Über FrankDriver wird die UI angesteuert  Testscripte werden mit cucumber geschrieben Abb. (c) github.com/moredip/Frank www.it-agile.de
  • 39. Frank  App wird um HTTP-Server erweitert  Über FrankDriver wird die UI angesteuert  Testscripte werden mit cucumber geschrieben  Tests laufen gegen die App im Simulator Abb. (c) github.com/moredip/Frank www.it-agile.de
  • 40. Frank  App wird um HTTP-Server erweitert  Über FrankDriver wird die UI angesteuert  Testscripte werden mit cucumber geschrieben  Tests laufen gegen die App im Simulator Abb. (c) github.com/moredip/Frank  Views mit Accessibility-Label werden erkannt www.it-agile.de
  • 41. Cucumber  http://cukes.info/ www.it-agile.de
  • 42. Cucumber  http://cukes.info/  BDD: Behaviour Driven Development  Verhalten beschreiben im Plain Text  Step Definition in Ruby schreiben  Ausführen und sehen dass es fehlschlägt  Code schreiben um Test zum Erfolg zu bringen  Test erneut ausführen  Wiederholen www.it-agile.de
  • 43. Cucumber  http://cukes.info/  BDD: Behaviour Driven Development  Verhalten beschreiben im Plain Text  Step Definition in Ruby schreiben  Ausführen und sehen dass es fehlschlägt  Code schreiben um Test zum Erfolg zu bringen  Test erneut ausführen  Wiederholen  kommt urspünglich aus Webentwicklung www.it-agile.de
  • 44. Cucumber  http://cukes.info/  BDD: Behaviour Driven Development  Verhalten beschreiben im Plain Text  Step Definition in Ruby schreiben  Ausführen und sehen dass es fehlschlägt  Code schreiben um Test zum Erfolg zu bringen  Test erneut ausführen  Wiederholen  kommt urspünglich aus Webentwicklung  Viele Portierungen u.a. für Java, .Net, ... www.it-agile.de
  • 45. Cucumber - Feature www.it-agile.de
  • 46. Cucumber Step Definition www.it-agile.de
  • 47. Cucumber ausführen www.it-agile.de
  • 48. Cucumber Reports www.it-agile.de
  • 49. Integrations-Server Continuous Integration  Frühes Feedback und weniger Risiko durch ständige Integration  Vermeidet Big-Bang-Integration  Potentiell auslieferbare Software zu jeder Zeit  Build läuft immer auf dem letzten Stand im SourceCodeRepository Mac Mini (c) www.apple.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 50. Integrations-Server Continuous Integration  Frühes Feedback und weniger Risiko durch ständige Integration  Vermeidet Big-Bang-Integration  Potentiell auslieferbare Software zu jeder Zeit  Build läuft immer auf dem letzten Stand im SourceCodeRepository Mac Mini (c) www.apple.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 51. Integrations-Server Continuous Integration  Frühes Feedback und weniger Risiko durch ständige Integration  Vermeidet Big-Bang-Integration  Potentiell auslieferbare Software zu jeder Zeit  Build läuft immer auf dem letzten Stand im SourceCodeRepository Mac Mini (c) www.apple.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 52. Xcode auf der Console xcodebuild xcodebuild -target "myapp" -configuration "debug" build www.it-agile.de
  • 53. Makefiles www.it-agile.de
  • 54. Makefiles www.it-agile.de
  • 55. Jenkins  www.jenkins-ci.org  führt Jobs aus und zeigt Zustand der Jobs an  Java-Webanwendung  Configuration  pollt git-Repository auf Änderungen (alle 5 min)  bei Änderungen wird aktueller Stand geladen  führt make aus (compile, test, deploy) www.it-agile.de
  • 56. Jenkins  www.jenkins-ci.org  führt Jobs aus und zeigt Zustand der Jobs an  Java-Webanwendung  Configuration  pollt git-Repository auf Änderungen (alle 5 min)  bei Änderungen wird aktueller Stand geladen  führt make aus (compile, test, deploy)  Wichtig ➡ Parallelität der Build-Queue auf 1 setzen www.it-agile.de
  • 58. One Click Deployments  manuelle Buildschritte vermeiden  leicht installierbare Version erzeugen  Over the Air Deployment  Betabuilder (http://www.hanchorllc.com/2010/08/24/introducing-ios-beta-builder/)  Testflight (http://testflightapp.com/) www.it-agile.de
  • 59. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 60. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 61. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 62. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 63. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.org www.it-agile.de
  • 64. Betabuilder  Ruby-Gem von Luke Redpath  https://github.com/lukeredpath/betabuilder  Distribution-Zertifikate müssen auf CI-Server verfügbar sein www.it-agile.de
  • 65. Betabuilder  Ruby-Gem von Luke Redpath  https://github.com/lukeredpath/betabuilder  Distribution-Zertifikate müssen auf CI-Server verfügbar sein  Gute Möglichkeit Apps für Betatest zu deployen ist TestFlight  https://testflightapp.com/ www.it-agile.de
  • 67. Fazit  Vorgehen mit Walking Skeleton hat sehr geholfen  Betatest sehr gut angenommen worden  neue App lässt sich ständig auf verschiedene Geräte ‘Over The Air’ spielen  Frank-Tests helfen gut gegen Regression  Frank ist noch sehr Beta, hat sich in den letzten 6 Monaten aber stark verbessert www.it-agile.de
  • 68. Vielen Dank für die Aufmerksamkeit www.it-agile.de

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n