Optimierung von Release-Zyklen

„Bis zum Ende des Jahres werden wir auf allen unterstützten Plattformen monatlich veröffentlichen.“

Bild: Xamarin

Bild: Xamarin

Mit mehreren Entwicklern, die an sich überlappenden Codebereichen arbeiteten, nutzt eBay Jenkins, um eine Auswahl an automatisierten Tests zu bewältigen. Dies stellt sicher, dass die CI-Leistungen ohne Unterbrechung des Entwicklungsprozesses laufen. Dadurch, dass nicht nur die Testdurchführung automatisiert wurde, sondern auch das Set-up, hat eBay das Fehlerpotenzial beim Testen beseitigt und eine Vereinfachung des gesamten Entwicklungsprozesses bewirkt.

So konnte eBay die Anzahl der unterstützten App-Plattformen verdoppeln und 2014 mehr als doppelt so viele Releases anstoßen, wie Anfang 2013.

Tipps für den Anfang

Niels hat drei Tipps für Release-Optimierung vorgestellt.

  • Geschwindigkeit optimieren. Um negative Auswirkungen zu minimieren, müssen Entwickler von so vielen unnötigen Tests wie möglich zu befreit werden und nach jedem Change ein schnelles Feedback bereitgestellt bekommen. eBay nutzt unterschiedliche Test Suits für unterschiedliche Arbeiten.
    • Zehn Minuten Commit Tests: eBays Commit Tests sind innerhalb der gesamten Test Suite auf zehn Minuten pro Tag begrenzt. Dies stellt den Entwicklern ein adäquates Level an Sicherheit bereit, ohne Unruhe zu schaffen.
    • Tägliche Full Suite: Am Ende des Tages wird ein einstündiger Test durchgeführt, um Zuverlässigkeit zu gewährleisten.
  • Den Gürtel enger schnallen. Niels schlug vor, UI-basierten Overhead für das Test-Set-up und Tear-down zu umgehen und das Testen somit auf die wesentlichen Komponenten zu reduzieren. Beispielsweise wurde ein UI-Test so konzipiert, um sicherzustellen, dass ein eingeloggter User Formularmodifikationen, Benutzerkontenerstellung, Anmeldung sowie das Befüllen des ursprünglichen Datensatzes vornehmen kann. Dies ist oft durch eine schnellere, skriptbasierte Lösung zu erreichen, ohne die Prüfung selbst hinfällig werden zu lassen. Dies gilt, solange die Skriptfunktionen an anderer Stelle ganzheitlich geprüft werden.
  • Das Erstellen von Aufgaben automatisieren. eBay schafft Branches für neue Funktionen in der Entwicklung, um den Master Branch für einen App-Store-Upload frei zu halten. Unglücklicherweise steigt dadurch die Möglichkeit menschlichen Versagens. „Wir sind ziemlich faul geworden. Wenn wir einen neuen Branch erstellt haben, mussten wir alle Jobs in Jenkins kopieren. Das war kein Spaß und die Entwickler fingen an, das zu überspringen.“

    Das Unternehmen hat nun das Set-up und Tear-down der Tests auf dem Build Server automatisiert. Dadurch werden Jobs kreiert, die notwendig sind, um UI-Tests auf allen Plattformen durchzuführen, sooft ein Branch mit dem Wort „feature“ beginnt. Wenn sich der Feature-Branch mit dem Master vereint, entfernt der Build Server automatisch die erstellten Jobs.

„Vor dem Automatisierungsprozess der Schaffung von Arbeitsplätzen haben wir Bugs viel zu spät entdeckt. Ob Entwicklerbereich oder nicht, wir wollen Fehler immer so schnell wie möglich finden.“

Zurück zu Teil I.

Es handelt sich bei diesem Artikel um eine Übersetzung des Blogbeitrags von Xamarin

SHARE ONShare on FacebookTweet about this on TwitterGoogle+