Testverfahren sind kein Randthema der Abschlussprüfung, sondern fester Bestandteil der Qualitätssicherung. Wer die Einteilungen statisch gegen dynamisch und Black-Box gegen White-Box sicher beherrscht, die Teststufen kennt und den Testprozess samt Dokumentation erklären kann, hat den prüfungsrelevanten Kern abgedeckt. Test Driven Development kommt obendrauf: Es zeigt, wie aus einzelnen Tests eine Arbeitsweise wird, erst der Test, dann der Code.
Grundlagen für die IHK-Abschlussprüfung
Dieser Beitrag ordnet die wichtigsten Testverfahren und Testarten, erklärt den Ablauf eines Testprozesses und zeigt, wie Test Driven Development darauf aufbaut. Die Code-Beispiele sind als Pseudocode gehalten, damit sie unabhängig von der Programmiersprache verständlich bleiben.
Softwaretests prüfen, ob eine Anwendung das tut, was sie soll. Testverfahren und Testarten sind fester Bestandteil der Abschlussprüfung der IT-Berufe, besonders bei Fachinformatikern der Anwendungsentwicklung.
Die zentralen Einteilungen, die du kennen musst: statische gegen dynamische Verfahren sowie Black-Box- gegen White-Box-Tests.
Die Teststufen reichen vom Modultest (Unit-Test) über Integrations- und Systemtest bis zum Abnahmetest.
Test Driven Development (TDD) dreht die Reihenfolge um: erst der Test, dann der Code. Der Zyklus heißt Red-Green-Refactor.
TDD selbst steht nicht im Prüfungskatalog. Die zugrunde liegenden Unit-Tests und der Testprozess schon. Wer TDD versteht, hat beides parat.
Warum Softwaretests prüfungsrelevant sind
In der Abschlussprüfung für Fachinformatiker Anwendungsentwicklung taucht das Thema Qualitätssicherung gleich an mehreren Stellen auf. Geprüft werden unter anderem Testverfahren und Testarten, die Auswahl des passenden Verfahrens, das Generieren von Testdaten sowie das Auswerten und Protokollieren der Ergebnisse. Eine Übersicht über alle Prüfungsinhalte findest du im Beitrag zu den Inhalten der Abschlussprüfung Teil 2 für Fachinformatiker Anwendungsentwicklung.
Ein Test hat ein klares Ziel: Fehler finden, bevor der Kunde sie findet. Dabei gilt ein Grundsatz, der gern falsch verstanden wird. Ein Test kann die Anwesenheit von Fehlern beweisen, aber nie deren Abwesenheit. Wer alle Tests besteht, hat keine fehlerfreie Software, sondern eine Software, in der die getesteten Fälle funktionieren.
Damit klar wird, worüber man spricht, hilft eine Abgrenzung:
Verifikation: Bauen wir das Produkt richtig? Die Software erfüllt die festgelegte Spezifikation.
Validierung: Bauen wir das richtige Produkt? Die Software erfüllt den tatsächlichen Bedarf des Kunden.
Statische und dynamische Testverfahren
Die erste Einteilung trennt Verfahren danach, ob der Code ausgeführt wird oder nicht. Diese Unterscheidung wird in der Prüfung häufig abgefragt.
Statische Verfahren: Hier wird der Code nicht ausgeführt. Geprüft werden Quelltext, Konzepte oder Dokumente. Dazu zählen das sogenannte Review (bei dem ein oder mehrere Personen den Code lesen), der Schreibtischtest (das gedankliche Durchspielen eines Ablaufs auf dem Papier) und die statische Codeanalyse durch Werkzeuge wie Linter.
Dynamische Verfahren: In diesem Verfahren läuft das Programm. Man gibt Testdaten ein und vergleicht die tatsächliche mit der erwarteten Ausgabe. Unit-Tests, Integrationstests und End-to-End-Tests gehören in diese Kategorie.
Merkmal
Statisch
Dynamisch
Code wird ausgeführt
Nein
Ja
Grundlage
Quelltext, Dokumente, Konzepte
Programmlauf mit Testdaten
Beispiele
Review, Schreibtischtest, Linter
Unit-Test, Integrationstest, E2E-Test
Findet
Strukturfehler, Verstöße gegen Standards
Fehler im Laufzeitverhalten
Zeitpunkt
Schon vor lauffähigem Code möglich
Erst bei lauffähigem Code
Black-Box- und White-Box-Tests
Die zweite Einteilung trennt Verfahren danach, ob der Tester den inneren Aufbau des Codes kennt.
Beim sogenannten Black-Box-Test ist die innere Struktur unbekannt. Getestet wird nur gegen die Spezifikation: Welche Eingabe führt zu welcher Ausgabe? Der Code bleibt eine geschlossene Kiste. Typische Techniken sind die Äquivalenzklassenbildung und die Grenzwertanalyse.
Beim White-Box-Test hingegen ist der Quellcode bekannt. Die Testfälle werden so gewählt, dass möglichst viele Pfade durch den Code durchlaufen werden. Hier geht es um Überdeckung (auch genannt Coverage), zum Beispiel Anweisungs-, Zweig- oder Pfadüberdeckung.
Merkmal
Black-Box
White-Box
Sicht auf den Code
Innere Struktur unbekannt
Quellcode bekannt
Grundlage der Testfälle
Spezifikation, Anforderungen
Interner Programmablauf
Typische Technik
Äquivalenzklassen, Grenzwertanalyse
Anweisungs-, Zweig-, Pfadüberdeckung
Frage
Stimmt das Ergebnis?
Wird jeder Programmpfad geprüft?
Wer testet typisch
Fachabteilung, Tester, Kunde
Entwickler
Zwei Black-Box-Techniken solltest du benennen können:
Äquivalenzklassenbildung: Eingaben werden in Klassen mit gleichem Verhalten zusammengefasst. Statt 1.000 Werte zu testen, prüft man einen Vertreter pro Klasse. Beispiel Alterseingabe: eine Klasse für gültige Werte (0 bis 120), je eine für zu kleine und zu große Werte.
Grenzwertanalyse (Extremwerttest): Fehler treten besonders oft an den Rändern auf. Getestet werden die Werte direkt an der Grenze. Bei einer Grenze von 50 also 49, 50 und 51.
Die unterschiedlichen Teststufen
Tests lassen sich nach ihrem Umfang ordnen, vom kleinsten Baustein bis zum fertigen Gesamtsystem. In der Prüfung werden diese Stufen unter Begriffen wie Modultest, Integrationstest, Systemtest und Abnahmetest geführt.
Teststufe
Was wird geprüft
Beispiel
Modultest (Unit-Test)
Einzelne Funktion oder Klasse, isoliert
Eine Methode versandkostenBerechnen
Integrationstest
Zusammenspiel mehrerer Komponenten
Anwendung greift korrekt auf die Datenbank zu
Systemtest
Das vollständige System gegen die Anforderungen
Die komplette Bestellstrecke im Webshop
Abnahmetest
Erfüllung der Kundenanforderungen, oft durch den Kunden
Kunde prüft und nimmt die Software ab
Aus diesen Stufen ergibt sich eine Testpyramide. Sie ist eine Empfehlung zur Verteilung der Tests:
Unten, breit: viele Unit-Tests. Sie sind schnell, günstig und zeigen präzise, wo ein Fehler liegt.
Mitte: weniger Integrationstests.
Oben, schmal: wenige End-to-End-Tests. Sie sind langsam und aufwendig, prüfen dafür den realen Ablauf.
Die Logik dahinter ist wirtschaftlich. Je tiefer ein Fehler gefunden wird, desto billiger ist seine Behebung. Ein Fehler im Unit-Test kostet Minuten, derselbe Fehler beim Kunden kostet ein Vielfaches.
Der Testprozess
Ein Test ist keine spontane Aktion, sondern ein geordneter Ablauf. Genau dieser Ablauf ist prüfungsrelevant, inklusive der Dokumentation. Ein typischer Testprozess hat fünf Schritte:
Testverfahren auswählen: Passend zum Ziel entscheiden, ob statisch oder dynamisch, Black-Box oder White-Box, welche Teststufe.
Testfälle und Sollergebnisse definieren: Für jede Eingabe festlegen, welche Ausgabe korrekt ist.
Testdaten generieren und auswählen: Repräsentative Daten bestimmen, etwa über Äquivalenzklassen und Grenzwerte.
Test durchführen: Ist-Ergebnis erzeugen und mit dem Soll-Ergebnis vergleichen.
Auswerten und protokollieren: Abweichungen dokumentieren, Fehler an die Entwicklung zurückspielen.
Zur Dokumentation gehören zwei Begriffe, die in der Prüfung vorkommen können. Das Testprotokoll hält fest, welche Testfälle mit welchem Ergebnis durchlaufen wurden. Das Abnahmeprotokoll dokumentiert die formale Abnahme durch den Kunden am Ende.
Test Driven Development
Test Driven Development (TDD), auf Deutsch testgetriebene Entwicklung, dreht die übliche Reihenfolge um. Normalerweise schreibt man erst den Code und testet danach. Bei TDD steht der Test am Anfang. Erst wenn ein Test existiert und fehlschlägt, wird der Code geschrieben, der ihn besteht.
Der Ablauf folgt einem kurzen Zyklus, dem Red-Green-Refactor:
Red: Einen Test für eine noch nicht vorhandene Funktion schreiben. Er schlägt fehl, weil der Code fehlt.
Green: Den einfachsten Code schreiben, der den Test bestehen lässt. Nicht mehr.
Refactor: Den Code aufräumen und verbessern, ohne sein Verhalten zu ändern. Die Tests müssen weiter grün bleiben.
Danach beginnt der Zyklus von vorn, für die nächste kleine Anforderung.
TDD an einem Beispiel
Gefordert ist eine Funktion für die Versandkosten eines Onlineshops. Die Regel: unter 50 Euro Bestellwert kostet der Versand 4,95 Euro, ab 50 Euro ist er kostenlos.
Schritt 1, Red. Zuerst der Test, noch ohne Funktion:
test "Versand kostet 4,95 Euro bei Bestellwert unter 50 Euro":
erwarte versandkostenBerechnen(30) == 4.95
test "Versand ist kostenlos ab 50 Euro Bestellwert":
erwarte versandkostenBerechnen(50) == 0.0
Beide Tests schlagen fehl, weil versandkostenBerechnen noch nicht existiert. Der Test ist rot.
Schritt 2, Green. Jetzt der einfachste Code, der beide Tests bestehen lässt:
funktion versandkostenBerechnen(bestellwert):
wenn bestellwert < 50:
gib 4.95 zurueck
sonst:
gib 0.0 zurueck
Die Tests laufen durch. Der Test ist grün.
Schritt 3, Refactor. Die feste Zahl 50 ist eine magische Konstante. Sie bekommt einen Namen, das Verhalten bleibt gleich:
funktion versandkostenBerechnen(bestellwert):
konstante FREIGRENZE = 50
konstante VERSANDKOSTEN = 4.95
wenn bestellwert < FREIGRENZE:
gib VERSANDKOSTEN zurueck
sonst:
gib 0.0 zurueck
Hier schließt sich der Kreis zu den Testverfahren. Die Grenze bei 50 Euro ist ein klassischer Fall für die Grenzwertanalyse. Sinnvolle Testfälle sind deshalb 49,99 (kostenpflichtig), 50,00 (kostenlos) und 50,01 (kostenlos). Genau an dieser Kante entstehen die typischen Fehler, etwa wenn jemand < und <= verwechselt.
Vorteile und Grenzen von TDD
TDD ist eine Methode, kein Allheilmittel. Eine ehrliche Einordnung gehört dazu.
Vorteile
Grenzen
Hohe Testabdeckung von Anfang an
Höherer Aufwand zu Beginn
Frühe Fehlererkennung
Lernkurve, gerade am Anfang ungewohnt
Tests dokumentieren das erwartete Verhalten
Nicht jedes Problem lässt sich sinnvoll vorab testen
Refactoring wird sicherer, weil Tests absichern
Schlecht geschriebene Tests kosten später Pflegeaufwand
Code bleibt durch kleine Schritte überschaubar
Oberflächen und Prototypen profitieren weniger
Der Aufwand am Anfang zahlt sich vor allem bei Code aus, der lange gepflegt wird und sich oft ändert. Bei einem Wegwerf-Prototyp steht der Nutzen in einem anderen Verhältnis.
Wie das Thema in der Prüfung zusammenhängt
Hier lohnt eine klare Einordnung, damit du deine Zeit richtig einsetzt. Im Prüfungskatalog stehen die Testverfahren und Testarten: statisch und dynamisch, Black-Box und White-Box, die Teststufen sowie der Testprozess mit Testdaten und Protokollierung. Diese Begriffe musst du sicher erklären und anwenden können.
Test Driven Development wird im Katalog nicht ausdrücklich genannt. Trotzdem lohnt sich das Verständnis aus zwei Gründen. Erstens baut TDD direkt auf Unit-Tests auf, und die sind prüfungsrelevant. Zweitens ist TDD in der Praxis verbreitet und kann im Fachgespräch zur Projektarbeit zur Sprache kommen, wenn du in deinem Projekt testgetrieben gearbeitet hast.
Kurz gesagt: Lerne die Testverfahren und den Testprozess für die schriftliche Prüfung. Verstehe TDD als die Arbeitsweise, die Unit-Tests in den Entwicklungsalltag einbettet. Wie eine prüfungstaugliche Projektdokumentation aufgebaut sein muss, liest du im Beitrag Projektdokumentation Fachinformatiker Systemintegration.
Häufige gestellte Fragen
Was ist der Unterschied zwischen statischen und dynamischen Tests? Bei statischen Tests wird der Code nicht ausgeführt, sondern gelesen oder analysiert, etwa im Review oder Schreibtischtest. Bei dynamischen Tests läuft das Programm mit Testdaten, und das Ergebnis wird mit dem Sollwert verglichen.
Was ist der Unterschied zwischen Black-Box- und White-Box-Test? Beim Black-Box-Test ist der innere Aufbau unbekannt, getestet wird nur gegen die Spezifikation. Beim White-Box-Test ist der Quellcode bekannt, und die Testfälle zielen auf eine möglichst hohe Überdeckung der Programmpfade.
Was ist ein Modultest beziehungsweise Unit-Test? Ein Test, der einen einzelnen Baustein isoliert prüft, meist eine Funktion oder Klasse. Modultests sind schnell und zeigen genau, an welcher Stelle ein Fehler liegt.
Was bedeutet Red-Green-Refactor? Der TDD-Zyklus. Red: einen fehlschlagenden Test schreiben. Green: den einfachsten Code schreiben, der den Test besteht. Refactor: den Code verbessern, ohne sein Verhalten zu ändern, während die Tests grün bleiben.
Ist TDD prüfungsrelevant? TDD wird im Prüfungskatalog nicht ausdrücklich genannt. Die zugrunde liegenden Unit-Tests und der Testprozess sind es. TDD kann zusätzlich im Fachgespräch zur Projektarbeit relevant werden.
Was ist die Grenzwertanalyse? Eine Black-Box-Technik, bei der gezielt die Werte an den Rändern eines Bereichs getestet werden, weil dort die meisten Fehler entstehen. Bei einer Grenze von 50 testet man 49, 50 und 51.
Was gehört in ein Testprotokoll? Welche Testfälle ausgeführt wurden, mit welchen Testdaten, welches Ergebnis erwartet wurde und welches tatsächlich eintrat. Abweichungen werden dokumentiert und an die Entwicklung gemeldet.
Heides Herz schlägt für Bildung! Als Ausbilderin begleitete sie zunächst junge Menschen bei ihren ersten Schritten in der Eventbranche. Wegen ihrer Faszination für berufliche Lebenswege entschied sie sich vor 17 Jahren, bei der IT-Akademie anzufangen. Hier berät und betreut sie Kursteilnehmer und Kursteilnehmerinnen, entwickelt neue Kurskonzepte und ist irgendwie immer im Gespräch mit anderen. Getreu ihrem Motto: Lernen ist und bleibt auch ein sozialer Prozess.