Wissen im Service | USU Blog

Wie die Testautomatisierung den Softwareentwicklungsprozess verbessert

Geschrieben von Robert Balink | Jul 24, 2024 7:37:59 AM

Die Qualitätssicherung spielt im Projektalltag eine wichtige Rolle. Durch sie werden neu implementierte Funktionalitäten getestet und die Einhaltung von Anforderungen und Spezifikationen sichergestellt.

Qualitätssicherung im Softwareentwicklungsprozess

Die Qualitätssicherung in der Softwareentwicklung ist ein entscheidender Schritt im Softwareentwicklungsprozess. Dabei ist es unerheblich, welches Entwicklungsmodell (V-Modell, Scrum uvm.) angewendet wird. Der Testvorgang muss spätestens vor jeder Auslieferung erfolgen, um die Qualität einer Software zu gewährleisten. Die genaue Vorgehensweise hängt dabei wiederum vom gewählten Entwicklungsmodell ab.

Methodisch verfolgt die Qualitätssicherung die Einhaltung vordefinierter Anforderungen an das Softwaresystem. Dies umfasst die Identifizierung von potenziellen Fehlerzuständen der Software, die Aufdeckung von möglichen Fehlhandlungen von Anwendern, sowie die Analyse möglicher Fehlerwirkungen auf das System. Ein umfassender Ansatz zur Qualitätssicherung berücksichtigt technische Aspekte, Kundenanforderungen, Standards und Benutzerfreundlichkeit.

Typischerweise folgt die Qualitätssicherung dem CTFL-Testprozess, der vom ISTQB (International Software Testing Qualification Board) als Leitfaden für Softwareprojekte vorgegeben wird. Der Testprozess ist unterteilt in die folgenden Schritte (stichwortartig jeweils Arbeitsergebnisse pro Schritt – nicht vollständig):

  1. Testplanung
    Strategie festlegen und im Testkonzept festhalten
  2. Testüberwachung/-steuerung
    Vergleich zwischen Ist- und Soll-Zustand (Testberichte)
  3. Testanalyse
    Testbedingungen werden festgelegt
  4. Testentwurf
    Testfälle werden entworfen
  5. Testrealisierung
    Erstellung des Testausführungsplans sowie der Testskripte
  6. Testdurchführung
    Ausführung entsprechend dem Testausführungsplan sowie Dokumentation
  7. Testabschluss
    Erstellung des Testabschlussberichts


In iterativen Entwicklungsprozessen wie Scrum ist es üblich, die Qualitätssicherung bereits in frühen Phasen des Softwareentwicklungszyklus zu begleiten. So können Fehler und Mängel frühzeitig erkannt und behoben werden. In der Vergangenheit war ausschließlich manuelles Testen im Rahmen der Testdurchführung gängige Praxis. In Zeiten von DevOps-Prozessen sowie immer kürzer werdenden Release-Zyklen ist der Prozess des manuellen Testens zeitaufwändiger geworden.

Neben dem Zeitfaktor wird die Arbeit eines Testers gerade in großen und komplexen Softwareprojekten repetitiver, da er nach Änderungen einen Großteil der bestehenden Funktionalität erneut testen muss. Hier hilft die Testautomatisierung, die Effizienz des Testprozesses zu steigern und die Belastung des Testers zu reduzieren.

 

 

Was bedeutet Testautomatisierung?

Die Testautomatisierung bezieht sich auf den Einsatz von Softwarewerkzeugen und Skripten zur Automatisierung des Qualitätssicherungsprozesses. Ziel ist es, den Schritt der Testdurchführung (schrittweise) zu automatisieren, um wiederholbare Testfälle effizient durchzuführen. Dies betrifft vor allem Funktionalitäten einer Software, die kontinuierlich genutzt werden und eine hohe Priorität haben. Durch den Einsatz eines Testautomatisierungsansatzes wird der gesamte Testprozess bei gleichbleibender Qualität aufgrund der Wiederholbarkeit beschleunigt.

Während die Testautomatisierung für verschiedene Arten von Tests angewendet werden kann (z.B. Lasttests, Funktionstests), ist sie vor allem für Regressionstests in iterativen Entwicklungsmodellen geeignet.

