Suchen

Continuous Testing – das Geheimnis erfolgreicher Apps Shift Left Testing alleine reicht nicht

Autor / Redakteur: Hannes Lenke * / Stephan Augsten

Strebt ein App-Anbieter kurze Release-Zyklen an, muss er trotzdem sicherstellen, dass die Code-Qualität gewahrt bleibt. Continuous Testing kann dabei helfen, agile Entwicklung und Qualität miteinander in Einklang zu bringen.

Firmen zum Thema

Continuous Testing bei der App-Entwicklung sorgt dafür, dass die Code-Qualität auch bei agilen Development-Prozessen gewahrt bleibt.
Continuous Testing bei der App-Entwicklung sorgt dafür, dass die Code-Qualität auch bei agilen Development-Prozessen gewahrt bleibt.
(Bild: Fabian Grohs - Unsplash.com)

Moderne Apps sind aus unserem Alltag fast nicht mehr wegzudenken und stehen auch für einen Großteil der aktuellen Innovationen in unserer vernetzten Welt. Für viele Unternehmen, die ihren digitalen Wandel vorantreiben wollen, wird die Bereitstellung mobiler Apps, ob für die Interaktion mit ihren Kunden oder mit ihren Mitarbeitern, fast schon zur Pflicht.

Bei der Umsetzung sollten die Anbieter aber auch bedenken: Durch den Auftritt als Unternehmen oder Marke mit einer eigenen mobilen App wird Qualität künftig noch mehr zu einem wesentlichen Schlüsselfaktor. Denn in einer Welt, in der „mobile first“ für viele Anwender selbstverständlich geworden ist, zögern Kunden im Zweifelsfall nicht lange mit dem Umstieg auf eine konkurrierende App, wenn das Benutzererlebnis nicht stimmt oder die App durch wiederholte Ausfallzeiten „unpraktisch“ wird.

Durch diese ausreichend belegte hohe Marktdynamik rückt für Unternehmen, die heute Apps auf den Markt bringen wollen, die effektive Praxis des Continuous Testing von Mobile Apps mehr und mehr in den Mittelpunkt. Denn die Vorteile des kontinuierlichen Testens sind erheblich. Unternehmen und ihre Entwickler müssen sich allerdings darüber im Klaren sein, dass die Einführung einer Continuous-Strategie ihren Testing-Ansatz grundlegend verändern wird.

Diese Veränderung lohnt sich aber durchaus und könnte zudem künftig zu einem entscheidenden Wettbewerbsfaktor werden: Unternehmen bieten ihren Kunden so eine nahtlose, störungsfreie digitale App-Nutzung und erhalten im Gegenzug ein schnelleres, agileres Wachstum und eine höhere Rentabilität. Aber was bedeutet die Umsetzung einer solchen kontinuierlich Testpraxis für die mobile Entwicklung?

Fragmentierung des mobilen Ökosystems – die große Herausforderung

Im Gegensatz zum Testen traditioneller Web-Anwendungen stellt das Testen moderner Apps Entwickler vor ganz andere Herausforderungen: Können Web-Apps theoretisch tausende Male am Tag ausgespielt werden, lassen sich mobile Apps nur in zeitgesteuerten Zyklen (angepasst an App-Stores) bereitstellen. Das hat zur Folge, dass Bugs oftmals nicht schnell genug gepatcht werden können.

Das Testen mobiler Apps ist zudem durch die hohe Fragmentierung – nicht nur bei den Betriebssystemversionen, sondern auch bei Gerätetypen, Formfaktoren, Gerätespezifikationen, neuen Hardware-Features, Arten von mobilen Apps (nativ, Web, Hybrid), den verschiedenen Entwicklungsumgebungen für mobile Apps und der hohen Anzahl an Carrier-Netzwerken – erheblich komplexer.

Alle genannten Faktoren wirken als Variable und bringen zahlreiche Permutationen und Kombinationen mit sich, die beim Testen von Mobile Apps berücksichtigt werden müssen. Darüber hinaus ist die Fehlerberichterstattung bei mobilen Devices schwieriger: Anwendungen können abstürzen und manchmal keinerlei Spuren zur Ursache hinterlassen, wenn sie nicht entsprechend vorkonfiguriert sind.

