Grundlagen des Testens

Kapitel 1 – ISTQB Certified Tester Foundation Level v4.0.2

Quelle: ISTQB CTFL Lehrplan v4.0.2 (GTB, 01.03.2025) Syllabus: Kap. 1 — Grundlagen des Testens Hinweis: Aufbau 1.1–1.5 · Begriffe · Fehlerterminologie · Grundsätze · Testprozess · Kompetenzen · FL-1.4.3 (K2) (Testmittel) auf Testmittel · Testmanagement (Kap. 5) · K-Stufen: K1 (erinnern) · K2 (verstehen) · K3 (anwenden)
Einordnung Die Seite bündelt das erste Hauptkapitel des Foundation-Lehrplans: was Testen leistet, wie es sich von Debugging und QS unterscheidet, wie Fehler in der CTFL-Terminologie zusammenhängen, welche Grundsätze gelten und wie der Testprozess grob aufgebaut ist. Detail zu Testmitteln (Arbeitsergebnisse) folgt auf der Testmittel-Seite; Steuerung und Planung im Überblick unter Testmanagement (Kap. 5).

1.1 Was ist Testen?

Softwaresysteme sind Teil unseres täglichen Lebens. Software, die nicht ordnungsgemäß funktioniert, kann zu vielen Problemen führen – von Geld-, Zeit- oder Ansehensverlust bis hin zu Verletzungen oder Tod in Extremfällen. Softwaretests bewerten die Qualität der Software und helfen, das Risiko einer Fehlerwirkung im Betrieb zu verringern.

Testen besteht aus einer Reihe von Aktivitäten zur Entdeckung von Fehlerzuständen und zur Bewertung der Qualität von Arbeitsergebnissen. Ein weit verbreitetes Missverständnis ist, dass Testen nur aus dem Ausführen von Tests besteht. Tatsächlich umfasst Testen viele weitere Aktivitäten und muss auf den Softwareentwicklungslebenszyklus (SDLC) abgestimmt sein.

Kontext (ohne Anspruch auf Vollständigkeit) Typische Einsatzgebiete: Webshops (Checkout, Zahlung), klinische Anwendungen, eingebettete Steuerungen. Überall können Defekte zu Ausfällen, Dateninkonsistenzen oder sicherheitsrelevanten Vorfällen führen; Testen adressiert das Risiko systematisch – unabhängig von der Branche.
Wichtige Unterscheidung: Testen beinhaltet sowohl Verifizierung (Prüfen, ob das System die spezifizierten Anforderungen erfüllt) als auch Validierung (Prüfen, ob das System die Bedürfnisse der Benutzer und Stakeholder erfüllt).

Testen kann dynamisch (Software wird ausgeführt) oder statisch (Software wird nicht ausgeführt, z.B. Reviews) sein. Testen ist nicht nur eine technische Aktivität – es muss auch richtig geplant, verwaltet, geschätzt, überwacht und gesteuert werden.

Testziele

Typische Testziele sind:

Die Testziele können je nach Kontext variieren – abhängig vom zu testenden Arbeitsergebnis, der Teststufe, Risiken, dem SDLC und geschäftlichen Faktoren.

Testen und Debugging

Testen und Debugging sind getrennte Aktivitäten. Testen kann Fehlerwirkungen auslösen oder direkt Fehlerzustände finden. Debugging hingegen umfasst:

Nach dem Debugging folgen Fehlernachtests (prüfen, ob das Problem behoben wurde) und Regressionstests (prüfen, ob die Korrekturen andere Teile des Systems beeinträchtigt haben).

1.2 Warum ist Testen notwendig?

Der Beitrag des Testens zum Erfolg

Testen ist ein kosteneffizientes Mittel zur Erkennung von Fehlerzuständen. Diese können dann beseitigt werden (durch Debugging), sodass Testen indirekt zu einer höheren Qualität der Testobjekte beiträgt.

Testen bietet:

Testen und Qualitätssicherung

Obwohl die Begriffe oft synonym verwendet werden, sind Testen und Qualitätssicherung (QS) nicht dasselbe:

Aspekt Testen Qualitätssicherung (QS)
Ausrichtung Produktorientiert, korrigierend Prozessorientiert, präventiv
Fokus Aktivitäten zur Erreichung eines angemessenen Qualitätsniveaus Implementierung und Verbesserung von Prozessen
Rolle Form der Qualitätssteuerung Annahme: guter Prozess → gutes Produkt
Verantwortung Primär Testteam Alle Projektbeteiligten

Testergebnisse werden in beiden Bereichen verwendet: beim Testen zur Behebung von Fehlerzuständen, in der QS als Rückmeldung über die Qualität der Entwicklungs- und Testprozesse.

Fehlhandlungen, Fehlerzustände, Fehlerwirkungen und Grundursachen

Menschen begehen Fehlhandlungen (Irrtümer), die zu Fehlerzuständen (Defekten) führen, was wiederum zu Fehlerwirkungen führen kann.

Fehlerkette (schematisch)
Fehlhandlung
human error / mistake
Fehlerzustand
defect / bug
Fehlerwirkung
failure

