• Save
iOS-Entwicklung - der agile Weg
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

iOS-Entwicklung - der agile Weg

on

  • 1,441 views

This presentation shows you the way to optimize your iOS development with continuous integration, automatic unit tests, automatic acceptance tests and one click deployments.

This presentation shows you the way to optimize your iOS development with continuous integration, automatic unit tests, automatic acceptance tests and one click deployments.

Statistics

Views

Total Views
1,441
Views on SlideShare
1,427
Embed Views
14

Actions

Likes
4
Downloads
0
Comments
0

2 Embeds 14

http://lanyrd.com 11
http://paper.li 3

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

iOS-Entwicklung - der agile Weg Presentation Transcript

  • 1. Sven Günther – it-agile GmbHiOS-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
  • 3. 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 Skeletonwww.it-agile.de
  • 6. www.it-agile.de
  • 7. www.it-agile.de
  • 8. Jenkins-Logo (c) www.jenkins-ci.orgwww.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
  • 23. Unit Testswww.it-agile.de
  • 24. Unit Tests it SenT estingKOC Unit / pple.co m) per.a( develo www.it-agile.de
  • 25. Unit Tests it SenT estingK (gith G ub.co HUnitOC 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 HUnitOC 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
  • 31. Automatische Akzeptanztestswww.it-agile.de
  • 32. Automatische Akzeptanztests tion UI A utomaApple m) per.a pple.co( develo www.it-agile.de
  • 33. Automatische Akzeptanztests tion (code U UI A utoma .goog ISpecApple 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 ISpecApple 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 xcodebuildxcodebuild -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
  • 57. 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.orgwww.it-agile.de
  • 60. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.orgwww.it-agile.de
  • 61. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.orgwww.it-agile.de
  • 62. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.orgwww.it-agile.de
  • 63. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.com Jenkins-Logo (c) www.jenkins-ci.orgwww.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
  • 66. 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