iOS-Entwicklung - der agile Weg

1.348 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.348
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
8
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • \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
  • \n
  • \n
  • \n
  • \n
  • \n
  • iOS-Entwicklung - der agile Weg

    1. 1. Sven Günther – it-agile GmbHiOS-Entwicklung –der agile Weg
    2. 2.  Softwareentwickler seit 1997 Objective-C seit 2007 iOS Entwicklung seit 2009 Entwickler und Coach für agile Softwareentwicklung bei it-agile Twitter: @iNevs
    3. 3. 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.
    4. 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. Walking Skeleton
    5. 5. Jenkins-Logo (c) www.jenkins-ci.org
    6. 6. git push Jenkins-Logo (c) www.jenkins-ci.org
    7. 7. git push Compile Jenkins-Logo (c) www.jenkins-ci.org
    8. 8. git push Compile UnitTest Jenkins-Logo (c) www.jenkins-ci.org
    9. 9. Akzeptanz-git push Compile UnitTest Test Jenkins-Logo (c) www.jenkins-ci.org
    10. 10. Akzeptanz- Beta-git push Compile UnitTest Test Deploym. Jenkins-Logo (c) www.jenkins-ci.org
    11. 11. Betatester
    12. 12. Weiterentwicklung in kleinen Schritten
    13. 13. Weiterentwicklung in kleinen Schritten Ergebnisanzeige
    14. 14. Weiterentwicklung in kleinen Schritten Ergebnisanzeige Suchparameter
    15. 15. Weiterentwicklung in kleinen Schritten Ergebnisanzeige Suchparameter Design
    16. 16. Testgetriebene Entwicklung - TDD
    17. 17. Testgetriebene Entwicklung - TDD neue Funktionalität wird durch Test beschrieben Test
    18. 18. Testgetriebene Entwicklung - TDD neue Funktionalität wird durch Test beschrieben Test Green Funktionalität wird implementiert
    19. 19. Testgetriebene Entwicklung - TDD neue Funktionalität wird durch Test beschrieben Test Funktionalität wird Code wird Refactor Green implementiert aufgeräumt
    20. 20. Unit Tests
    21. 21. Unit Tests it SenT estingKOCUnit / pple.co m) per.a(develo
    22. 22. Unit Tests it SenT estingK (gith G ub.co HUnitOCUnit / pple.co m) m/ga per.a briel/(develo gh-u nit )
    23. 23. Unit Tests it SenT estingK (gith G ub.co HUnitOCUnit / pple.co m) m/ga per.a briel/(develo gh-u nit ) GTMTest (code.google.com)
    24. 24. Unit Tests it SenT estingK (gith G ub.co HUnit OCUnit / pple.co m) m/ga per.a briel/ (develo gh-u nit ) GTMTest (code.google.com) Treiben Dein Design während der Entwicklung Geben Dir ein Sicherheitsnetz für Änderungen Beugen Regression vor Erlauben Refactorings
    25. 25. 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
    26. 26. 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
    27. 27. OC-Unit - Anatomie eines Unit-Tests
    28. 28. Mocking
    29. 29. Mocking OCMock(ocmock.org)
    30. 30. Mocking OCMock (ocmock.org) Stellvertreterobjekte in Tests dienen als Stellvertreter für reale Objekte sind essentiell zum Entkoppeln von Abhängigkeiten Simulieren Interaktionen mit anderen Objekten (z.B. Netzwerk)  Mocks = Stellvertreter die erwartetes Verhalten überprüfen  Stubs = Stellvertreter mit einem definierten Ein- / Ausgabeverhalten
    31. 31. Beispiel#import <SenTestingKit/SenTestingKit.h>#import <UIKit/UIKit.h>#import <OCMock/OCMock.h>@interface SmokeTest : SenTestCase@end@implementation SmokeTest-(void) testThatUsesMocks {! id mock = [OCMockObject mockForClass:[NSString class]];! [[[mock stub] andReturn:@"i am a mock"] lowercaseString];!! STAssertEqualObjects(@"i am a mock", [mock lowercaseString], nil);}@end
    32. 32. Konfiguration
    33. 33. Automatische Akzeptanztests
    34. 34. Automatische Akzeptanztests tion UI A utomaApple m) per.apple.co(develo
    35. 35. Automatische Akzeptanztests tion UI A utoma KIFApple m) (githu per.apple.co b.c om/sq(develo uare /KIF)
    36. 36. Automatische Akzeptanztests tion UI A utoma KIFApple m) (githu per.apple.co b.c om/sq(develo uare /KIF) Frank (github.com/moredip/Frank)
    37. 37. Automatische Akzeptanztests tion UI A utoma KIF Apple m) (githu per.apple.co b.c om/sq (develo uare /KIF) Frank (github.com/moredip/Frank) Testen die fachliche Funktionalität der App Treiben die fachliche Weiterentwicklung Akzeptanzkriterien werden durch ProductOwner beschrieben Tests bilden die Akzeptanzkriterien ab
    38. 38. Frank  App wird um HTTP-Server erweitert Abb. (c) github.com/moredip/Frank
    39. 39. Frank  App wird um HTTP-Server erweitert  Über FrankDriver wird die UI angesteuert Abb. (c) github.com/moredip/Frank
    40. 40. Frank  App wird um HTTP-Server erweitert  Über FrankDriver wird die UI angesteuert  Testscripte werden mit cucumber geschrieben Abb. (c) github.com/moredip/Frank
    41. 41. 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
    42. 42. 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
    43. 43. Cucumber http://cukes.info/
    44. 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
    45. 45. 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
    46. 46. 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, ...
    47. 47. Demo Frank und Cucumber
    48. 48. Cucumber Reports
    49. 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
    50. 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
    51. 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
    52. 52. Xcode auf der Console xcodebuildxcodebuild -target "myapp" -configuration "debug" build
    53. 53. Makefiles
    54. 54. Makefiles
    55. 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)
    56. 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
    57. 57. 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/)
    58. 58. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.comJenkins-Logo (c) www.jenkins-ci.org
    59. 59. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.comJenkins-Logo (c) www.jenkins-ci.org
    60. 60. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.comJenkins-Logo (c) www.jenkins-ci.org
    61. 61. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.comJenkins-Logo (c) www.jenkins-ci.org
    62. 62. XCode-Logo (c) www.apple.com git-Logo (c) www.git-scm.comJenkins-Logo (c) www.jenkins-ci.org
    63. 63. Betabuilder Ruby-Gem von Luke Redpath https://github.com/lukeredpath/betabuilder Distribution-Zertifikate müssen auf CI-Server verfügbar sein
    64. 64. 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/
    65. 65. Vielen Dank für die Aufmerksamkeit

    ×