Teil 5: Testautomatisierung – Einsatzgebiete der Testautomatisierung

Im vierten Teil der RFC Blogreihe Testautomatisierung ging darum, wie die Integration von Testautomatisierung in die Organisation eines Unternehmens erfolgreich gelingen kann.

In diesem Blog beschäftigen wir uns nun mit den vielfältigen Einsatzgebieten der Testautomatisierung.

Einsatzgebiete

Die Einsatzgebiete der Testautomatisierung können wie nachfolgend dargestellt unterschieden werden:

Abbildung 1: Einsatzgebiete der Testautomatisierung

Systemarten

Bei Software kann zwischen verschiedenen Arten von Systemen unterschieden werden:

  • Standalone-Desktop-Applikationen
  • Vereinfachte Automatisierung aufgrund einer begrenzten Abhängigkeit zu anderen Systemen und Single-User-Betrieb.
  • Client-Server-Systeme
  • Bei Thin Clients kann es ausreichend sein, direkt über die Client-Schnittstelle zu testen und auf automatisierte GUI-Tests zu verzichten. Im Falle von Fat Clients ist so ein Vorgehen nicht ratsam, da ein großer Anteil der Funktionalität im Client liegt und damit nicht getestet werden würde. Ein weiterer wichtiger Testaspekt ist der Multi-User-Betrieb.
  • Webapplikationen
  • Bei diesem Spezialfall von Client-Server-Applikationen gibt es nur einen generischen Client – den Browser. Aufgrund der stark standardisierten Schnittstellen (HTTP und HTML) wird der Test von vielen Werkzeugen unterstützt. Dabei ist zu klären, ob die automatisierten Tests auf unterschiedlichen Browsern und Browserversionen durchgeführt werden müssen.
  • Webservices
  • Ein Webservice ist ein unabhängiger, logisch abgeschlossener Softwarebaustein, der über eine öffentliche Schnittstelle verfügt und sich aufgrund einer guten Toolunterstützung automatisiert testen lässt.
  • Mobile Applikationen
  • Konzeptionell kann die Automatisierung mit dem Test von Client-Server-Systemen verglichen werden, mit dem Unterschied, dass statt Desktop-Clients mobile Endgeräte eingesetzt werden. Dabei gibt es einige spezielle Herausforderungen wie die Auswahl der Testplattformen aus einer Vielzahl von potenziellen Endgeräten und unterschiedliche Hardware-Ausführungen, die Identifikation / Interaktion vom bzw. mit GUI-Elementen oder die Simulation von Unterbrechungen, wie z.B. Anrufe oder Kurznachrichten.
  • Data Warehouses
  • Hierbei handelt es sich um eine zentrale Datensammlung aus mehreren Systemen eines Unternehmens und stellt damit bzgl. der erforderlichen Infrastruktur eine – auch organisatorische – Herausforderung dar. Aufgrund der vielen technischen Schnittstellen zu unterschiedlichen Liefersystemen mit komplexen Import- und Exportfunktionen, der aufwendigen Kernfunktionalität (z.B. Datenhistorisierung, Konsistenzprüfungen), eines fehlenden GUI und der Datensemantik gestalten sich manuelle Tests oft schwierig. Ein automatisierter, leicht wartbarer Regressionstest ist wichtig, um schnell auf Veränderungen der Systemlandschaft reagieren zu können.
  • Dynamische GUIs
  • Bei einer Formularlösung wird von einem Formulardesigner eine große Anzahl von Formularen erzeugt. Dabei muss sowohl die Erstellung als auch die Benutzung der Formulare getestet werden.
  • Clouds
  • Die Auslagerung von Anwendungen bzw. Betriebsumgebungen haben neben dem Thema Datensicherheit auch auf den Test einen wesentlichen Einfluss. Wichtig ist hier, den Scope für Test und Testautomatisierung klar zu definieren: Welche Tests werden vom Provider und welche vom Anwender durchgeführt?

Teststufen

Es gibt viele Modelle, an denen sich Softwareentwicklungsprozesse orientieren können. Ein weit verbreitetes Modell ist das klassische V-Modell:

Abbildung 2: Das V-Modell

 

