Close

Warum Software in der Cloud testen?

Cloud_

Status Quo

Testausführungen sind rechenintensiv und zeitaufwändig.

Der vollständige Test einer Software-Applikation kann mehrere Tage bis zu Wochen dauern. Meist werden die Tests noch auf einzelnen Workstations durchgeführt.

Eine Skalierung der Infrastruktur, um die Ausführungszeiten von Tests zu beschleunigen, stößt rasch an organisatorische, technologische, operative und/oder finanzielle Grenzen.

Wir wollten genau wissen, wie das Aufsetzen von Tests in Cloud funktioniert.

Um eine Software zu testen, braucht es

Prüfling

Zum Beispiel Software-Modell (Simulink, Targetlink), Code (C/C++).

Testfälle

Sie stellen im besten Fall eine sinnvolle Stimulation des Prüflings dar.

Testumgebung

Die Testumgebung stimuliert den Prüfling und misst und bewertet Ergebnisse.

Eine Testumgebung benötigt sehr viele IT-Ressourcen (insbesondere Speicher und CPU), da sie mehrere Aufgaben zeitgleich ausführt:

Stimulation des Prüflings

Ausführung des Prüflings
Messung des Prüflings
Bewertung des Prüflingsverhaltens

Bei Model/Software-in-the-loop Tests zählt die Stimulation zu den rechenintensivieren Anteilen, da für die Stimulation auch Simulationen der Umgebung zur Laufzeit des Tests berechnet werden. Für Tests werden daher nahezu alle Ressourcen einer Recheneinheit benötigt.

Um das Testing zu beschleunigen und effizienter zu gestalten, bietet sich der Einsatz von Cloudlösungen an. In der Cloud können Recheneinheiten virtuell geklont werden und die parallele Instanziierung mehrere geklonter Recheneinheiten ermöglicht eine beliebige, horizontale Skalierung. Die Tests werden auf die Instanzen aufgeteilt, parallel und unabhängig zu anderen Instanzen ausgeführt. Testausführungszeiten können durch geschickte Aufteilung von Tests nahezu unbegrenzt reduziert werden.

Was haben wir gemacht?

Wir haben intensiv und wiederholt untersucht, wie sich Testausführungszeiten mit State-of-the-art Technologien im Bereich Cloud für die automobile Softwareentwicklung reduzieren lassen.

Der Schwerpunkt der Analyse lag im Kern auf der Usability für den Aufsatz und Betrieb, sowie den Kosten für den Betrieb mit dem übergeordneten Ziel: durch kürzere Feedback-Zyklen die Entwicklung zu beschleunigen, um die Time-to-Market von softwarebasierten Fahrzeugfunktionen zu verkürzen.

Für Entwicklungsteams, IT und das Management ergeben sich mit dem Cloud-basierten Ansatz interessante Use Cases, die als Beispiele aus der Praxis vielen bekannt sein könnten:

Typisch: Kurz vor dem Release kommt noch eine Änderung rein, die dringend mit ins aktuelle rein muss. CCB oder Managemententscheidung liegt vor. Umsetzung dauert nur einen Tag. Leider in einem zentralen Softwaremodul, so dass dreiviertel aller Tests nochmal ausgeführt werden müssen.


Der notwendige Testlauf auf der angeschafften Hochleistungsmaschine dauert mindestens fünf Tage; zwei Tage später als der festzugesagte Liefertermin. Und die Dokumentation muss dann auch noch erstellt werden. Der Termin muss um jeden Preis gehalten werden.

In kritischen Situationen, wie drohendem Verschiebungen des Start-of-Production können kurzfristige, deutlich höhere Kosten gerechtfertigt sein. Mit Testlösungen in der Cloud lassen sich kurzfristig beliebig viele Rechner erstellen. Und mit dem Prinzip, dass, eine Maschine nach Belieben eingerichtet und danach mehrfach geklont wird, können mehr virtuelle Maschinen viel mehr testen.
Würde man sagen, man führt einen Testfall pro Maschine aus, dann wären es bei 7.200 Tests 7.200 Maschinen. Wenn ein Testfall eine Minute dauert, dann könnte man einen vollständigen Testlauf binnen weniger Minuten abschließen wegen der großen Menge an virtuellen Maschinen, anstatt fünf Tage auf einer einzigen physischen.

Feedback is Breakfast for Champions. And Testing is the Feedback in Development.

Unser Erfahrung nach gilt in allen Software-Entwicklungen immer: Je schneller die Entwicklung Rückmeldung über das Gelingen der durchgeführten Änderung bekommt, desto effektiver und effizienter wird sie.

Insbesondere in großen und komplexen Softwareprodukten mit zahlreichen Abhängigkeiten kann eine kleine Änderung zu großen Problemen führen. Nach der Rule of Ten steigen die Fehlerbeseitigungskosten exponentiell mit der Zeit bis zur Fehlerentdeckung an. Das heißt: Je später das Fehlerfinden desto teurer.
Darum sind frühzeitiges Testen und schnelle Ergebnisse so wichtig.

Für das schnelle Starten haben sich Continuous Integration (CI) Umgebungen in der professionellen Software-Entwicklung durchgesetzt. Mit jedem Einspielen einer Änderung (Push/Commit) an der Codebasis werden Tests automatisch gestartet.
Die CI orchestriert den gesamten Integrationsprozess, indem sie inkrementell Softwareteile lädt, baut und testet von der Unit bis zum Endprodukt. Die Ausführung von Tests kann auf einem oder mehreren unterschiedlichen Recheneinheiten erfolgen. Auch Cloud ist in Verbindung mit CI-Umgebungen möglich, um Tests zusätzlich zu beschleunigen.

Unternehmen müssen oft eine beträchtliche Summe in Hardware investieren, um eine große Anzahl von Tests gleichzeitig ausführen zu können. Der Aufsatz und Betrieb binden wertvolle interne Ressourcen, denn meist gibt es in den IT-Abteilungen nicht genug Personal für den perspektivisch wachsenden Bedarf. Die Skalierbarkeit ist damit prinzipiell unzureichend.

Bei Start-of-Production-Anläufen und kurz vor neuen Releases haben Entwicklungsteams häufig zeitweise und unplanbare höhere Infrastrukturbedarfe für ihre Tests. Mit virtuellen Maschinen in der Cloud können temporär auftretende Bedarfsspitzen abgefedert werden, was gleichzeitig auch eine Entlastung der IT bedeutet.

Hybride Ansätze, wie On-Premise und Cloud gemeinsam, in Verbindung mit ausgeklügelten IT-Cloud-Betriebsstrategien, können wie auch Cloud-Only-Ansätze zu optimalen Kosten-Nutzen-Verhältnissen führen mit der Option auf sofortige, schnelle Skalierung.

Und dann war da noch das Release von vor fünf Jahren. Und der nun auftretende Bedarf, eine kleine Änderung nur für eine geringe Anzahl von Fahrzeugen bereitzustellen. Die Infrastruktur hat sich mittlerweile weiterentwickelt, wurde verbesser und Software aktualisiert. Und nun müssen alle alten Tests auf die neue Infrastruktur gehoben werden. Ein riesiger Aufwand für eine kleine Änderung.

Auch hier bietet die Cloud eine interessante Lösung: Einmal aufgesetzte, virtuelle Maschinen können archiviert werden und zu einem späteren Zeitpunkt wieder hochgefahren werden. Man muss sich dann nochmal in die damaligen Prozesse, Methoden und Tools einarbeiten. Das ist unserer Erfahrung allerdings einfacher und schneller als ein Komplettumzug von alt auf neu.