Software-Test
Software-Test
Was ist ein Software-Test?
Ein Software-Test ist die systematische Untersuchung einer Anwendung, um Fehler zu finden und sicherzustellen, dass sie den funktionalen und nicht-funktionalen Anforderungen entspricht. Verschiedene Testarten prüfen dabei unterschiedliche Aspekte der Software.
Auswahl von Testarten
Unit Test
Test einzelner Funktionen im Quellcode.
Komponententest
Prüfung einzelner Komponenten als Ganzes.
Integrationstest
Test der Zusammenarbeit verschiedener Komponenten im Verbund.
Funktionaler Test
Prüfung, ob angegebene Funktionen fachlich und technisch korrekt funktionieren.
End2End-Test
Prüfung, ob das Gesamtsystem die spezifizierten Funktionen im Gesamtaufbau erfüllt.
Akzeptanztest
Prüfung, ob Änderungen den Spezifikationen entsprechen und akzeptiert werden können.
Explorativer Test
Der Versuch, ohne feste Agenda Probleme mit dem Produkt zu lösen.
Performance-Test
Prüfung, wie zeit- und ressourceneffizient das Produkt Probleme löst.
Smoke-Test
Prüft, ob das Produkt überhaupt gestartet werden kann. Der Name stammt aus der Elektrotechnik: Der Test galt als nicht bestanden, wenn Rauch aufstieg.
Penetrationstest
Strukturierte Untersuchung auf Sicherheitslücken, etwa in eingebundenen Abhängigkeiten oder bei der Umsetzung von Entwurfsmustern.
Die hier vorgestellte Liste ist nicht abschließend und zeigt, wie während einer Test-Session der Fokus gelegt werden und auf welche Aspekte besonders geachtet werden kann.
Bei der Auswahl der geeigneten Methoden und/oder der Durchführung helfe ich gern.
Warum sind Software-Tests wichtig?
Verbesserung der Software-Qualität
Strukturierte Tests erkennen und beheben Fehler frühzeitig, bevor sie in die Produktion gelangen.
Reduzierung von Risiken
Software-Fehler können hohe Kosten verursachen und das Unternehmensimage schädigen. Tests minimieren diese Risiken und unterstützen eine nahtlose User Experience.
Kundenzufriedenheit
Fehlerfreie und leistungsfähige Software verbessert die Benutzererfahrung und steigert die Kundenzufriedenheit.
Effizienzsteigerung
Regelmäßige Tests schulen Tester:innen und optimieren wiederholbare Prozesse. Früher behobene Bugs können die Kosten um bis zu 80 % senken.
Ablauf eines Software-Tests
Eine strukturierte Vorgehensweise stellt sicher, dass Software-Tests effektiv sind:
-
Testplanung
Herangehensweise, Methoden, Werkzeuge, Zeitrahmen, Ressourcenbedarf und Testumgebung definieren und an beteiligte Fachbereiche kommunizieren.
-
Testfalldefinition
Auf Basis von Anforderungen und Erfahrungen Testfälle erstellen, die manuell oder automatisch ausgeführt werden können.
-
Testdurchführung
Tests manuell und/oder automatisiert durchführen und die Ergebnisse dokumentieren.
-
Bugfixing
Gefundene Fehler analysieren und dokumentieren; die Behebung erfolgt gemeinsam mit dem Entwicklungsteam.
-
Regressionstest
Einzelne Tests wiederholen, um sicherzustellen, dass Bugfixes keine neuen Fehler verursacht haben.
-
Abschluss und Bericht
Die Software-Qualität analysieren und abhängig von den definierten Standards eine Freigabeempfehlung aussprechen – oder davon abraten.
Best Practices im Software-Test
-
Frühes Testen
Je früher Tests im Entwicklungsprozess beginnen, desto geringer sind die Kosten für Fehlerbehebungen. Dieser Ansatz wird oft „Shift Left“ genannt.
-
Testautomatisierung, wo sinnvoll
Automatisierte Tests sparen Zeit und verbessern die Testabdeckung, sind aber kein Allheilmittel und ersetzen keine gründliche Qualitätssicherung.
-
Klare Testfälle und Dokumentation
Gute Testfälle sind nachvollziehbar, reproduzierbar und dokumentiert. Sonst entstehen aufwendige Fehlersuchen und Abstimmungen.
-
Auf die richtige Teststufe achten
Was ein Unit-Test abdecken kann, sollte dort geprüft werden. Teure End-to-End-Tests gehören zum Zusammenspiel der Systembereiche, nicht zu Grenzwert-Tests.
-
Kontinuierliche Verbesserung
Testprozesse regelmäßig überprüfen und optimieren, um Effizienz und Effektivität zu steigern.
Herausforderungen im Software-Test
Unvollständige Anforderungen
Unklare Spezifikationen führen zu ungenauen Tests.
Eng mit Stakeholdern zusammenarbeiten und Anforderungen klären.
Zeit- und Budgetbeschränkungen
Oft steht nicht genügend Zeit oder Geld für umfassende Tests zur Verfügung.
Die wichtigsten Testfälle priorisieren, kritische Tests automatisieren und das Management für den wirklich nötigen Scope sensibilisieren.
Testdaten-Management
Realistische Testdaten sind oft schwer verfügbar.
Testdaten generieren oder reale Daten anonymisieren. Bei Echtdaten unbedingt die für Datenschutz zuständige Person einbeziehen, um juristische Probleme zu vermeiden.
Komplexität
Große und vernetzte Systeme erschweren das Testen.
Modular testen und kontinuierlich über CI/CD-Pipelines integrieren – jeweils auf der korrekten Teststufe.
Fazit
Häufig Gestellte Fragen
Mein Team testet selbst – Wieso sollte ich den Test nach Extern vergeben?
Zunächst sind Entwickler:innen keine spezialisierten Tester, finden daher nicht alles, was eine Fachperson finden würde. Weiterhin ist Entwicklungszeit die knappste Ressource und sollte daher nicht leichtfertig investiert werden. Zuletzt sehen vier Augen mehr als zwei, das lässt sich auch auf die Entwicklung übertragen.
Was wird beim Software-Test getestet?
Das hängt ganz vom gewünschten Fokus ab. In der Regel werden zunächst Funktionalität und optisches Gefallen geprüft, danach folgt der Test für Grenzfälle. Außerdem können Aspekte wie Sicherheit und Perfomanz oder Barrierefreiheit in den Fokus genommen werden.
Was muss ich für einen Software-Test vorbereiten?
Neben Accounts, die alle zu testenden Fälle abdecken ist eine isolierte Testumgebung benötigt. Tests können auf der produktiven Instanz durchgeführt werden, dies ist allerdings hochriskant – Vor allem bei buchenden Systemen.
Wie lang dauert ein Software-Test?
Das hängt von verschiedenen Faktoren wie der gewünschten Detailtiefe und der Komplexität des zu testenden Produkts ab. In der Regel lässt sich innerhalb eines Tages ein gutes Ergebnis erzielen, bei guter Kenntnis des Produkts vielleicht sogar schneller.
Ist ein externer Software-Test das Geld wert?
Dadurch, dass nicht nur technische Probleme, sondern auch weitere Usell-Potenziale aufgedeckt werden, wirkt ein Software-Test sogar umsatzsteigernd.
