Automatisiertes Testen auf einer  (fast)  beliebig großen virtualisierten Infrastruktur

Artikel von Rudolf Groetz und Georg Hansbauer

Testautomatisierung ist eines, wenn nicht sogar das Thema im Umfeld der Qualitätssicherung von Software mit dem Ziel, einen Test hoch automatisiert und sinnvoll abzudecken. Was aber nützt eine hohe Abdeckung, wenn all diese Tests nur auf einer Desktop-Umgebung (zum Beispiel Windows 7 mit Chrome 29 und weiterer Software) ausgeführt werden können? Die neue Software-as-a-ServiceLösung (SaaS) namens TestChameleon (TeCh) kann hier helfen. Angeboten wird TeCh vom Crowdtesting-Spezialisten Testbirds. TestChameleon ist ein neuer, zweiter Geschäftsbereich des Münchner Unternehmens, der virtuell beliebige Umgebungen innerhalb von Minuten zur Verfügung stellt.

Rudolf Groetz, Head of QA bei Jumio Inc., dem Pilotkunden von TestChameleon, und Georg Hansbauer, Gründer und Geschäftsführer der Testbirds GmbH, erklären anhand der praktischen Anwendung von TestChameleon die Möglichkeiten sowohl von manuellen als auch von automatisierten Tests mithilfe von Selenium auf beliebigen Plattformen.

Skripte im Rahmen der Testautomatisierung zu erstellen und zu pflegen, kostet ebenso viele Ressourcen wie das Aufsetzen und Konfigurieren einer umfangreichen Testinfrastruktur. Um eine komplette Testabdeckung sicherzustellen, müssen neben der Breite der Funktionalität der (Web-)Anwendungen auch die Plattformen, auf denen diese laufen sollen, berücksichtigt werden. Das kostet Zeit und Personal – beides ist in der Softwareentwicklung oft Mangelware. Die zu testende Infrastruktur (SUTs) wird deshalb häufig mithilfe von virtualisierten Umgebungen dargestellt, dabei unterscheidet sich deren Konfigurations- und Wartungsaufwand nur geringfügig von dem in physikalischen Umgebungen. Außerdem ändern sich Softwareversionen beinahe täglich, die Pflege und Wartung einer eigenen Testinfrastruktur werden dadurch deutlich erschwert.

Ziel von TeCh

Als Software as a Service ermöglicht es TestChameleon, Unternehmen in wenigen Minuten jegliche denkbare Testumgebung für einen manuellen oder automatisierten Softwaretest zu erstellen – egal ob ein WebFrontend hinsichtlich der Kompatibilität mit Microsoft Windows XP und Microsoft Internet Explorer 7 oder eine Rich-Client-Software mit eingeschränkten Benutzerrechten unter Windows 8.1 auf Funktionalität hin getestet werden soll. Neben der Durchführung von manuellen Tests bietet TestChameleon eine umfangreiche API, die zum Beispiel Testfälle in Selenium oder mit HP QTP umsetzen kann.

Architektur und Technologie

TestChameleon wird als Software-as-aService-Lösung angeboten. Bei sehr großen Kunden wird die Lösung auch als On-Premise eingesetzt.

Die zentralen Komponenten von TeCh sind:

  • ein Controller mit zentraler Datenbank
  • 1 bis n VM-Hosts und
  • ein Webinterface.

Tests können entweder manuell über das Web-Frontend oder zentral über die API des Controllers erstellt werden. Die Architektur von TeCh ist hochskalierbar. Die komplette Verwaltung erfolgt zentral im Controller. Das Webinterface fungiert als relativ „funktionsarmes“ Frontend. Zur Erhöhung der Kapazitäten müssen lediglich weitere VM-Hosts hinzugefügt werden. Die Allokation der VMs auf den Hosts erfolgt mithilfe eines eigenen Algorithmus. Für On-Premise-Lösungen existieren mehrere Treiber für verschiedene Virtualisierungslösungen wie KVM oder VMWare.

Ablauf und Durchführung von Tests

Im Folgenden wird aufgezeigt, welche Funktionalitäten TeCh dem Tester zur Verfügung stellt: Mit dem Web-Frontend können individuelle VMs für manuelle Tests und mit einer TeCh-API automatisierte Tests durchgeführt werden. Über die TeCh-Startseite (s. Abb. 2) kann jeweils direkt auf zuvor konfigurierte Umgebungen zugegriffen oder eine neue VM erstellt werden.

Zusätzlich kann nahezu jede beliebige Software deployt werden, solange diese über einen parametrisierbaren Silent Installer (z. B. msi) verfügt (s. Abb. 3). Abbildung 4 zeigt, dass mit wenigen Klicks eine einzelne, individuelle VM für manuelle Tests erstellt werden kann. Dazu müssen bei
spielsweise das Betriebssystem, Browser und weitere Software selektiert werden. Die eigene VM ist meist unter 3 Minuten verfügbar. Der Zugriff erfolgt entweder über SPICE, VNC oder einen Webvnc (s. Abb. 5).

Nachfolgendes Beispiel skizziert das Erstellen und den Start von VMs über die SSL-verschlüsselte TeCh-API. Konkret wird ein automatisierter Selenium-Testfall auf zwei Umgebungen ausgeführt. Nach dem Import der TestChameleon-Klassen kann für manuelles Testen eine VM „bestellt“ werden.

Ein manuelles „Order-Event“ sieht wie folgt aus:

