Ziel der Digitalisierung ist es, unser Leben einfacher zu gestalten. Alltägliche Abläufe, wie das Bezahlen an der Supermarktkasse, Online Shopping oder auch die Verbreitung von Wissen – alles digital und angenehm in der Nutzung.

Doch wie arbeiten eigentlich die Entwickler, die hinter diesen Vorgängen sitzen? Ehrlich gesagt bin ich immer davon ausgegangen, dass da auch ziemlich viel automatisch passiert. Bietet sich ja an, so direkt an der Quelle. Tatsächlich lag ich mit diesem Gedanken nicht komplett daneben, wie sich in einem Gespräch mit meinem Kollegen Philipp rausstellte. Aber auch nicht komplett richtig, wie ich zu meiner Überraschung feststellte. Knapp eine Stunde haben wir darüber gesprochen, wie unsere Entwickler in einem Projekt dazu kamen, menschliche Testvorgänge in der Entwicklung einfach im Vorfeld dazu zu programmieren und den gewünschten Prozess zu automatisieren.

Hat sich schonmal jemand die Frage gestellt, aus wie vielen einzelnen Komponenten eine App oder Website eigentlich besteht, inwiefern diese alle zusammenspielen und wie oft so eine Seite testweise durchgeklickt werden muss bevor sie live geht?

Die Antwort ist: Sehr oft. Während der Entwicklung ändert sich im Laufe der Zeit ziemlich viel. Anfangs ist das noch sehr überschaubar, je weiter der Prozess voranschreitet, umso komplexer wird es. Vor allem wenn mehrere Entwickler zusammen an einem Projekt arbeiten, weiß nicht immer jeder woran der andere gerade programmiert und bevor jemand was Neues implementieren kann, muss vorher alles geprüft werden. Nach Implementierung jeder neuen Funktion muss mindestens ein halber Tag eingerechnet werden, um zu schauen, ob einzelne Features im Gesamtkontext negativ beeinflusst wurden oder noch alles funktioniert. Dies ist ein sehr aufwändiger Prozess, weil man sich nicht zu 100% sicher sein kann, dass alles noch läuft, nur weil es eine Woche vorher noch so war. Außerdem darf man natürlich nicht vergessen, dass hier auch die Fehlerquelle Mensch einen Risikofaktor darstellt. Der Entwickler kann immer etwas vergessen oder übersehen. Außerdem ist nicht immer jeder im Team auf demselben Wissensstand, das erschwert die Arbeit zusätzlich.

Die Automatisierung solcher Prozesse als persönliche Anforderung an die eigene Arbeit?

Die Jungs setzten sich zusammen und kamen zu dem Schluss: Ja. Solche Tests müssen sich schneller, einfacher und vor allem besser gestalten lassen. Die Grundidee: Alle menschlichen Arbeitsschritte eines Tests bereits im Vorfeld zur Anwendung dazu programmieren, der Entwickler klickt nur noch auf Start und automatisch wird die komplette Anwendung auf Fehler überprüft.

„Bei einem Kontaktformular zum Beispiel, wird automatisch eine E-Mail- Adresse mit Nachricht und passender Zeichenzahl eingefügt. Dann wird geschaut, ob die Mail rausgeht, im richtigen Postfach landet und so weiter. Das Ganze dauert dann eine Minute.“, erzählt Philipp.

Nach jeder Implementierung eines Features wird dieser Ablauf wiederholt und auf Korrektheit getestet. Obwohl erst einige Zweifel bezüglich des Entwicklungsaufwands im Raum standen, brachte der automatisierte Test mehr Vorteile mit sich als zunächst gedacht. Die Zeitersparnis war enorm, der einmalige Zeitaufwand wurde im 10-fachen Volumen wieder rausgeholt. Auch ein psychologischer Aspekt fiel stark ins Gewicht: Die Entwickler wurden gedanklich stark entlastet.

„Wir müssen so viele Komponenten im Blick haben, alles was wegfällt nimmt uns eine Sorge und gibt uns Sicherheit. Das Produkt gewinnt an Qualität, weil Stress wegfällt und die Entwickler konzentrierter arbeiten können.“

Weiter führt Philipp aus, dass es normalerweise bis zu einer Woche dauert, bis der Endverbraucher ein neues Feature zu sehen bekommt, weil das Testen so lange dauert. Bei einem Shop oder WordPress Projekt, wird die Grundfunktionalität als gegeben angenommen und es muss nichts überprüft werden. Wenn unsere Developer hingegen mit beispielsweise Laravel entwickeln, werden Entscheidungen über Funktionsweisen zum größten Teil selbst getroffen. Anstelle einer vorher laufenden Entwicklung, in der alles erstmal runtergeschrieben und danach geprüft wird, schreibt man die Testanwendung im Vorfeld und zieht diese unterstützend während der Arbeit hinzu.

Dafür wird definiert, wie die Anwendung sich zu verhalten hat, also wie aus einem Kontaktformular eine E-Mail entsteht zum Beispiel. Händisches Testen dauert einfach zu lange, im automatisierten Prozess wird eine Liste an möglichen Eingaben gemacht, die durchläuft.

„Die erste Konzeption der Testautomatisierung hat viel Zeit gekostet, weil wir das vorher noch nie in dieser Tiefe bei einem anderen Projekt gemacht haben. Wir mussten immer wieder probieren, Rückschläge hinnehmen und neue Ideen entwickeln, bis der vollständige Prozess funktionsfähig war. Nach heutigem Stand würden wir vielleicht zwei Stunden dafür benötigen. Daher kann man die Arbeitsschritte auch auf einen Großteil anderer Situationen anwenden, in der viel Programmlogik konzipiert und entwickelt wird.“

Im Anschluss erzählte Philipp von weiteren automatisierten Prozessen, die sich aus diesem ersten Schritt ergaben. Zum Beispiel die Zugänglichkeit neuer Features für alle Parteien eines Projekts. In der Regel arbeitet ein Entwickler auf drei verschiedenen Umgebungen: Am PC, in einer Testumgebung für den Kunden und in einer Liveumgebung für den Endverbraucher. Die Features müssen in jede davon reinkommen. Es ist möglich, dass wir auf Knopfdruck das Livesystem ins Integrationssystem überspielen können, sodass der Kunde immer den aktuellen Stand zum Prüfen neuer Features hat. Wenn ein Entwickler ein Feature fertig programmiert hat, wird es automatisch ins Integrationssystem eingebunden.

Philipp‘s Fazit: „Die Arbeit hat sich definitiv gelohnt. In Hinblick auf den Stresspegel und vermeidbare Fehlerquellen, sind wir einen riesigen Schritt nach vorne gegangen. Als Versuch gestartet, ist die Automatisierung von Testabläufen mit Abstand der größte Gewinn in diesem Projekt.“


Dieses Interview führte Dalia (Marketing Managerin) mit Philipp (Developer) aus dem #teamWABSOLUTE®.

News direkt ins Postfach