Developer beim Testing
Total Experience  | 25 Sep 2024

QA Test Insights

Automatisiertes vs. manuelles Testing

Autorenbild Nikola Shekerev
Nikola Shekerev

Die IT-Branche hat sich im letzten Jahrzehnt stark verändert – auch, was Qualitätssicherung betrifft. Diese hat sich zunehmend auf Automatisierung und kontinuierliche Integration (CI/CD) verlagert, um schnellere und effizientere Testprozesse zu ermöglichen. Zudem spielen nutzerzentrierte Ansätze und agile Methoden eine immer größere Rolle, um die Qualität der Software in dynamischen Entwicklungszyklen sicherzustellen. In Gesprächen mit Kunden ist uns ein Muster aufgefallen: Die Automatisierung wird oft als Standardansatz angesehen, während manuelle Tests als veraltet gelten. Diese grobe Vereinfachung enthält zwar einen gewissen Wahrheitsgehalt, lässt aber entscheidende Nuancen außer Acht, die für eine erfolgreiche Softwareentwicklung unerlässlich sind: 

Die Aufgabe von uns Engineers ist es, Probleme zu lösen. Noch wichtiger ist jedoch, dass wir diese Probleme effizient lösen. In diesem Blog-Post werden wir die Strategie erläutern, die wir für die (kosten-) effizienteste Methode halten. Wir nennen sie die 80-20-Regel. 

Die 80-20 Regel

Bei diva-e Projekten werden die Tests sowohl manuell als auch automatisch durchgeführt. Die Ressourcen werden so aufgeteilt, dass 20 Prozent für manuelle Tests und 80 Prozent für automatisiertes Testing aufgewendet werden. Bitte beachten Sie, dass diese Aufteilung nicht-technische Arbeiten wie das Lesen von E-Mails und das Schreiben von informativen Blogbeiträgen wie diesem ausschließt. Wir beziehen uns hier auf die Kerntätigkeiten. Es kann die Arbeit zwar vereinfachen, wenn dieselben Personen sowohl die manuellen als auch die automatisierten Arbeiten erledigen, aber es ist nicht zwingend erforderlich. 

Die 20 Prozent der manuellen Tätigkeiten konzentrieren sich auf zwei Bereiche, die nicht durch Automatisierung abgedeckt werden können: 

Exploratives Testing

Bei jeder neuen Funktion erkundet die QA die gesamte Bandbreite der Interaktionen, die die Software ermöglicht. Von der QA wird erwartet, dass sie kreativ ist und sich nicht auf die in ihrer schriftlichen Vorgabe beschriebenen Interaktionen beschränkt. Dabei geht es nicht nur darum, die Anforderungen zu erfüllen, sondern auch, Lücken zu finden. 


Beispiel: Wir entwickeln einen Online-Shop und haben eine bestehende Funktion, bei der einige Artikel unter bestimmten Bedingungen rabattiert werden können. Wir fügen eine neue Funktion hinzu: einen Einkaufswagen, mit dem Nutzer:innen mehrere Artikel mit einer einzigen Transaktion kaufen können. Kund:innen erwarten, dass rabattierte Artikel mit ihrem reduzierten Preis berechnet werden und das Hinzufügen oder Entfernen mehrerer rabattierter Artikel aus dem Warenkorb die Rabattregeln korrekt anwendet – auch, wenn mehrere Browser-Tabs mit demselben Warenkorb interagieren und denselben Gesamtpreis ergeben. Was geschieht jedoch mit dem Warenkorb, wenn sich der/die Nutzer:in abmeldet oder das Gebietsschema und die Währung ändert? 

Der Benefit vom explorativen Testen: Der Produktverantwortliche muss nicht alle möglichen Kombinationen von Regeln und Interaktionen im Voraus in der Aufgabenbeschreibung explizit dokumemtieren – die Ermittlung erfolgt durchs Testing. Der manuelle Aufwand beim explorativen Testen hat einen weiteren Vorteil: Manuelle Tester nutzen die Software ausschließlich, um Feedback abzugeben – anders als die Endnutzer:innen. Kund:innen sind Menschen und Menschen sind emotional – gerade Software, die nicht nach den Vorstellungen der Zielgruppe kann Nutzer:innen wütend machen und sie vom Kauf abbringen.  

Manuelle Reproduktion von Fehlern in der Automatisierung

Automatisierte Tests schlagen fehl – und das ist auch die Intention. Aber: sie zeigen keine Fehler auf, sondern nur Symptome. Als QAs ist es unsere Aufgabe, diese Symptome zu untersuchen und den Entwickler:innen sorgfältig kuratierte und beschriebene Dokumentationen zu liefern. Der erste Schritt bei eines solchen Checks ist immer die manuelle Reproduktion des Problems, denn wenn das Problem reproduzierbar ist, können wir es den Developer:innen außerhalb des Automatisierungskontexts aufzeigen. Wenn das Problem nur bei der Automatisierung auftritt, müssen wir im nächsten Schritt den Grund dafür herausfinden: 

  • Automatisierung funktioniert immer über einen Code, also könnte ein Fehler in unserem Automatisierungsframework vorliegen. 

  • Das Produkt könnte auch eine Race Condition aufweisen – diese tritt allerdings nur in seltenen Fällen nur mit einer Wahrscheinlichkeit von 5 % auf und wird deshalb nur von der Automatisierung erfasst.  

  • Manchmal treten Fehler nur in einer bestimmten Umgebung auf, so dass die Ursache der Infrastruktur liegen könnte. In jedem dieser Fälle gibt nur die manuelle Ausführung des fehlgeschlagenen Tests wertvolle Hinweise für die weitere Fehlersuche. 