1. { „tech.vm.order“: {
2.   „softwarePackages“:
3.   [
4.     {„version“: „24.0“,      „arch“:    „X86_64“,      „name“:    „firefox“}
5.     {„version“: „20.0“,      „arch“:    „X86_64“,      „name“:    „chrome“}
6.   ],
7.   „os“:     {„version“: „7.0“,      „arch“:    „X86_64“,      „family“:  „WIN“}
8.   „userID“: 3,
9.   „name“: „73“
10.   }
11. }

Abbildung 6. Bestellung einer TeCh-VM für z. B. manuelle Tests

Zusätzlich kann mithilfe der spezifischen TestChameleon-Selenium-Klasse – zum Beispiel in einem JUnit-Testfall mit Selenium – eine VM als Selenium Node gestartet werden. Ein Selenium Hub wird automatisch bereitgestellt. Mit folgendem Befehl wird beispielsweise eine Windows 7 VM mit Firefox 24 als Selenium Node gestartet:

1. // start Windows 7 64-bit with Firefox 24 and ManyCam (both 32bit)
2. ArrayList<SoftwarePackage> software   = new ArrayList   <SoftwarePackage>();
3. software.add(new SoftwarePackage   („firefox“, „24“, „X86“));
4. OS os = new OS   („WIN“, „7“, „X86_64“);
5. firefoxVM = tc.startNode   (os, software);

Abbildung 7. Definition eines Selenium Nodes über die TeCh-API

Folgender Befehl instanziiert einen Selenium WebDriver und ermöglicht die sofortige Ausführung des Testfalls auf dem Node:

1. // Starting Selenium Driver on that VM
2. WebDriver driver =   SeleniumTestcase.getInst().
getWebDriver(firefoxVM);
3. baseUrl =   „https://nest.testbirds.com“;

Abbildung 8. Instanziierung eines Selenium WebDrivers auf der individuellen TeCh-VM

Anwendungsbeispiel Jumio Inc.

Die Firma Jumio Inc. Ist Pilotkunde von TestChameleon. Jumio entwickelt die Produkte NetVerify und NetSwipe. Diese ermöglichen die Abwicklung von User-Verifizierung zur Unterstützung von „Know Your Customer“(KYC)-Prozessen sowie Payment-Abwicklung im Web und Mobile. Für beide Produkte werden auch SDKs für Android und iPhone angeboten. Zu den Kunden zählen Unternehmen wie airbnb, travelocity oder entropay.

Jumio entwickelt beide Produkte mit einem sehr agilen Vorgehensmodell, das in weiten Teilen auf Scrum basiert. Die Release-Zyklen sind dabei 14-tägig. Für die Entwicklung der beiden Softwareprodukte sind umfassende QA-Maßnahmen definiert, die unter anderem aus automatisierten Tests im Zuge des kontinuierlichen Deployments und zusätzlichen manuellen explorativen Tests bestehen.

Automatisiert werden über TeCh im Rahmen der Continuous System Tests mehrmals pro Tag einzelne Testfälle über die TeCh-API angestoßen. Jede Stunde wird dabei ein Subset von Testfällen in einer Continuous Delivery Pipeline ausgeführt, die den aktuellen Sprintinhalten angepasst werden. Nachts werden jeweils automatisiert alle Subsets von Testfällen auf 80 verschiedenen Kombinationen aus Betriebssystem, Browser und Flash-Version ausgeführt. Jedes Wochenende werden diese Testfälle zusätzlich auf weiteren Kombinationen getestet, um „exotischere“ Konfigurationen abzudecken. Dabei werden mehr als 600 Kombinationen getestet. Eine konstante Überwachung der Continuous Delivery Pipeline erfolgt auch über selbst entwickelte Jenkins-Plugins. Diese stellen den aktuellen Pipeline-Zustand in Realtime über Monitore in den Entwicklungsbüros dar.

Im finalen Systemtest vor den jeweiligen Releases in die Produktivumgebung werden manuell anhand von 20 Kombinationen aus Browsern, Flash-Version und Betriebssystemversion 150 Anwendungsfälle explorativ getestet.

Schluss

TestChameleon lässt sich nicht nur einfach in die Dimension „Abdeckung von Funktionalität mit Tests“ integrieren, sondern erhöht auch die Dimension „Mögliche Testlandschaft“. Die Einbindung in bereits existierende Projekte wird ressourcensparend ausgeführt; die Möglichkeiten, zusätzliche „Maschinenressourcen“ zu gewinnen, sind nahezu unendlich. Auch für einzelne, manuelle Tests oder etwa für Retests von Kunden-Incidents ist TestChameleon schnell und flexibel einsetzbar.

Vorschau

Das Testen von Software erfordert erhebliche Ressourcen. Einsparungen hinsichtlich Kosten und Zeitaufwand sind Gründe für den Einsatz von Offshore- bzw. NearshoreDienstleistungen. Beim Einsatz von Crowdtesting vermischen diese Grenzen, denn selbst wenn der Dienstleister „onshore“ ist, können die Tester über die ganze Welt verteilt arbeiten. In der kommenden Ausgabe der Testing Experience DE stellt Markus Steinhauser (Testbirds GmbH) verschiedene Einsatzmöglichkeiten von Crowdtesting unter diesem Gesichtspunkt vor und liefert dabei Einblicke, welcher „Shore“ für welche Art von Tests einen Mehrwert liefern kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kategorien

Recent Posts