Das „C“ in Q-SMAC: „Cloud Computing“
Ein wichtiger Aspekt vom Digital Testing ist das Testen von Cloud-Applikationen. Hierbei geht es um bedeutend mehr als nur eine Standort- und geräteunabhängige Nutzung von Daten und Applikationen. Grundsätzlich geht es beim Cloud Computing um die Bereitstellung von IT-Infrastruktur über das Internet. Da die «Wolke» meistens nicht wirklich greifbar ist, wird das Thema Cloud-Testing sehr oft vernachlässigt. Zu Unrecht wie wir sehen werden.
Immer mehr Applikationen, Daten, Infrastruktur und Services von IT Unternehmen finden den Weg in die Cloud. Für das Testing bedeutet das, dass Aspekten wie Sicherheit, Performance und Elastizität eine höhere Gewichtung zugemessen werden sollte.
Ab in die Cloud.... Wieso?
Da es für jedes Unternehmen existenziell ist, sowohl die Betriebskosten der IT als auch die Personalkosten ständig zu optimieren, bietet sich durch Cloud-Computing grosses Einsparungspotential bezüglich beider Faktoren.
- Bei finanziellen Überlegungen steht die Reduzierung der enormen Kosten der eigenen IT-Infrastruktur im Vordergrund. Man darf hier nicht nur die Anschaffungs- oder Erstellungskosten für Hard- oder Software, sondern muss vor allem die Unterhaltskosten für beispielsweise Wartung oder Weiterentwicklung betrachten.
- Die personellen Aspekte stehen direkt im Zusammenhang mit dem ersten Punkt. Software wie auch Hardware benötigen Personal um diese zu pflegen und zu supporten, damit die Mitarbeiter der Firma der täglichen Arbeit nachgehen können.
- Auch können Ressourcen bei hoher Last (Peak) zur Laufzeit dynamisch hinzugefügt oder bei nicht gebrauch wieder entfernt werden. Bei konstanter Auslastung, können dann die benötigten Ressourcen permanent hinzugefügt werden.
Cloud Services
Um die Host-, Software- und Ressourcenkosten zu minimieren, gibt es verschiedene Cloud Services, die meistens in Kombination genutzt werden:
- (IaaS) Infrastructure as a Service
Die ganze Infrastruktur wird in die Cloud verlegt. Hardware-Komponenten wie Server, Workstations, Speicher stehen nicht mehr im Haus, sondern werden in der Cloud gehostet bzw. - (SaaS) Software as a Service
Komplette Software-Produkte oder auch nur die Datenspeicherung werden in die Cloud ausgelagert. z.B Office 365, Spotify, Dropbox, Testmanagement Applikationen. - (PaaS) Platform as a Service
Bietet alle Einrichtungen, welche für einen vollständigen Lebenszyklus (Entwickeln, Testen und Ausführen) von mehrheitlich webbasierten Anwendungen in der Cloud benötigt werden. Das beinhaltet auch den Infrastruktur-Service des Cloud Providers.
Ein praktisches Beispiel
Da von diesem Wandel auch das Testen stark betroffen ist, stellt es den Test Engineer vor neue Herausforderungen. Die zu testende Software weist nämlich nicht mehr eine klassische Architektur auf, sondern wurde spezifisch für die Cloud konzipiert. Somit muss sich auch das Testing ändern: vom Klassischen Testen zum Digitalen Testen. Hiervon sind weniger die Testtechniken betroffen, sondern eher die Art wie man über das Testing denkt. Wie man das Cloud Testing angehen sollte.
Dies möchte ich nun an einem praktischen Beispiel mit einer Applikation aus dem Sportbereich erklären.
Als begeisterter Jogger und Velofahrer bin ich an meinen Leistungsdaten interessiert. Die Daten, die ich mittels einer modernen Uhr (Smart-Watch) sammeln kann, sind unter anderem:
- Distanz
- Strecke, die ich gerannt bin
- Pulsverlauf
- Körpertemperaturverlauf
- Höhenprofil
- und bei Velotouren, z.B. die durchschnittliche Geschwindigkeit, Trittfrequenz
Früher musste ich die gesammelten Daten auf meiner Smart-Watch über eine Schnittstelle auf den Mac oder PC transferieren bevor ich die Daten nach einem Training oder Lauf lokal auswerten konnte. Als Tester dieser Applikation sind dann nur der fehlerfreie Betrieb der lokalen Applikation interessant. Deshalb waren die Test-Schwerpunkt eher gerichtet auf den Schnittstellen (Datentransfer) und das korrekte Funktionieren der lokalen Applikation.
Schwerpunkte beim Cloud-Testing
Aspekte wie Performance, Elastizität und Sicherheit meiner Daten spielten früher beim Testen eine eher untergewichtete Rolle. Dies weil die Daten lokal abgespeichert und die Applikation lokal installiert wurde.
In der heutigen Zeit der Digitalen Transformation werden diese Daten seltener lokal, sondern in der Cloud, z.B. des Sportuhren-Herstellers geladen und abgespeichert.
Auch haben sich die Applikationen verändert. Auf meinem lokalen PC / Mac, habe ich oft keine klassische Applikation mehr. Ich habe nur noch eine App auf einem Smartphone/Pad oder einen Zugang zu einer Webapplikation, wo ich meine Daten «gleichzeitig» einsehen, auswerten und synchronisieren lassen.
Als Tester dieser Cloud Applikation kommen nun komplett neue Herausforderungen und Schwerpunkte auf mich zu, welche ich früher grosszügig vernachlässigen konnte:
Performance:
Ausfallsicherheit bei hoher Last während der Kommunikation zwischen App und Cloud natürlich in Abhängigkeit des Standorts (Latenzzeiten), z.B. was geschieht, wenn nach einem Marathon alle Läufer gleichzeitig mit den vom Sponsor gelieferten Sportuhren ihre Daten synchronisieren.
Elastizität:
Wie verhält sich die Applikation, wenn sie, mit anderen in der Cloud verfügbaren Applikationen, die Ressourcen teilen muss.
Sobald alle Läufer gleichzeitig die Daten der Sportuhren synchronisieren, wird temporär einiges mehr an Leistung benötigt als normal. In einer Cloud ist es möglich in Echtzeit, der laufenden Applikation mehr Ressourcen zuzuweisen, damit dann genügend Ressourcen zur Verfügung stehen, damit alle Läufer in einer angemessenen Zeit ihre Uhren synchronisieren können.
Security:
Was passiert überhaupt mit meinen Daten? Können andere User meine Daten einfach einsehen oder abfragen, sind sie verschlüsselt? Kann ich eine bestimmte Untermenge meiner Daten mit anderen teilen, ohne dass sie gleich alles sehen?
Datensicherheit:
Findet ein Backup meiner Daten statt oder muss ich mich selbst darum kümmern. Was passiert, mit meinen Daten, wenn sich die politischen Verhältnisse ändern. Kann ich meine Daten selbst in ein Standardformat extrahieren? (Firma A geht in Konkurs, kann ich jetzt meine Daten in ein App von Firma B importieren?)
Connectivity:
In Zeiten von unbegrenzter Zugang zum Internet (WLAN) ist die Verfügbarkeit der Verbindung zur Applikation ein wichtiger Punkt. Was passiert, wenn ich plötzlich keine Internetverbindung mehr habe oder aus irgendeinem anderen Grund die Applikation nicht mehr verfügbar ist. Was passiert mit meinen Daten, während ich die Uhr mit der Cloudanwendung synchronisiere und dann plötzlich keine Verbindung mehr habe. Ist dann die Datenbank korrupt oder sind meine Daten eventuell sogar verloren?
Braucht der Cloud Tester neue Skills?
Wie man sieht, gibt es nun einige Aspekte, welche früher „vernachlässigt“ werden konnten. Diese Aspekte gewinnen nun beim Digitalen Testing mehr an Bedeutung und müssen zwingend im Test berücksichtigt werden.
Heute reicht es für einen Tester nicht mehr aus, nur noch in einer Disziplin fit zu sein, sondern er muss über ein breites technisches Know-How verfügen. Er muss zum Beispiel fundiertes Wissen haben wie z.B über Security Konzepte, Datensicherheit, usw.
Die Digitale Transformation bringt somit einen interessanten, spannenden und vielfältigen Wandel der Aufgaben eines Software Testers mit sich. Wie schon erwähnt: weg vom klassischen in Richtung digitales Testdenken.
Von diesem Wandel können auch die verwendeten Testtools betroffen sein. Zum Beispiel: können wir mit den bestehenden Tools die neuen Anforderungen automatisieren, müssen wir den Fokus auf andere Schichten in der App ausrichten (GUI, WebServices, etc)?
Q-SMAC, war es das jetzt?
Nein, nicht ganz. Im nächsten Blog wird das Thema IoT (Internet Of Things) behandelt. Auch IoT ist als ein Bestandteil der digitalen Transformation zu betrachten und damit auch ein wichtiges Thema innerhalb des digitalen Testens.