Im Test sind die unterschiedlichen Teststufen an dieses Modell angelehnt. Je nach Teststufe spielt die Automatisierung eine unterschiedliche Rolle:

  • Komponententest
  • schnelle Überprüfung bzgl. der Auswirkung von Änderungen am Testobjekt
  • Integrationstest
  • schnelle Überprüfung bzgl. der Robustheit und Datenintegrität zwischen den Systemkomponenten
  • Systemtest
  • Testautomatisierung aufwendig, da der Fokus auf der gesamten Anwendung liegt
  • Abnahmetest
  • Überprüfung der definierten Akzeptanzkriterien mittels Behaviour Driven Development (BDD) möglich

Projektart

Unterschiedliche Projekttypen verlangen einen differenzierten Ansatz in der Testautomatisierung. Der automatisierte Test einer Einzelplatzanwendung hat den Schwerpunkt auf der funktionalen Korrektheit. Demgegenüber liegt der Fokus von Testautomatisierung in einem Datenmigrationsprojekt eher auf Konsistenz- und Vergleichstests und nicht auf häufig zu wiederholenden Regressionstests.

  • Klassische Softwareentwicklungsprojekte
  • Die große Problematik für die Testautomatisierung besteht in der zeitgerechten Verfügbarkeit der zu automatisierenden Applikation. Bei der oft schon verzögerten Bereitstellung der Testobjekte wird eine schnelle Testdurchführung und damit ein schnelles Feedback für die Entwicklung erwartet. Daher steht bei solchen Projekten der manuelle Test weiterhin im Vordergrund. Nur in Fällen, wo ein langlaufendes über mehrere Liefertranchen geplantes Projekt vorliegt oder eine langjährige Produktweiterentwicklung geplant ist, wird verstärkt die Testautomatisierung eingesetzt.
  • Wartungsprojekte und Produktweiterentwicklung
  • Dieser Projekttyp stellt einen idealen Ausgangspunkt für die Testautomatisierung dar. Nach der grundlegenden Erstellung eines Automatisierungskonzepts kann dieses in kleinen Schritten, die einen stetigen Lernprozess sowie Adaptionszyklus zulassen, implementiert werden. Die Umsetzung kann z.B. wie folgt priorisiert werden:
      • Automatisierung der Testfälle, die die aktuellen Neuerungen und Änderungen betreffen
      • Automatisierung der Tests, die sich aus Problemen / Fehlern im laufenden Betrieb ableiten
      • Automatisierung der Tests, die normalerweise vom Fachbereich durchgeführt werden
      • Laufende Optimierung / Ausbau der o.g. Testszenarien, insbesondere der Regressionstests
  • Agile Projekte
  • Ziel aller Sprints innerhalb eines Projektes ist es, am Ende eine funktionstüchtige, potenziell auslieferbare Software zur Verfügung zu stellen. Insbesondere bei sehr kurzen Zyklen ist dies jedoch nur schwer zu gewährleisten, wenn gleichzeitig bis zum letzten Tag entwickelt wird. Um dennoch sicherzustellen, dass alle notwendigen Testaktivitäten durchgeführt werden können, ist die Testautomatisierung besonders im agilen Umfeld unumgänglich. Kontinuierliche Integration und Auslieferung hat das Ziel, große Teile des Integrations- bzw. Auslieferungsprozesses zu automatisieren.
  • Migrationsprojekte Bei Migrationsprojekten steht im Vordergrund, ob das System noch so funktioniert wie vorher. Die Testautomatisierung kann dabei in verschiedenen Bereichen (z.B. Testdatengenerierung oder dem Vergleich von Daten und Abläufen) sinnvoll unterstützen.
  • Standardsoftware-Projekte
  • Ein Sonderfall sind die vielen Implementierungen von Standardsoftware wie zum Beispiel SAP. Die laufenden Releasewechsel, Upgrades oder Enhancement-Packages stellen eine große Herausforderung dar. Nach den durchgeführten Änderungen ist die Funktionstüchtigkeit des Systems zu überprüfen. Speziell davon betroffen sind die Customizing-Einstellungen, individuelle Erweiterungen sowie die Systemschnittstellen. Eine stark standardisierte Applikationslandschaft und weitgehend einheitliche Benutzeroberflächen und Schnittstellenarchitektur sind eine gute Ausgangslage für eine Testautomatisierung.

Qualitätskriterien