Was sind die Vorteile von automatisiertem Testing?

Moderne Software ist sehr umfangreich. Wenn ein Projekt reift, wächst auch die Zahl der möglichen Testfälle exponentiell. Innovative Software ist dynamisch, sie verändert sich mit jeder neuen Zeile Code. Jede Änderung kann etwas kaputt machen, das in der Vergangenheit funktioniert hat. Man hat also nicht nur eine riesige Anzahl von Testfällen, sondern muss sie auch ständig wiederholen. 

  1. Der Aufwand des Testens 

Stellen Sie sich zum Beispiel einen gut entwickelten Online-Shop mit allen Funktionen vor: Shop-Filter, Suche, Adressverwaltung, Zahlungsverwaltung und natürlich mehrsprachige Unterstützung. Ein solches Projekt mag wie der gängige Standard erscheinen, aber es ist durchaus möglich, mehr als tausend Testfälle zu haben. Selbst ein Standard-Chatbot-Menü kann Dutzende von möglichen Interaktionspfaden haben. Der Umfang dieser Arbeit ist so immens, dass bei einem wachsenden Projekt die Automatisierung der einzige Ansatz ist, um das gewünschte Mindestmaß an Qualität im gesamten Online-Shop zu erreichen.  

  1. Das Testing-Tempo 

Automatisierung ist Code und erfordert Programmierung. Die technische Komplexität eines Tests ist gering – wenn wir ihn automatisieren müssen, steigt die Komplexität. Während einzelne Tests in der Regel einfach sind, wird die Aufrechterhaltung eines ausgereiften Automatisierungs-Frameworks zu einer ernsthaften Herausforderung.  

Es gibt dafür keinen richtigen Weg, aber es gibt viele falsche Wege. Wir stellen uns dabeu regelmäßig folgende Fragen: Wie bringt man Tausende von Tests in einer Stunde und nicht in sieben Stunden zum Laufen? Wie stellen wir sicher, dass sich die Tests nicht gegenseitig mit subtilen Nebeneffekten stören? UI-Tests sind notorisch instabil, was können wir dagegen tun? Wie können wir dafür sorgen, dass Tests auf eine Weise fehlschlagen, die uns Aufschluss gibt, anstatt uns zu verwirren und unsere Zeit zu verschwenden?  


Diese Fragen machen die Herausforderungen deutlich, die wir lösen müssen, wenn wir nicht 20, sondern 200 und später 2000 Tests verwalten. Bei einem derartigen Volumen ist es sehr schwierig, die Testabdeckung zu messen. Automatisierung vom Testing ist zwar komplex, man sollte sie aber dennoch immer als eine Erweiterung der eigentlichen Programmierarbeit betrachten. 

In welchen Fällen reicht manuelles Testing aus?

Wenn also die Automatisierung so schwierig ist, brauchen wir sie dann wirklich? In vielen Situationen ist das manuelle Testen völlig ausreichend, wie zum Beispiel in der Anfangsphase von Start-Ups oder in der MVP-Phase einzelner Projekte. Jedes Projekt, das nicht von Anfang an stark skaliert werden muss, kann ohne Automatisierung auskommen. Was dabei aber nicht vergessen werden darf: Nur ein kleiner Teil der Software eines Produktes ist auf manuelle Tests angewiesen.Zusammengefasst können wir das Thema auf zwei Punkte herunterbrechen: 

  • Automatisierung ist komplex – das bedeutet höhere Kosten, vor allem zu Projektbeginn 

  • Automatisierung ist unverzichtbar, wenn das Testvolumen hoch ist und regelmäßige Wiederholungen stattfinden 

 

KI: Was bringt die Zukunft?

KI bringt einen großen Mehrwert für das Testing der Zukunft und es ist zu erwarten, dass dadurch ein großer Teil unserer Arbeit automatisiert wird. Ein Muster, das uns bei unserer täglichen Arbeit aber immer wieder begegnet: Aktuelle KI-Tools sind hervorragend im Schreiben von neuem Code, haben aber häufig noch Schwierigkeiten bei der Fehlersuche und der Änderung von bestehendem und nicht funktionierendem Code.  


Automatisiertes Testing ist zwar zu einem unverzichtbaren Werkzeug geworden, um die steigenden Anforderungen an Geschwindigkeit und Skalierbarkeit in der Softwareentwicklung zu bewältigen. Dennoch bleibt manuelles Testing, insbesondere im Bereich des explorativen Testens und bei der Fehlersuche, ein entscheidender Faktor für den Erfolg von Projekten. Die 80-20-Regel, die den effizienten Einsatz von automatisierten und manuellen Tests kombiniert, ist dabei eine bewährte Strategie, die sich in komplexen und dynamischen Entwicklungsumgebungen bewährt hat. 


Sie möchten mehr Insights zum Ablauf eines diva-e Projektes? Dann melden Sie sich gern bei uns! 

Autorenbild Nikola Shekerev

Nikola Shekerev

Als Senior Quality Engineer verfügt Nikola über umfassendes Wissen zur Testautomatisierung sowie zu verschiedenen Testautomatisierungs-Frameworks. Mit seiner über zehnjährigen Erfahrung im Bereich der Software-Qualitätssicherung unterstützte er unsere Teams dabei, die Qualität unserer Softwareprodukte kontinuierlich zu verbessern.

Alle Artikel ansehen