Regressionstests beschreiben das umfangreiche Testen von unveränderten Softwarebereichen, um zu überprüfen, ob sich nach Änderungen Fehlerzustände in funktionierende Bereiche eingeschlichen haben. Da dieser Vorgang manuell sehr zeitaufwendig wäre, können Regressionstests durch automatisierte Testskripte nach initialer Erstellung jederzeit auf Knopfdruck durchgeführt werden. Die Testskripte führen dabei immer die gleichen Aktionen aus und überprüfen die zu erwartenden Ergebnisse.

Nach der Durchführung erhält der Tester einen automatisch generierten Testbericht. Somit werden die Schritte Testdurchführung sowie Testüberwachung im Testprozess durch die Testautomatisierung enorm vereinfacht. Lediglich die initiale Erstellung der Testskripte erfordert einen höheren Zeitaufwand, da zu Beginn die Testarchitektur auf Quellcodeebene erstellt werden muss.

Automatisierte Tests versprechen eine schnellere Testausführung sowie eine frühzeitige Identifikation von Fehlern in einer frühen Phase der Softwareentwicklung. Mittelfristig trägt die Testautomatisierung dazu bei, dass der Testprozess bei gleichbleibender Bedeutung einen deutlich geringeren zeitlichen Anteil im Softwareentwicklungszyklus einnimmt.

 

Welche Vorteile bringt die Testautomatisierung mit sich?

Der Testautomatisierungsansatz bietet erhebliche Vorteile gegenüber traditionellen manuellen Tests. Er verbessert die Wiederholbarkeit, Skalierbarkeit, Zeitersparnis und Abdeckung der Anwendungsfunktionalität, reduziert Kosten und integriert sich nahtlos in CI/CD-Pipelines.

 

 

Wiederholbarkeit

  • nach initialem Entwicklungsaufwand von Testskripten, müssen diese nicht mehr nennenswert verändert werden
  • Testskripte können jederzeit automatisiert ausgeführt werden, sie liefern konsistente Ergebnisse

Abdeckung der Anwendungsfunktionalität

  • in Testskripten lassen sich alle möglichen Arten von Anwendungsfunktionalitäten darstellen
  • komplexe Ausführungsschritte und Funktionalitäten lassen sich dadurch simpler überprüfen und validieren

Einbettung in CI/CD-Pipeline

  • der Testautomatisierungsvorgang sollte automatisiert in einem CI/CD-Umfeld durchgeführt werden
  • Pipeline-Ausführungen vor Änderungen ermöglicht Entwicklern schnelles Feedback ohne Tester-Wartezeit

Skalierbarkeit

  • automatisierte Testskripte sind problemlos auf verschiedene Systemumgebungen und Konfigurationen skalierbar
  • dezentrale Ausführung von Regressionstests auf verschiedenen Systemen reduziert die Ausführungszeit erheblich

Zeitersparnis

  • Zeitersparnis durch schnelle Fehleridentifikation bei neuen Funktionen
  • besonders effektiv in CI/CD-Umgebung
  • Entwickler profitieren von autonomer Entwicklung

Kostenreduktion

  • nach anfänglichem Aufwand werden weniger Ressourcen für das Testen benötigt
  • Tester können sich auf andere Aspekte konzentrieren sowie schnelles Feedback für Entwickler
  • beschleunigte Software-Releases für Projektleiter

Praktischer Anwendungsfall der Testautomatisierung für eine Fachanwendung (UI-Testautomatisierung)

Das folgende Praxisbeispiel aus einem unserer USU-Projekte zeigt eine vollständig integrierte Testautomatisierung für eine Fachanwendung im agilen Kontext. Die Qualitätssicherung testet hier die grafische Benutzeroberfläche der Fachanwendung nach höchsten Qualitätsstandards.

 

Abbildung: Testprozess im agilen Kontext

 