Beim Testen mobiler Apps lassen sich auch Probleme erkennen, die für eine geografische Region spezifisch sind, die sich von der Region, in der sich der Tester befindet, völlig unterscheidet. Mobile Apps werden in der Regel geografisch verteilter eingesetzt als Web-Anwendungen, und dies muss bei der Analyse von Problemen und Testergebnissen berücksichtigt werden.

Das große Dilemma des neuen DevOps-Zeitalters: Geschwindigkeit versus Qualität

Wollen Unternehmen ihre Digitalisierung vorantreiben und deshalb auf agile Prozesse – den sogenannten DevOps-Ansatz – umstellen (diesem Wandel können sich auch App-Anbieter nicht mehr entziehen), bringt dies gerade bei der Bereitstellung von Software tiefgreifende Veränderungen für die gesamte Entwicklungspipeline mit sich. Denn damit rückt die Geschwindigkeit als Erfolgsgarant in den Mittelpunkt: Je schneller ein Unternehmen neue Funktionen für seine Apps auf den Markt bringt, desto besser ist die Wahrnehmung im Markt.

Diese Gleichung kehrt sich allerdings um, wenn durch den Geschwindigkeitsdruck die Qualität unter die Räder gerät. Nichts verschreckt Kunden mehr als unzuverlässige Funktionen oder ein nicht zufriedenstellendes Benutzererlebnis – denn in diesem Moment werden alle Investitionen, die ein Unternehmen in die Umsetzung schnellerer Prozesse getätigt hat, wertlos.

Nachhaltigen Erfolg können App-Anbieter nur erreichen, wenn sie auf kompromisslose Qualität setzen. Und genau dieser Weg eröffnet sich durch das Continuous Testing, das Geschwindigkeit und Qualität nicht als Gegensatzpaar sieht, sondern in ein Gleichgewicht setzt.

Continuous Testing deckt die gesamte Entwicklungs-Pipeline ab

In der Praxis bedeutet das, dass automatisierte Tests über die gesamte Pipeline bei jedem Schritt im Entwicklungsprozesses stattfinden müssen – das ist der wichtigste Aspekt des kontinuierlichen Testens. Der DevOps-Ansatz hat im Rahmen agiler Testprozesse einen „shift left“ gefordert – das sehr frühzeitige Ansetzen von Tests.

Das Continuous Testing konzentriert sich neben diesen frühzeitigen Tests auch auf das kontinuierliche Testen nach erfolgter Bereitstellung der App. Dies stellt sicher, dass gerade in der Anfangsphase schnelleres und realistischeres Feedback weitergegeben werden kann. Dafür sollte die Fehlerberichterstattung so konfiguriert sein, dass sie alle Fehler in der Produktion erfasst.

Die Nutzung von Funktionen wie Beta-Tests (sowohl für Android als auch iOS verfügbar) ist ebenfalls notwendig, um Fehler zu erkennen, während die App schon im Betrieb, aber noch nicht für alle Benutzer freigegeben ist. Auch wenn sich mobile Apps nicht so häufig wie Web-Anwendungen veröffentlichen lassen, können App-Anbieter diese Taktiken nutzen, um jede ihrer App-Releases zum Erfolg zu führen.

Dafür müssen auch die am Entwicklungsprozess beteiligten Teams ihre Geschwindigkeit maximieren – z. B. indem sie einen kleineren Satz von Tests an den Beginn der Pipeline (oft als „Rauchtest“ bezeichnet) setzen sowie eine umfassendere Testsuite zu einem späteren Zeitpunkt in der Pipeline (oft als „Regressionstest“ bezeichnet) integrieren. Durch den kleineren Test-Satz lassen sich große Fehler und Regressionen frühzeitig aufdecken, ohne gleich die Kosten eines vollständigen Regressionstests tragen zu müssen.

Schlüsselfunktionalitäten lassen sich so auf einigen wenigen Schlüsselplattformen beschränkt testen, damit sie schnell ausgeführt werden und die Produktivität der Entwickler nicht beeinträchtigen. Eine der besten Praktiken für Mobile Apps ist es, diese Rauchtests gegen iOS-Simulatoren und Android-Emulatoren durchzuführen, um die Ausführungszeit zu verkürzen und die Kosten zu minimieren.