Die Testautomatisierung kann zur Überprüfung verschiedener Softwarequalitätskriterien eingesetzt werden:

  • Funktionalität
  • Der Hauptfokus der Testaktivitäten umfasst
      • Vollständigkeit
      • Abdeckungsgrad der definierten Anforderungen mit bereitgestellten Funktionen, z.B. im Rahmen eines Regressionstest
      • Korrektheit
      • Genauigkeitsgrad der definierten Ergebnisse mit den gelieferten Werten ist eines der wesentlichen Ziele der Testdurchführung
      • Angemessenheit
      • Eignungsgrad für die Erfüllung der spezifizierten Aufgaben mit der umgesetzten Lösung erfordert ein umfassendes Fachwissen und erschwert die Automatisierung
  • Performance
  • Wichtig ist, für die einzelnen Teilbereiche konkrete Anforderungen für den Test zu definieren:
      • Zeitverhalten
      • Grad, zu dem Antwort- bzw. Verarbeitungszeiten bei der Durchführung von Funktionen den spezifizierten Anforderungen entsprechen. Unterschieden werden Performancetests (Reaktionszeit eines Systems bei einer bestimmten Last) und Stresstests (Lasterhöhung, um den Punkt festzustellen, ab dem das System nicht mehr nutzbar ist).
      • Verbrauchsverhalten
      • In welchem Umfang die verschiedenen Arten von Ressourcen verbraucht werden, kann ähnlich wie das Zeitverhalten getestet werden, aber anstatt der Reaktionszeit werden die verschiedenen Verbrauchsindikatoren wie Speicher oder CPU-Zeit und deren Verhältnis zu den verfügbaren Ressourcen gemessen.
      • Kapazität
      • Grad, zu dem die Leistungsgrenzen bestimmter Parameter (z.B. Anzahl der maximal gleichzeitigen Systemuser) den spezifizierten Anforderungen entsprechen.
  • Kompatibilität
  • Grad, zu dem Informationen mit anderen Produkten, Systemen oder Komponenten ausgetauscht werden können. Es ist zwar nicht möglich, automatisiert festzustellen, zu welchem Grad ein System kompatibel ist, allerdings kann sie die manuelle Bewertung vereinfachen.
      • Koexistenz
      • Grad, bis zu welchem ein Produkt seine Funktionen effizient ausführen kann, während es Ressourcen mit anderen Produkten teilt.
      • Interoperabilität
      • Grad, zu welchem mehrere Produkte, Systeme oder Komponenten Informationen untereinander austauschen können.
  • Benutzbarkeit
  • Maß, in welchem ein Produkt in einem spezifizierten Kontext genutzt werden kann, um definierte Ziele effektiv und effizient zu erreichen. Aspekte, wie z.B. Verständlichkeit oder Bedienbarkeit lassen sich nur schwer automatisiert bewerten.
  • Zuverlässigkeit
  • Grad, zu dem ein Produkt, ein System oder eine Komponente spezifizierte Funktionen unter definierten Rahmenbedingungen über einen spezifizierten Zeitraum erbringen kann (à SLA).
        • Reife
        • Grad, zu dem im normalen Betrieb spezifizierte Anforderungen an die Zuverlässigkeit erfüllt werden. Die Automatisierung kann ähnlich wie im Last- und Performancetest bestimmte Nutzungsszenarien simulieren.
        • Verfügbarkeit
        • Grad, zu welchem sich ein Produkt, ein System oder eine Komponente in einem funktionstüchtigen Zustand befindet. Um die Funktionstüchtigkeit und Erreichbarkeit festzustellen, bieten sich automatisierte Smoke-Tests an.
        • Fehlertoleranz
        • Grad, zu dem ein Produkt, ein System oder eine Komponente auch bei Auftreten von Software- oder Hardwarefehlern weiterhin funktionstüchtig bleibt. Die Automatisierung kann hierzu Fehlersituationen (z.B. ungültige Testdaten) sowie lange, unerwartete oder zufällig generierte Testszenarien nutzen.
        • Wiederherstellbarkeit Grad, zu dem ein Produkt oder ein System im Falle einer Unterbrechung oder eines Fehlers davon betroffene Daten und den gewünschten Zustand wiederherstellen kann. Wie bei der Fehlertoleranz kann die Automatisierung auch hier durch die Schaffung von Fehlersituationen unterstützen.
  • Sicherheit
  • Grad, zu dem ein Produkt oder System Informationen und Daten nur Personen bzw. Produkten zur Verfügung stellt, die gemäß ihrer Autorisierung die entsprechenden Zugriffsrechte besitzen. Viele Werkzeuge untersuchen und sammeln die bekannten Schwachstellen einer Applikation.
  • Wartbarkeit
  • Maß dafür, wie effizient und effektiv ein Produkt oder System geändert oder erweitert werden kann und dabei das Risiko von Fehlern bzw. eine Verringerung der Produktqualität vermieden wird. Werkzeuge können z.B. mit Hilfe einer statischen Analyse des Sourcecode auf Schwachstellen aufmerksam machen.
      • Testbarkeit
      • Maß dafür, wie effizient und effektiv für ein Produkt oder System Testkriterien erstellt und die dazugehörigen Tests durchgeführt werden können. Wird dies am Anfang einer Entwicklung nicht berücksichtigt, so ist eine Testautomatisierung in einer späten Phase deutlich aufwendiger.
  • Übertragbarkeit
  • Maß dafür, wie effizient und effektiv ein Produkt oder System von einer Soft- oder Hardwareumgebung auf eine andere übertragen werden kann. Sind die Automatisierungswerkzeuge ebenfalls übertragbar, so bietet die Automatisierung die Chance, die Funktionstüchtigkeit auf unterschiedlichen Umgebungen umfassend und effizient zu überprüfen.
      • Anpassbarkeit
      • Maß dafür, wie effizient und effektiv ein Produkt oder System an verschiedene oder veränderte Soft- oder Hardwareumgebungen angepasst werden kann. Voraussetzung für eine automatisierte Überprüfung ist die Anpassungsfähigkeit bzw. Lauffähigkeit der Automatisierung selbst.
      • Installierbarkeit Maß dafür, wie effizient und effektiv ein Produkt oder System in einer spezifizierten Umgebung erfolgreich installiert werden kann.
      • Austauschbarkeit Maß dafür, mit welchem Aufwand ein Produkt ein anderes Produkt zum selben Zweck in der gleichen Umgebung ersetzen kann. Zur Überprüfung der Austauschbarkeit kann die Automatisierung unterstützen, wenn die neue Software im Verhalten nach außen identisch sein soll bzw. Alt- und Neusystem vergleichbare Ergebniswerte erzeugen.