Im ersten Schritt begannen die Tester mit der Entwicklung des Testkonzepts sowie der Struktur der Testarchitektur für die Testautomatisierung. Für das Thema UI-Testing wurde im Projekt das Testwerkzeug Selenium eingesetzt. Im nächsten Schritt wurden in der Testanalyse alle möglichen Testbedingungen geklärt. Dazu gehörten sowohl die auszuführenden Browservarianten als auch die Performancebedingungen. Im Testentwurf wurden Testfälle in der Testmanagementsoftware Xray (Alternativtools: TestRail, Zephyr) auf Basis der bestehenden Anforderungen des Auftraggebers hinterlegt. Im Tool wird die Ausführungslogik Schritt für Schritt erklärt.

Mittels des Page Object Models wird die Testarchitektur als Ebenbild der Webanwendung erstellt. Dabei werden häufig wiederkehrende Prozesse und Basisfunktionalitäten (z.B. Login-Prozess) generisch entwickelt. Dieses Vorgehen stellt sicher, dass der Tester bei der Erstellung neuer Testskripte möglichst wenig eigenen Code schreiben muss.

Eine Anforderung des Kunden in diesem Projekt war es, den Login-Prozess für drei verschiedene Browser zu testen. Da die Fachanwendung über vier verschiedene Benutzerrollen verfügt, bedeutete dies selbst für einen einfachen Testfall wie diesen insgesamt 12 Testfallausführungen mit unterschiedlichen Variablen. Ein manueller Test wäre hier repetitiv und zeitaufwendig. Für die Testautomatisierung war hier jedoch nur eine kleine Konfigurationsänderung notwendig.

Nachdem die CI/CD-Pipeline für das kontinuierliche Deployment erstellt wurde, ließ sich das volle Potential der Testautomatisierung ausschöpfen. Die zu testenden Kernfunktionalitäten wurden nun in Testsuiten zusammengefasst und jede Nacht als Regressionstest automatisiert durchgeführt. Anhand des automatisch generierten Testreports konnte festgestellt werden, ob eine neue Funktionalität eine bereits bestehende beeinflusst hatte.

Durch die Integration der CI/CD-Pipeline mit der Testmanagementsoftware war im letzten Schritt auch eine lückenlose Rückverfolgung des Teststatus über die Testmanagementsoftware für alle Mitglieder des Projektteams ersichtlich. Die Testautomatisierung erfolgt in diesem Schritt vollautomatisch im Hintergrund.

Damit ermöglichte USU in diesem Projekt eine reibungslose Testautomatisierung mit hervorragender Qualität.

 

Ersetzt die Testautomatisierung das manuelle Testen?

Nein, nicht vollständig. Die Testautomatisierung ersetzt in erster Linie repetitive Aufgaben des manuellen Testens und reduziert den Zeitaufwand des Testers pro Projekt.

Der Tester oder die Testerin kann sich nun im Projekt mit Testaktivitäten beschäftigen, die eine Testautomatisierung nicht übernehmen kann. Dazu gehören Aufgaben wie die Benutzerfreundlichkeit der Software, das Design oder auch das explorative Testen. Exploratives Testen ist eine dynamische Testmethode, bei der der Tester kreativ an das System herangeht. Der Fokus liegt auf unvorhergesehenen Fehlern und anderen Schwachstellen, die nur durch manuelles Testen aufgedeckt werden können.

Der Tester für die Testautomatisierung entwickelt zu Beginn des Projekts hauptsächlich die Testarchitektur und die Testskripte. Im Laufe des Projekts übernimmt er jedoch zunehmend eine administrative Rolle. Er analysiert die Testberichte und aktualisiert die Testskripte.

 

Fazit

Das Thema Qualitätssicherung kann in fortgeschrittenen Softwareprojekten oft zu viel Frustration führen. In scheinbar funktionierenden Implementierungen tauchen im späteren Verlauf der Entwicklung vermeidbare Fehler auf.

Tester müssen zeitaufwändig immer wieder Funktionen testen, die sie in der Vergangenheit schon zuhauf getestet haben. Testautomatisierung kann diese Punkte deutlich verbessern.

Die Testautomatisierung sollte frühzeitig in den Entwicklungsprozess integriert werden. Dadurch wird ein reibungsloser Testablauf gewährleistet und Entwickler erhalten schnelles Feedback. Projektmanager können dadurch auch schnellere Veröffentlichungen ermöglichen.

 

Quellen