Eine effektive Teststrategie ist entscheidend für den Erfolg eines Softwareprojekts, da sie den Rahmen und die Richtlinien für alle Testaktivitäten bereitstellt.
Die Teststrategie ist ein Dokument, das die Rahmenbedingungen und den geplanten Ansatz für alle Testaktivitäten in einem Softwareprojekt festlegt. Sie bietet eine klare Richtlinie für das
Testteam und stellt sicher, dass die Testbemühungen eng mit den Geschäfts- und Qualitätszielen der Organisation abgestimmt sind.
Die Teststrategie definiert die gesamte Ausrichtung und den Ansatz der Testaktivitäten innerhalb eines Projekts. Sie legt fest, wie das Testen durchgeführt wird, um die Qualitätsziele der
Software zu erreichen.
Durch die Erstellung einer detaillierten Teststrategie wird sichergestellt, dass das Testteam eine klare Anleitung hat, wie die Qualitätsziele effektiv und effizient erreicht werden können, und
gleichzeitig wird die Grundlage für eine erfolgreiche Softwareentwicklung und -lieferung gelegt.
-
Zweck und Reichweite
Definition des Zwecks und der Reichweite der Testaktivitäten innerhalb des Projekts.
-
Abstimmung mit Geschäftszielen
Sicherstellung, dass die Testziele die Geschäftsziele unterstützen und mit ihnen in Einklang stehen.
-
Testlevel und -arten
Beschreibung der verschiedenen Teststufen (z.B. Unit-Tests, Integrationstests, Systemtests, Akzeptanztests) und der spezifischen Testarten (z.B. Funktional, Nicht-Funktional).
-
Testwerkzeuge und -technologien
Auswahl der Werkzeuge und Technologien, die für die Durchführung der Tests verwendet werden.
-
Planung und Kontrolle
Definition der Testplanungs- und Kontrollmaßnahmen, um sicherzustellen, dass die Testaktivitäten termingerecht und innerhalb des Budgets durchgeführt werden.
-
Ressourcenmanagement
Zuweisung und Management von Testressourcen, einschließlich Personal, Werkzeugen und Infrastruktur.
-
Risikobewertung
Identifizierung und Bewertung von Risiken, die mit den Testaktivitäten verbunden sind, und Entwicklung von Strategien zu deren Minimierung.
-
Priorisierung
Festlegung, wie Tests priorisiert werden, basierend auf der Risikobewertung und den Geschäftsanforderungen.
-
Qualitätssicherungsmaßnahmen
Beschreibung der Maßnahmen zur Qualitätssicherung, um die Einhaltung von Qualitätsstandards sicherzustellen.
-
Konformitätsprüfung
Sicherstellung, dass die Software alle relevanten gesetzlichen und technischen Standards erfüllt.
-
Kommunikationsplan
Festlegung der Kommunikationswege und -frequenz, um sicherzustellen, dass alle Stakeholder regelmäßig über den Fortschritt der Testaktivitäten informiert werden.
-
Reporting
Definition der Berichtsstrukturen und -intervalle, um den Projektfortschritt und die Testergebnisse zu dokumentieren.
-
Feedbackschleifen
Implementierung von Mechanismen für regelmäßiges Feedback, um die Teststrategie kontinuierlich zu verbessern.
-
Anpassungsfähigkeit
Flexibilität der Teststrategie, um sie an veränderte Projektbedingungen oder unerwartete Herausforderungen anzupassen.
-
Qualitätsziele
Klare Definition, was durch die Tests erreicht werden soll, einschließlich der spezifischen Qualitätsziele der Software.
-
Businessziele
Abgleich der Testziele mit den übergeordneten Geschäftszielen des Projekts oder der Organisation.
-
Testebenen
Beschreibung der verschiedenen Testebenen (z.B. Unit-Tests, Integrationstests, Systemtests, Akzeptanztests) und deren Bedeutung im Testprozess.
-
Testmethoden
Auswahl der Methoden (manuell oder automatisiert) und Techniken (z.B. Black-Box, White-Box, explorativ) für die Durchführung der Tests.
-
Inklusion und Exklusion
Festlegung, welche Bereiche und Funktionen des Systems getestet werden und welche aus dem Testumfang ausgeschlossen sind.
-
Priorisierung
Bestimmung der Prioritäten für die Testfälle basierend auf Risikobewertung und geschäftlicher Bedeutung.
-
Ressourcenzuordnung
Zuweisung von personellen und technischen Ressourcen für die Testdurchführung.
-
Zeitplanung
Definition der Zeitrahmen für die einzelnen Testaktivitäten und Meilensteine.
-
Risikoanalyse
Identifikation potenzieller Risiken in Bezug auf die Softwarequalität und das Projekt.
-
Risikominderungsstrategien
Entwicklung von Strategien zur Minimierung oder Handhabung dieser Risiken.
-
Auswahl von Testwerkzeugen
Entscheidung über die zu verwendenden Tools für Testmanagement, Fehlerverfolgung und Testautomatisierung.
-
Integration der Tools
Sicherstellung, dass die Tools effektiv in den Test- und Entwicklungsprozess integriert sind.
-
Dokumentationsstandards
Festlegung der Anforderungen für die Dokumentation der Testergebnisse und -prozesse.
-
Kommunikationspläne
Definition, wie Informationen über den Fortschritt und die Ergebnisse der Tests kommuniziert werden.
-
Regelmäßige Überprüfungen
Planung von regelmäßigen Überprüfungen der Teststrategie, um deren Angemessenheit und Aktualität sicherzustellen.
-
Anpassungen
Anpassung der Strategie basierend auf den Ergebnissen der Überprüfungen oder Änderungen im Projektumfeld.
Die Implementierung der Teststrategie sollte folgende Schritte umfassen:
-
Testplanung
Festlegung der Testziele, Auswahl der Testmethoden und Zuordnung der Ressourcen.
-
Testentwicklung
Erstellung der Testfälle und Testdaten basierend auf den identifizierten Qualitätsmerkmalen.
-
Testdurchführung
Ausführung der Tests und Sammlung der Ergebnisse.
-
Testauswertung
Analyse der Testergebnisse und Entscheidung über die Notwendigkeit weiterer Tests oder Anpassungen der Software.
Kontinuierliche Überprüfungen und Anpassungen der Teststrategie sind erforderlich, um auf Änderungen in den Projektanforderungen oder technologischen Rahmenbedingungen zu reagieren.
Die Teststrategie bildet den Kern des Testkonzepts und definiert, wie das Testen durchgeführt wird, um die Softwarequalität sicherzustellen. Sie legt fest, welche Testmethoden, -werkzeuge und
-umgebungen verwendet werden und wie die Testziele erreicht werden sollen. Die Strategie muss dabei sowohl funktionale als auch nicht-funktionale Aspekte der Software abdecken.
Funktionale Tests konzentrieren sich auf die Überprüfung der Funktionalität der Software gemäß den spezifizierten Anforderungen. Dazu gehören:
-
Korrektheit
Sicherstellung, dass die Software die erwarteten Ergebnisse liefert.
-
Angemessenheit
Überprüfung, ob die Funktionalitäten für die beabsichtigten Aufgaben und Benutzeranforderungen geeignet sind.
-
Interoperabilität
Tests, ob die Software korrekt mit anderen Systemen oder Softwarekomponenten zusammenarbeitet.
-
Ordnungsmäßigkeit
Überprüfung der Einhaltung von Geschäftsregeln und Standards.
-
Sicherheit
Gewährleistung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten.
Nicht-funktionale Tests beziehen sich auf Aspekte der Software, die nicht direkt mit den spezifischen Funktionen verbunden sind, aber für die Gesamtqualität entscheidend sind:
-
Effizienz
Messung der Leistungsfähigkeit der Software unter verschiedenen Bedingungen, einschließlich Zeitverhalten und Ressourcenverbrauch.
-
Zuverlässigkeit
Überprüfung der Fehlertoleranz, Stabilität und Wiederherstellbarkeit der Software unter fehlerhaften Bedingungen.
-
Übertragbarkeit
Tests zur Bestimmung der Leichtigkeit, mit der die Software in eine andere Umgebung übertragen werden kann.
-
Änderbarkeit
Bewertung der Einfachheit, mit der die Software modifiziert oder analysiert werden kann.
-
Benutzbarkeit
Überprüfung der Benutzerfreundlichkeit, inklusive der Verständlichkeit, Erlernbarkeit und Bedienbarkeit der Software.
Die Entscheidung, bestimmte Qualitätsmerkmale nicht zu testen, kann aus verschiedenen Gründen notwendig sein, wie etwa begrenzte Ressourcen, technische Einschränkungen oder weil bestimmte
Merkmale für das Endprodukt von untergeordneter Bedeutung sind.
Beispiele für nicht zu testende Qualitätsmerkmale:
-
Attraktivität (unter Benutzbarkeit)
- Begründung
Obwohl das visuelle Design wichtig ist, könnte es in einer frühen Entwicklungsphase oder bei internen Tools, die nicht kundenorientiert sind, von geringerer Priorität sein.
- Abgrenzung
Wenn die Anwendung hauptsächlich für interne Zwecke genutzt wird und keine direkte Kundeninteraktion stattfindet, kann die Attraktivität zurückgestellt werden, um Ressourcen auf
kritischere Aspekte wie Funktionalität und Sicherheit zu konzentrieren.
-
Koexistenz (unter Übertragbarkeit)
- Begründung
Wenn die Software in einer isolierten Umgebung betrieben wird oder keine Interaktion mit anderen Anwendungen erforderlich ist, kann der Test der Koexistenz übersprungen werden.
- Abgrenzung
Für Anwendungen, die als Standalone-Systeme konzipiert sind, ist es nicht notwendig, die Koexistenz zu testen, da keine Wechselwirkungen mit anderen Systemen bestehen.
-
Verbrauchsverhalten (unter Effizienz)
- Begründung
Bei Anwendungen, die auf High-End-Servern mit ausreichenden Ressourcen betrieben werden, könnte das Verbrauchsverhalten eine untergeordnete Rolle spielen.
- Abgrenzung
Wenn bekannt ist, dass die Hardware-Ressourcen stets weit über den Anforderungen der Software liegen, kann die Fokussierung auf das Verbrauchsverhalten vermieden werden, um
Testressourcen effizienter zu nutzen.
-
Erlernbarkeit (unter Benutzbarkeit)
- Begründung
Für Software, die von einem spezialisierten Benutzerkreis verwendet wird, der bereits mit ähnlichen Systemen vertraut ist, kann die Erlernbarkeit weniger kritisch sein.
- Abgrenzung
In Fällen, wo Anwender voraussichtlich bereits eine hohe Fachkompetenz besitzen, können Tests zur Erlernbarkeit zugunsten von tiefergehenden Funktionalitätstests minimiert
werden.
-
Stabilität (unter Änderbarkeit / Wartbarkeit)
- Begründung
Wenn eine Software als kurzfristige Lösung oder für einmalige Ereignisse entwickelt wird, könnte die langfristige Stabilität gegenüber Änderungen vernachlässigt werden.
- Abgrenzung
Für temporäre oder einmalige Anwendungen kann der Test der Stabilität gegenüber zukünftigen Änderungen als weniger wichtig erachtet und daher nicht durchgeführt werden.
Um ein effektives Testverfahren zu entwickeln und klare Akzeptanzkriterien auf Grundlage der genannten Qualitätsmerkmale festzulegen, sollte jedes Merkmal gründlich betrachtet und entsprechende
Testarten und -methoden ausgewählt werden.
- Angemessenheit
Überprüfung, ob die Funktionen der Software den Anforderungen der Nutzer entsprechen. Akzeptanzkriterien könnten beispielsweise Benutzerfeedback oder erfolgreiche Durchführung von
Benutzertests sein.
- Richtigkeit
Tests zur Überprüfung der korrekten Ausführung und Ergebnisgenauigkeit. Dies könnte durch Validierung von Berechnungen, Datenmanipulationen und Geschäftslogik erfolgen.
- Interoperabilität
Testen der Fähigkeit der Software, mit anderen Systemen oder Modulen effektiv zu interagieren. Akzeptanzkriterien sind beispielsweise erfolgreiche Integrationstests.
- Sicherheit
Durchführung von Sicherheitstests, einschließlich Penetrationstests und Schwachstellenanalysen, um die Unversehrtheit und Vertraulichkeit der Daten zu gewährleisten.
- Konformität
Sicherstellen, dass die Software alle relevanten Standards und Vorschriften einhält, durch Compliance-Tests.
- Reife
Überprüfung der Fehlerfreiheit durch Langzeittests und Verwendung unter normalen Betriebsbedingungen.
- Fehlertoleranz
Testen der Fähigkeit der Software, bei Fehlern weiterhin zu funktionieren, durch simulierte Fehlerbedingungen.
- Wiederherstellbarkeit
Bewertung der Effizienz und Effektivität der Recovery-Prozesse nach einem Ausfall.
- Konformität
Überprüfen, ob die Zuverlässigkeitsstandards und -vorschriften eingehalten werden.
- Zeitverhalten
Messen der Antwortzeiten und Verarbeitungsgeschwindigkeit unter verschiedenen Belastungen.
- Verbrauchsverhalten
Bewertung der Ressourcennutzung und Effizienz der Software.
- Konformität
Überprüfen der Einhaltung von Leistungsstandards.
- Verständlichkeit
Testen, wie leicht die Funktionen der Software zu verstehen sind.
- Erlernbarkeit
Messen, wie schnell ein neuer Benutzer die Anwendung erlernen kann.
- Bedienbarkeit
Bewertung der Einfachheit und Intuitivität der Benutzeroberfläche.
- Attraktivität
Einschätzung der ästhetischen Aspekte der Benutzeroberfläche.
- Konformität
Sicherstellen, dass die Benutzbarkeitsstandards erfüllt werden.
- Analysierbarkeit
Testen der Einfachheit, mit der sich die Ursachen von Fehlern identifizieren lassen.
- Modifizierbarkeit
Bewertung der Einfachheit, mit der die Software modifiziert werden kann, um Fehler zu beheben oder Funktionalität zu verbessern.
- Stabilität
Überprüfen der Auswirkungen von Änderungen auf die bestehende Funktionalität.
- Prüfbarkeit
Messen, wie einfach es ist, Tests für die Software durchzuführen.
- Konformität
Überprüfen der Einhaltung von Wartungsstandards.
- Anpassbarkeit
Bewertung der Einfachheit, mit der die Software an unterschiedliche Umgebungen angepasst werden kann.
- Installierbarkeit
Testen der Installationsprozesse unter verschiedenen Systemkonfigurationen.
- Koexistenz
Überprüfen der Fähigkeit der Software, neben anderen Anwendungen zu funktionieren.
- Austauschbarkeit
Bewertung der Einfachheit, mit der die Software durch alternative Lösungen ersetzt werden kann.
- Konformität
Sicherstellen, dass die Software alle relevanten Übertragbarkeitsstandards erfüllt.
Die Implementierung eines risikobasierten Testansatzes ist von Bedeutung, um die Effektivität des Testprozesses in Projekten zu maximieren, insbesondere unter Bedingungen begrenzter Ressourcen.
- Unzureichende Testabdeckung
- Wahrscheinlichkeit: Hoch
- Auswirkung: Hoch
- Beschreibung: Wenn nicht alle Funktionsbereiche der Software ausreichend getestet werden, besteht das Risiko, dass kritische Fehler bei der Auslieferung der Software unentdeckt
bleiben.
- Maßnahmen: Priorisierung der Testfälle basierend auf der Kritikalität der Funktionalitäten. Verwendung von Code Coverage Tools zur Identifikation ungetesteter Bereiche.
- Mangel an qualifizierten Testressourcen
- Wahrscheinlichkeit: Mittel
- Auswirkung: Hoch
- Beschreibung: Das Fehlen von erfahrenen Testern oder das Fehlen spezifischer Kenntnisse (z.B. in Sicherheitstests) kann die Qualität der Tests beeinträchtigen.
- Maßnahmen: Schulungen für Tester, Einsatz externer Experten oder Entwicklung eines Kompetenzzentrums innerhalb des Unternehmens.
- Technische Schwierigkeiten
- Wahrscheinlichkeit: Mittel
- Auswirkung: Mittel
- Beschreibung: Probleme mit Testwerkzeugen, Testumgebungen oder Integration von Systemkomponenten können Verzögerungen und Qualitätsprobleme verursachen.
- Maßnahmen: Regelmäßige Wartung und Überprüfung der Testinfrastruktur, frühzeitige Integrationstests.
- Änderungen in den Anforderungen
- Wahrscheinlichkeit: Hoch
- Auswirkung: Mittel bis Hoch
- Beschreibung: Häufige Änderungen in den Anforderungen können zu unvollständigen oder veralteten Tests führen.
- Maßnahmen: Agile Testmethoden implementieren, regelmäßige Abstimmung mit den Stakeholdern, Change Management Prozesse optimieren.
- Fehler in der Testdatenverwaltung
- Wahrscheinlichkeit: Mittel
- Auswirkung: Hoch
- Beschreibung: Unzureichende oder fehlerhafte Testdaten können zu irreführenden Testergebnissen und einer schlechten Bewertung der Softwarequalität führen.
- Maßnahmen: Einsatz von Tools zur Testdatengenerierung und -management, regelmäßige Überprüfungen und Aktualisierungen der Testdaten.
Um sicherzustellen, dass die Risiken effektiv gesteuert werden, ist eine regelmäßige Überprüfung und Anpassung der Risikobewertungen erforderlich. Dies sollte in festgelegten Intervallen oder bei
signifikanten Änderungen im Projektumfang oder in den Projektzielen erfolgen. Die regelmäßige Bewertung hilft, auf neue Bedrohungen schnell zu reagieren und die Teststrategie entsprechend
anzupassen.
Für ein effizientes Testmanagement ist die klare Definition von Testeingangs- und Testausgangskriterien entscheidend. Diese Kriterien dienen als „Quality Gates“ und stellen sicher, dass der
Testprozess systematisch und nachvollziehbar abläuft. Hier eine detaillierte Beschreibung dieser Kriterien sowie der Kriterien für Testabbruch und Wiederaufnahme.
Testeingangskriterien sind die Bedingungen, die vor Beginn einer Teststufe erfüllt sein müssen. Diese Kriterien garantieren, dass die Software oder das System bereit für die jeweilige Testphase
ist.
Beispiele für Testeingangskriterien:
- Vollständige Spezifikation
Alle erforderlichen Spezifikationen und Design-Dokumentationen müssen vollständig und von den Stakeholdern abgenommen sein.
- Bereitstellung der Testumgebung
Die Testumgebung muss vollständig eingerichtet und funktionsfähig sein.
- Verfügbarkeit von Testdaten
Alle notwendigen Testdaten müssen vorbereitet und validiert sein.
- Abschluss vorheriger Tests
Vorherige Testphasen, wie z.B. Unit-Tests, müssen erfolgreich abgeschlossen und die Ergebnisse dokumentiert sein.
- Review und Freigabe
Frühere Code-Reviews oder Analysen müssen durchgeführt und freigegeben worden sein
Testausgangskriterien definieren, wann eine Testphase abgeschlossen ist und das Testobjekt für die nächste Phase freigegeben oder abgenommen werden kann.
Beispiele für Testausgangskriterien:
- Erfüllung der Testabdeckung
Bestimmte Code- oder Funktionsabdeckungsmetriken müssen erreicht sein.
- Erfolgsquote der Testfälle
Eine festgelegte Prozentzahl der Testfälle muss erfolgreich sein.
- Fehlerbehebung
Alle kritischen und schwerwiegenden Fehler müssen behoben und erneut getestet worden sein.
- Dokumentation
Alle Testergebnisse müssen dokumentiert und von den zuständigen Teams überprüft worden sein.
- Stakeholder-Abnahme
Die Ergebnisse müssen von den Stakeholdern überprüft und abgenommen werden.
Die Kriterien für den Abbruch und die Wiederaufnahme von Tests sind entscheidend, um auf Probleme während des Testprozesses effektiv reagieren zu können.
Beispiele für Abbruchkriterien:
- Hohe Fehlerdichte
Eine unerwartet hohe Anzahl an kritischen Fehlern kann ein Hinweis darauf sein, dass das System oder die Software nicht bereit für weitere Tests ist.
- Instabile Testumgebung
Eine instabile oder nicht performante Testumgebung kann den Testprozess unmöglich machen.
- Ressourcenmangel
Fehlende personelle oder technische Ressourcen können einen temporären Stopp der Tests erforderlich machen.
Beispiele für Wiederaufnahmekriterien:
- Fehlerbehebung
Die identifizierten kritischen Fehler müssen behoben und verifiziert sein.
- Stabilisierung der Testumgebung
Die Testumgebung muss stabilisiert und erneut validiert werden.
- Ressourcenzuweisung
Zusätzliche Ressourcen müssen bereitgestellt und integriert sein.