Fazit

Die Einsatzgebiete der Testautomatisierung sind vielfältig. Bei Softwaretests muss bzgl. der Einsatzmöglichkeiten zwischen den verschiedenen Systemarten unterschieden werden. Zusätzlich spielt die Automatisierung in Abhängigkeit von der jeweiligen Teststufe eine unterschiedliche Rolle. Dabei orientieren sich die unterschiedlichen Teststufen i.d.R. an dem weit verbreiteten V-Modell. Unterschiedliche Projekttypen verlangen einen differenzierten Ansatz in der Testautomatisierung. Dies zeigt sich besonders deutlich bei klassischen und agilen Softwareprojekten. Auch im Bereich der Verifizierung von Softwarequalitätskriterien gibt es vielfältige Einsatzmöglichkeiten für Testautomatisierung. Ein hoher Testabdeckungsgrad oder Performancemessungen sind oft nur mit Unterstützung von automatisierten Tests möglich.

Ausblick:

Im sechsten und letzten Teil der RFC Blogreihe zum Thema Testautomatisierung stellen wir eine Auswahl an Best Practices vor, die auf der umfangreichen Projekterfahrung der Berater von RFC beruhen.

_________________________________________________________________________

Übersicht aller Blogs unserer RFC Blogreihe Testautomatisierung

Blog 1: Einleitung der Blogreihe: Testautomatisierung – Was ist die Motivation für den Einsatz von automatisierten Testverfahren?

Blog 2: Der Testprozess – Aspekte der Automatisierung

Blog 3: Was ist bei der Konzeption eines Automatisierungsframeworks zu beachten?

Blog 4: Wie funktioniert die Integration in die Organisation?

Blog 5: Welche Einsatzmöglichkeiten gibt es für die Testautomatisierung?

Blog 6: Testautomatisierung – Best Practices

Gefällt Ihnen unsere Blogreihe, haben Sie Anmerkungen oder neue Ideen? Dann freuen wir uns, wenn Sie uns kontaktieren.

Steffen Hahn

Steffen Hahn

Hans Willhoeft

Hans Willhöft

Quelle: Basiswissen Testautomatisierung, dpunkt.verlag