Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Best Practices für Continuous Integration mit iOS

Best Practices für Continuous Integration mit iOS

Der Vortrag auf der iPhone Developer Conference 2012 in Stuttgart soll einen Überblick über die Möglichkeiten von Continuous Integration mit iOS geben. Dabei wird auf die Themen Projektaufbau, Unit-Tests, View Tests, Integration Tests, Automatisierte Verteilung von Beta Versionen und das automatisierte Bauen von Apps mit einem Continuous Integration System eingegangen. Insbesondere soll auf die Stolperfallen und Best Practices aus der praktischen Erfahrung während der Entwicklung eingegangen werden.

Felix Schulze

October 23, 2012
Tweet

More Decks by Felix Schulze

Other Decks in Technology

Transcript

  1. Stuttgart | 23.10.2012 | Felix Schulze Continuous Integration • Werkzeug

    • für Risikominimierung und Qualitätssteigerung • Automatisierung • Beispiele: Jenkins, TeamCity, Bamboo, ...
  2. Stuttgart | 23.10.2012 | Felix Schulze Bestandteile • Build-Management •

    Unit-Tests • Integration-Tests • Automatische Beta Versionen
  3. Stuttgart | 23.10.2012 | Felix Schulze Aufbau für iOS CI

    Server Änderungen Ergebnisse Beta App Interner App Store Build Agent‘s
  4. Stuttgart | 23.10.2012 | Felix Schulze Build Prozess Details Sourcecode

    Änderungen Kompilieren Unit-Tests Beta Version Integration-Tests Jede Stunde
  5. Stuttgart | 23.10.2012 | Felix Schulze Build-Management • Viele Systeme

    (Bash, Gradle, Maven, ANT...) • Maven • Open Source Plugin für Xcode • Objektorientierte Lösung • Verbreitetes Build System • Viele Plugins • Viele Möglichkeiten
  6. Stuttgart | 23.10.2012 | Felix Schulze • SenTesting • Direkt

    von Apple • Nur Gerät • Keine echte App • GH-Unit • Open Source • Simulator (über iOS-Sim) Unit-Tests
  7. Stuttgart | 23.10.2012 | Felix Schulze • Dummy Objekte •

    Überprüfung von Aufrufen • OCMock Framework • id sampleMock = [OCMockObject mockForClass:[Sample class]]; • [[[sampleMock expect] andReturn:@"foo"] sampleFunc:@"Val"]; Mocking
  8. Stuttgart | 23.10.2012 | Felix Schulze • gcov - test

    coverage programm • LLVM Compiler Settings: • Instrument Programm Flow -> YES • Generate Test Coverage Files -> YES Code Coverage
  9. Stuttgart | 23.10.2012 | Felix Schulze • lcov (graphical front-end

    für gcov) • Command Line Tool • HTML Reports • Highlighting von erreichtem Code • Coverstory • Grafisches Tool Coverage Reports
  10. Stuttgart | 23.10.2012 | Felix Schulze Integration-Tests • „Automatisierter Klicktest“

    • KIF (Keep It Functional) • Tests in Objective-C • Test-Szenarios und Test-Schritte
  11. Stuttgart | 23.10.2012 | Felix Schulze Xcode-Maven-Plugin • Aktuelle Features:

    • App bauen • Simulator starten / beenden • GHUnit Tests • KIF Integration Tests • Test Coverage HTML Reports • IPA bauen • App Version anpassen (GIT)
  12. Stuttgart | 23.10.2012 | Felix Schulze Automatische Beta Versionen •

    Interner App Store (jQuery Mobile) • Enterprise iOS Dev Account • Hockey App • Automatische Updates in der App • Crash Reports • Benutzungsstatistiken
  13. Stuttgart | 23.10.2012 | Felix Schulze Links • Demo: https://github.com/ImmobilienScout24/iOS-

    Continuous-Integration-Demo • GH-Unit: https://github.com/gabriel/gh-unit • OCMock: https://github.com/erikdoe/ocmock • iOS-Sim: https://github.com/phonegap/ios-sim • KIF: https://github.com/square/KIF • Xcode-Maven-Plugin: https://github.com/x2on/xcode- maven-plugin • HockeySDK: https://github.com/bitstadium/ HockeySDK-iOS
  14. Stuttgart | 23.10.2012 | Felix Schulze Vielen Dank für Ihre

    Aufmerksamkeit! Kontakt: Felix Schulze Immobilien Scout GmbH Andreasstraße 10 10243 Berlin URL: www.immobilienscout24.de Twitter: @x2on