Smarter „Move“: Das Verlagern des automatisierten Testens in die Cloud

Die hohe Fragmentierung im Mobile-Öko-System haben wir oben schon angesprochen. Um mit dieser Fragmentierung umzugehen und qualitativ hochwertige Apps bereitzustellen, die auf allen Geräten oder Plattformen funktionieren, bietet sich die Cloud-Option an. Denn anstatt ein eigenes Inhouse-Labor mit unterschiedlichsten Devices aufzubauen, ist die elegantere (und smartere) Methode, sich für die Nutzung von realen Geräten über die Cloud zu entscheiden.

Die Vorteile: Unternehmen können mit ihren Testzyklen viel schneller starten, die Wartung ist einfacher, agile Prozesse sind so sichergestellt und es kostet am Ende sogar noch weniger. Testlösungen in der Cloud, wie z. B. von Sauce Labs, bieten eine Kombination aus Emulatoren und realen Geräten, die sich für unterschiedlichste Testkategorien nutzen lassen. So können von der Hardware-Spezifikation unabhängige Tests oder Unit- und Early-Stage-Tests auf Emulatoren ausgeführt werden. Komplexere Tests im Spätstadium der Entwicklung lassen sich in der Cloud gleich nahtlos auf realen Geräten durchführen.

Sobald Unternehmen bei der Entwicklung ihrer Mobile Apps schneller vorankommen, müssen sie darauf achten, dass auch ihre Testprozesse mithalten. Hierfür bietet sich die Integration von Continuous-Integration-Tools (CI-Tools) wie z. B. Jenkins in die Testprozesse an, um die Testautomatisierung mit der Build-Automatisierung zu verbinden. Da die Anzahl der Builds ständig zunimmt, benötigen App-Entwickler hier parallele Tests zur Bewältigung des Zuflusses neuer Codes und neuer Funktionen. Allerdings ist auch diese kontinuierliche Integration ohne Continuous Testing nicht möglich.

Eine weitere Anforderung, die notwendig ist, um sowohl versteckte Probleme als auch offensichtliche Fehler zu beheben, ist die Schaffung von Transparenz. Und diese muss, um die hohe Komplexität im Mobile-Umfeld zu bewältigen, auch durchgängig und tief genug sein. Sauce Labs hat genau dafür kürzlich Testanalysen und erweitertes Debugging für seine Continuous Testing Cloud zur Verfügung gestellt. Mit den Testanalysen lassen sich die dringendsten Probleme aufzeigen und es wird eine proaktive Fehlerlösung angeboten. Das „Extended Debugging“ konzentriert sich auf mögliche Fehler in der Netzwerkumgebung und in den Browsern. Beides ist beim Testen von Mobile Apps unerlässlich.

Mit Continuous Testing von den DevOps-Vorteilen profitieren

Jeder App-Anbieter, der heute mit seinen Apps beim volatilen Endkunden wirklich ankommen und auf nachhaltigen Erfolg setzen will, sollte sich mit der Praxis des kontinuierlichen Testens beschäftigen. Das Testen als unabhängiger Schritt am Ende eines Entwicklungszyklus ist – zumindest im Mobile-Umfeld – im heutigen DevOps-Zeitalter nicht mehr zeitgemäß.

Testprozesse müssen die richtige Balance zwischen Geschwindigkeit und Qualität finden, die hohe Fragmentierung des mobilen Öko-Systems im Blick haben und die notwendige Transparenz in die Anwendungsperformance bringen. Nur das garantiert heute das erfolgreiche Ausliefern erfolgreicher Apps.

Hannes Lenke
Hannes Lenke
(Bild: Sauce Labs)

Um eines kommen App-Anbieter dabei nicht herum: Wollen sie von den Vorteilen des modernen DevOps-Ansatz profitieren und nachhaltig erfolgreiche mobile Apps bereitstellen, müssen sie sich für die damit verbundenen prozessualen Veränderungen und den kulturellen Wandel im Sinne des Continuous Testing öffnen. Sie müssen ihre Entwicklung sehr eng mit dem Testprozess verschränken und traditionelle Silos in den Unternehmensprozessen aufbrechen.

* Hannes Lenke ist General Manager of EMEA Operations bei Sauce Labs.

(ID:45386430)