Gründe für Fehlhandlungen:

Wichtig zu verstehen: Nicht jeder Fehlerzustand führt zu einer Fehlerwirkung. Manche Fehlerzustände führen immer zu Fehlerwirkungen, andere nur unter bestimmten Umständen, und wieder andere führen nie zu einer Fehlerwirkung. Fehlerwirkungen können auch durch Umweltbedingungen verursacht werden (z.B. Strahlung).

Eine Grundursache (root cause) ist ein wesentlicher Grund für das Auftreten eines Problems. Durch Grundursachenanalyse können ähnliche Fehlerwirkungen oder Fehlerzustände in Zukunft verhindert oder reduziert werden.

1.3 Grundsätze des Testens

Im Laufe der Jahre wurden sieben Grundsätze entwickelt, die allgemeine Richtlinien für alle Tests bieten:

Hinweis zu den Grundsätzen: Es handelt sich um Leitlinien, nicht um mathematische Gesetze. Sie prägen risikobasiertes Testen, Priorisierung und die Erwartung, dass Testen Qualität sichtbar macht, aber nicht „beweist“, dass Software fehlerfrei ist.
1. Testen zeigt das Vorhandensein, nicht die Abwesenheit von Fehlerzuständen
Testen kann zeigen, dass Fehlerzustände vorhanden sind, kann aber nicht beweisen, dass keine existieren. Selbst wenn keine Fehlerzustände gefunden werden, kann Testen nicht die Korrektheit des Testobjekts beweisen.
2. Vollständiges Testen ist unmöglich
Es ist nicht möglich, alles zu testen (außer in trivialen Fällen). Stattdessen sollten Testverfahren, Priorisierung und risikobasiertes Testen angewendet werden, um den Testaufwand gezielt einzusetzen.
3. Frühes Testen spart Zeit und Geld
Fehlerzustände, die früh im Prozess beseitigt werden, verursachen keine weiteren Fehlerzustände in abgeleiteten Arbeitsergebnissen. Die Qualitätskosten werden gesenkt, da später im SDLC weniger Fehlerwirkungen auftreten. Sowohl statische als auch dynamische Tests sollten so früh wie möglich beginnen.
4. Fehlerzustände treten gehäuft auf
Eine kleine Anzahl von Komponenten enthält meist die meisten entdeckten Fehlerzustände oder ist für die meisten Fehlerwirkungen im Betrieb verantwortlich (Pareto-Prinzip). Vorausgesagte und tatsächlich beobachtete Anhäufungen sind ein wichtiger Beitrag für risikobasiertes Testen.
5. Tests nutzen sich ab
Wenn dieselben Tests viele Male wiederholt werden, werden sie bei der Erkennung neuer Fehlerzustände zunehmend ineffektiv. Bestehende Tests müssen möglicherweise modifiziert und neue Tests geschrieben werden. In einigen Fällen (z.B. automatisierte Regressionstests) kann die Wiederholung jedoch positiv sein.
6. Testen ist kontextabhängig
Es gibt keinen universell anwendbaren Ansatz für das Testen. Testen wird in verschiedenen Kontexten unterschiedlich praktiziert.
7. Trugschluss: „Keine Fehler" bedeutet ein brauchbares System
Es ist ein Irrtum zu erwarten, dass das Verifizieren von Software den Erfolg eines Systems sicherstellt. Gründliches Testen aller Anforderungen und Beheben aller Fehlerzustände könnte immer noch ein System hervorbringen, das die Bedürfnisse der Benutzer nicht erfüllt. Neben der Verifizierung sollte auch eine Validierung durchgeführt werden.

1.4 Testaktivitäten, Testmittel und Rollen des Testens

Auf einem hohen Abstraktionsniveau gibt es Gruppen von Testaktivitäten, die einen Testprozess bilden. Welche Testaktivitäten durchgeführt werden, wie sie durchgeführt werden und wann sie stattfinden, wird normalerweise im Rahmen der Testplanung entschieden.

Testaktivitäten und -aufgaben

Ein Testprozess besteht aus folgenden Hauptgruppen von Aktivitäten. Obwohl sie einer logischen Abfolge zu folgen scheinen, werden sie oft iterativ oder parallel durchgeführt:

Testplanung

Testziele definieren und eine Testvorgehensweise auswählen, mit der die Testziele innerhalb der Randbedingungen am besten erreicht werden können.

Testüberwachung und Teststeuerung

Laufende Überprüfung aller Testaktivitäten, Vergleich des Fortschritts mit dem Plan und Ergreifen von Korrekturmaßnahmen zur Erreichung der Testziele.

Testanalyse

Analyse der Testbasis, um testbare Merkmale zu identifizieren. Testbedingungen werden bestimmt und priorisiert. Beantwortet die Frage: „Was soll getestet werden?"

Testentwurf

Ausarbeitung der Testbedingungen zu Testfällen und anderen Testmitteln. Definition von Anforderungen an Testdaten, Entwurf der Testumgebung. Beantwortet die Frage: „Wie soll getestet werden?"

Testrealisierung

Erstellung oder Beschaffung der für die Testdurchführung erforderlichen Testmittel (z.B. Testdaten). Testfälle werden in Testabläufen organisiert, Testskripte erstellt, Testumgebung aufgebaut.

Testdurchführung

Ausführung der Tests gemäß Testausführungsplan (manuell oder automatisiert). Istergebnisse werden mit erwarteten Ergebnissen verglichen. Abweichungen werden analysiert und berichtet.

Testabschluss

Findet zu Projektmeilensteinen statt. Änderungsanträge für nicht behobene Fehlerzustände erstellen, Testmittel archivieren, Lessons Learned ermitteln, Testabschlussbericht erstellen.

Testprozess im Kontext

Testen wird nicht isoliert durchgeführt. Die Art und Weise, wie Testen durchgeführt wird, hängt von zahlreichen Kontextfaktoren ab:

Diese Faktoren wirken sich auf Teststrategie, verwendete Testverfahren, Grad der Testautomatisierung, geforderte Überdeckung, Detaillierungsgrad der Testmittel und Testberichterstattung aus.

Testmittel

Verweis auf separate Seite: Das Thema Testmittel wird ausführlich auf einer eigenen Seite behandelt. → Zur Seite: Testmittel

Verfolgbarkeit zwischen der Testbasis und den Testmitteln

Für eine effektive Testüberwachung und Teststeuerung ist es wichtig, eine Verfolgbarkeit (Traceability) herzustellen und zu pflegen zwischen:

Vorteile guter Verfolgbarkeit:

Rollen des Testens

Zwei Hauptrollen werden unterschieden:

Aspekt Rolle des Testmanagements Rolle des Testens
Verantwortung Gesamtverantwortung für Testprozess, Testteam und Leitung der Testaktivitäten Gesamtverantwortung für den operativen Aspekt des Testens
Fokus Testplanung, Testüberwachung, Teststeuerung, Testabschluss Testanalyse, Testentwurf, Testrealisierung, Testdurchführung
Ausführung Kann von Teamleiter, Testmanager, Entwicklungsleiter ausgeübt werden Tester, die Tests entwerfen und durchführen

Diese Rollen können von verschiedenen Personen zu verschiedenen Zeiten übernommen werden. Es ist auch möglich, dass eine Person beide Rollen gleichzeitig übernimmt.

1.5 Wesentliche Kompetenzen und bewährte Praktiken beim Testen

Kompetenz ist die Fähigkeit, etwas gut zu machen, die sich aus Wissen, Übung und Eignung ergibt. Gute Tester sollten effektive Teamplayer sein und in der Lage sein, Tests mit verschiedenen Graden an Unabhängigkeit durchzuführen.

Allgemeine Kompetenzen, die für das Testen erforderlich sind

Die folgenden Kompetenzen sind zwar allgemeiner Art, aber für Tester besonders wichtig:

Kommunikation ist entscheidend: Tester sind oft die Überbringer schlechter Nachrichten. Kommunikation von Testergebnissen kann als Kritik aufgefasst werden. Bestätigungsfehler (Bias) können dazu führen, dass Informationen schwer zu akzeptieren sind. Informationen über Fehlerzustände sollten daher konstruktiv kommuniziert werden.

Whole-Team-Ansatz (Whole Team Approach)

Der Whole-Team-Ansatz – eine aus Extreme Programming stammende Praxis – baut auf der Teamfähigkeit auf:

Tester arbeiten eng mit anderen Teammitgliedern zusammen:

Nicht immer angemessen: Je nach Kontext ist der Whole-Team-Ansatz nicht immer geeignet. In sicherheitskritischen Bereichen kann ein hohes Maß an Unabhängigkeit des Testens erforderlich sein.

Unabhängigkeit des Testens

Ein gewisser Grad an Unabhängigkeit macht den Tester effektiver bei der Fehlerfindung, da sich die Voreingenommenheit zwischen Autor und Tester unterscheidet. Unabhängigkeit ist jedoch kein Ersatz für Nähe zum System – Entwickler können viele Fehlerzustände in ihrem eigenen Code effizient finden.

Grade der Unabhängigkeit (aufsteigend):

  1. Autor testet eigenes Arbeitsergebnis (keine Unabhängigkeit)
  2. Kollegen aus demselben Team testen (etwas Unabhängigkeit)
  3. Tester außerhalb des Teams, aber innerhalb der Organisation (hohe Unabhängigkeit)
  4. Tester außerhalb der Organisation (sehr hohe Unabhängigkeit)

Bei den meisten Projekten ist es am besten, das Testen mit mehreren Unabhängigkeitsstufen durchzuführen.

Vorteile Nachteile
  • Unabhängige Tester erkennen andere Arten von Fehlerwirkungen aufgrund unterschiedlicher Hintergründe und Perspektiven
  • Können Annahmen der Stakeholder überprüfen, in Frage stellen oder widerlegen
  • Können vom Entwicklungsteam isoliert sein
  • Mangelnde Zusammenarbeit, Kommunikationsprobleme möglich
  • Entwickler verlieren möglicherweise Verantwortungsgefühl für Qualität
  • Können als Engpass oder für Verzögerungen verantwortlich gemacht werden