Übungsaufgaben zu Teststrategie und Qualitätssicherung

https://bildung.social/@oerinformatik/

https://oer-informatik.de/teststrategie-uebungsaufgaben

Qualitätssicherung, Teststrategie, Blackbox-Test, Whitebox-Test, Review, V-Modell, Regressionstest, Testkonzept, Testdaten, Übungsaufgaben, Prüfungsvorbereitung

tl/dr; (Bearbeitungszeit insgesamt 85 min, mehrere Aufgaben): Drei Übungsaufgaben zu Maßnahmen der Qualitätssicherung, Reviews und statischer Codeanalyse, Blackbox- und Whitebox-Tests, Teststufen im V-Modell, Regressionstests, Testkonzept und Testdaten, User Acceptance Test sowie Syntax-, Semantik- und Laufzeitfehlern. Dazu bewertest Du Vorschläge aus dem Projektteam und machst Gegenvorschläge. Alle Lösungen sind ausgeblendet und mit Punkteverteilung versehen [AI-Assisted]. (Zuletzt geändert am 28.10.2026)

Diese Übungsaufgaben gehören zum Artikel Teststrategie und Qualitätssicherung. Wie Du Blackbox-Testfälle systematisch ableitest, zeigt der Artikel Blackbox-Testfälle erstellen; Überdeckungsmaße findest Du im Artikel Whitebox-Tests und Code-Coverage.

Wortwolke mit den Begriffen der Übungsaufgaben zu Teststrategie und Qualitätssicherung (mit KI erstellt)

Hinweise zur Bearbeitung: Als FIA, FISY, FIDP, IKS oder IKD musst Du zur Teil-2-Prüfung Aufgaben auf Kernkompetenz-Ebene lösen können, das sind Aufgabe 2.1, Aufgabe 2.2 und Aufgabe 2.3. Achte auf den Operator: Nennen verlangt Stichworte, beschreiben einen zusammenhängenden Satz zu Merkmal und Wirkung, erläutern zusätzlich Gründe oder Beispiele, bewerten ein eigenes, fachlich begründetes Urteil über Stärken und Schwächen. Schreib Deine Lösung zuerst vollständig auf, bevor Du die Beispiellösung aufklappst. Die Beispiellösungen nennen meist mehr Möglichkeiten, als für die volle Punktzahl nötig sind. Heute ist in allen Szenarien der 19.10.2026.

Du möchtest eigene Aufgaben zum Üben von einem KI-Sprachmodell generieren lassen?

Kopiere den Text in ein KI-Sprachmodell Deiner Wahl und passe Kompetenzstufe, Anzahl, Bearbeitungszeit und Szenario bei Bedarf an. Wie die Aufgaben aufgebaut sind, beschreibt der Artikel Wie sind die Aufgaben aufgebaut?. Prüfe die Ergebnisse mit dem Lehrartikel: KI-Sprachmodelle machen Fehler.

Erstelle neue Übungsaufgaben zum Thema „Teststrategie und
Qualitätssicherung“.

Bauplan: Halte Dich an Aufbau, Kompetenzstufen, Operatoren,
Anforderungsbereiche, Punkte und Zeitschätzung, die im Artikel
https://oer-informatik.de/aufgaben-aufbau beschrieben sind.

Fachliche Grundlage:
- https://oer-informatik.de/teststrategie
- https://oer-informatik.de/blackboxtests
- https://oer-informatik.de/codecoverage
- Stilbeispiel: https://oer-informatik.de/teststrategie-uebungsaufgaben

Die Aufgaben sollen Inhalte zu diesen Schlagwörtern abdecken:
- Qualitätssicherung
- Teststrategie
- Blackbox-Test
- Whitebox-Test
- Review
- V-Modell
- Regressionstest
- Testkonzept
- Testdaten

Kompetenzstufe: Kernkompetenz (alternativ: Basiskompetenz, Profilkompetenz, Expertise)
Anzahl: 1 Aufgabe mit Teilaufgaben
Bearbeitungszeit in Minuten ca.: <5 bis 30 min>
Szenario: eines der Szenarien aus dem Bauplan

Vorgehen:
1. Lies zuerst die verlinkten Artikel. Kannst Du keine Webseiten
   abrufen, sag mir das, statt zu raten.
2. Steht bei einer Angabe noch ein Platzhalter in <…>, frag mich
   zuerst danach. Richte Punkte und Zahl der Teilaufgaben nach der
   Bearbeitungszeit (ca. 0,9 min je Punkt).
3. Gib je Aufgabe Titel mit Kompetenzstufe, Ausgangssituation und
   Teilaufgaben mit Operator und Punktzahl aus, dazu die geschätzte
   Bearbeitungszeit.
4. Gib die Beispiellösungen mit Punkteverteilung erst aus, wenn ich
   danach frage.

Aufgabe 2.1: Qualitätssicherung für das neue Backend einer Freizeit-App (Kernkompetenz)

(ca. 40 min Bearbeitungszeit)

Du bist Auszubildende*r bei der Let’s Meet GmbH in Bielefeld. Die App „Let’s Meet“ bringt Menschen ab 16 Jahren für gemeinsame Freizeitaktivitäten zusammen; jede Aktivität hat ein Mindestalter von 16 oder 18 Jahren. Nach der Trennung vom früheren IT-Dienstleister baut das interne Team (neun Entwickelnde) Datenbank und Backend neu auf: Spring Boot, MariaDB und eine REST-API für die Android-, iOS- und Web-App.

Im Altsystem war nach einem Update, mit dem Wartelisten eingeführt wurden, ein schwerer Fehler aufgetreten: Einige 17-Jährige bekamen Aktivitäten ab 18 Jahren vorgeschlagen, darunter ein Kochabend mit Weinbegleitung. Geschäftsführerin Clara Neumann stellt klar: „So etwas darf uns nie wieder passieren.“ Entwicklungsleiter Yusuf Demir bittet Dich und Deinen Mit-Azubi Jonas Weber, die Qualitätssicherung für den Neuaufbau vorzubereiten.

a) Beschreibe drei konstruktive Maßnahmen der Qualitätssicherung, die das Team beim Neuaufbau des Backends einsetzen kann. (6 Punkte)

Je Maßnahme 2 Punkte (1 Punkt Maßnahme, 1 Punkt Beschreibung der Wirkung). Konstruktive Maßnahmen vermeiden Fehler; analytische Maßnahmen (Tests, Reviews) zählen hier nicht. Zum Beispiel:

  • Prüfbare Anforderungen: Die Altersregeln werden als User Stories mit eindeutigen Akzeptanzkriterien festgehalten („Personen unter 18 sehen keine Aktivität mit Mindestalter 18“). So wissen Entwicklung und Test genau, was gilt.

  • Festgelegtes Vorgehensmodell: Das Team arbeitet z. B. nach Scrum mit einer Definition of Done (Code reviewt, Tests grün, Dokumentation aktualisiert). Qualitätsprüfungen sind damit fester Teil jedes Sprints und werden nicht „am Ende“ vergessen.

  • Programmier- und Dokumentationsrichtlinien: Einheitliche Benennung, Formatierung und Kommentierung (z. B. Javadoc für jede öffentliche Methode) machen den Code lesbar; Fehler fallen leichter auf und neue Teammitglieder finden sich schneller ein.

  • Bewährte Werkzeuge: Versionsverwaltung mit Merge-Requests, eine CI/CD-Pipeline, die bei jeder Änderung baut und prüft, sowie etablierte Bibliotheken (z. B. Spring Security) verhindern ganze Fehlerklassen.

  • Zentrale Umsetzung fachlicher Regeln / Architektur: Die Altersprüfung wird an genau einer Stelle (z. B. einer Methode istAltersgerecht() in der Fachlogik) umgesetzt und überall wiederverwendet, statt sie in jeder Abfrage neu zu programmieren.

  • Qualifizierung: Schulung der Entwickelnden in Testmethoden (z. B. Zertifikat „Certified Tester“) und in Spring Boot.

  • Privacy by Design: Datenschutzvorgaben (Schutzvoreinstellungen für Minderjährige) werden mit der Datenschutzbeauftragten von Anfang an in den Entwurf aufgenommen.

b) Ordne die folgenden Maßnahmen jeweils einer Art der Qualitätssicherung zu: konstruktiv, analytisch-statisch oder analytisch-dynamisch. Übertrage dazu die Tabelle und kreuze an. (3 Punkte)

Zuordnung von Maßnahmen der Qualitätssicherung
Nr. Maßnahme konstruktiv analytisch-statisch analytisch-dynamisch
1 Anh Nguyen und Yusuf Demir lesen jede Änderung im Merge-Request, bevor sie übernommen wird.
2 Das Team legt eine verbindliche Java-Programmierrichtlinie fest.
3 Vor dem Start simuliert ein Werkzeug 5.000 gleichzeitige Zugriffe auf die REST-API.
4 Ein Analysewerkzeug untersucht bei jedem Commit den Quelltext auf Fehlermuster.
5 Jonas Weber besucht eine Schulung zum Thema Softwaretest.
6 Die Methode istAltersgerecht() wird mit 16-, 17- und 18-Jährigen aufgerufen.

Je richtiger Zeile 0,5 Punkte.

Lösung zur Zuordnung
Nr. Maßnahme (Kurzform) Art Begründung
1 Code-Review im Merge-Request analytisch-statisch Code wird gelesen, nicht ausgeführt.
2 Programmierrichtlinie konstruktiv soll Fehler und unleserlichen Code vermeiden
3 Lasttest der REST-API analytisch-dynamisch System wird ausgeführt (nicht-funktionaler Test).
4 statische Codeanalyse analytisch-statisch automatische Prüfung des Quelltextes ohne Ausführung
5 Schulung konstruktiv Qualifizierung beugt Fehlern vor.
6 Unit-Test istAltersgerecht() analytisch-dynamisch Methode wird mit Testdaten ausgeführt.

c) UX-Designerin Anh Nguyen schlägt vor, die User Stories zur Altersprüfung zusammen mit der Datenschutzbeauftragten Dr. Marta Kowalczyk in einem Review durchzugehen, bevor programmiert wird.

ca) Erläutere zwei Vorteile eines solchen Reviews gegenüber einem späteren Test. (4 Punkte)

Je Vorteil 2 Punkte (Vorteil 1 Punkt, Erläuterung 1 Punkt), z. B.:

  • Frühe und günstige Fehlerbeseitigung: Ein Review braucht keinen lauffähigen Code. Fehler in den Anforderungen (z. B. vergessene Regel „Chat für Minderjährige nur mit Teilnehmenden gemeinsamer Aktivitäten“) werden gefunden, bevor sie programmiert und getestet sind; die Korrektur kostet nur eine Textänderung statt Umbau, Test und neues Release.

  • Fehlerarten, die ein Test nicht findet: Ein Test prüft gegen die Anforderungen – sind diese selbst widersprüchlich, unvollständig oder rechtlich falsch, „besteht“ der Test trotzdem. Die Fachfrau für Datenschutz erkennt solche Lücken direkt.

  • Gemeinsames Verständnis und Wissenstransfer: Entwicklung, UX und Datenschutz verstehen die Regeln gleich; spätere Missverständnisse und Diskussionen entfallen.

  • Ursache statt Symptom: Ein Review zeigt direkt die fehlerhafte Stelle im Dokument, ein fehlgeschlagener Test nur die Wirkung.

cb) Für die Schnittstelle zur Altersverifizierung schlägt Yusuf Demir eine Inspektion vor, für einen neuen Hilfsdienst genügt ihm ein Walkthrough. Beschreibe den Unterschied zwischen diesen beiden Reviewarten. (4 Punkte)

Je Reviewart 2 Punkte:

  • Walkthrough: Die Autorin bzw. der Autor führt eine kleine Gruppe durch das Arbeitsergebnis (z. B. Schritt für Schritt durch den Code) und erklärt es; die Teilnehmenden stellen Fragen und geben Hinweise. Der Ablauf ist wenig formal, Ziel sind vor allem Verständnis und Wissensaustausch.

  • Inspektion: Die formalste Reviewart mit festem Ablauf (Planung, individuelle Vorbereitung mit Checklisten, Sitzung, Nacharbeit, Nachprüfung) und festen Rollen (Moderation, Gutachtende, Protokoll; die Autorin moderiert nicht). Gefundene Fehler werden protokolliert und ihre Behebung kontrolliert; oft werden Kennzahlen erhoben. Ziel ist, möglichst viele Fehler zu finden – geeignet für kritische Teile wie die Altersverifizierung.

d) Kurz vor dem ersten Release schlägt Jonas Weber vor, den geplanten Systemtest zu streichen: „Erstens kennt Clara Neumann die Altersregeln am besten – wenn sie vor dem Release eine Stunde lang die App durchklickt, merkt sie sofort, ob etwas falsch ist. Zweitens prüft ein Systemtest durch uns ohnehin dasselbe wie ihre Abnahme, das wäre doppelte Arbeit.“

da) Bewerte die beiden Argumente von Jonas Weber jeweils: Was daran trifft zu, und wo liegt der fachliche Denkfehler? (4 Punkte)

Je Argument 2 Punkte (1 Punkt für das, was zutrifft, 1 Punkt für den Denkfehler):

  • Argument 1 (Fachwissen der Geschäftsführerin): Richtig ist, dass Clara Neumann die fachlichen Regeln und die Erwartungen der Nutzenden gut kennt; ihre Abnahme klärt, ob die App für ihren Zweck taugt (Validierung). Der Denkfehler: Eine Stunde freies Durchklicken ist kein systematischer Test. Sie sieht nur die Fälle, die ihr gerade einfallen, meist mit ihrem eigenen, volljährigen Konto. Grenzfälle wie ein Konto, das morgen 18 wird, eine Aktivität ab 18 mit voller Warteliste oder das Nachrücken von der Warteliste erreicht sie so kaum – genau in diesem Bereich lag der Fehler im Altsystem.

  • Argument 2 (doppelte Arbeit): Richtig ist, dass beide Teststufen das Gesamtsystem von außen betrachten. Der Denkfehler: Sie prüfen gegen verschiedene Grundlagen mit verschiedenen Zielen. Der Systemtest klärt durch das Team, ob alle Anforderungen des Pflichtenhefts vollständig umgesetzt sind (Verifikation), einschließlich nicht-funktionaler Anforderungen wie Last, Sicherheit und Datenschutz, die beim Durchklicken gar nicht sichtbar werden. Die Abnahme setzt einen bestandenen Systemtest voraus – sonst wird sie zur Fehlersuche.

db) Mache einen Gegenvorschlag, wie Systemtest und Abnahme vor dem Release aufeinander aufbauen, und beschreibe ein Risiko, das entsteht, wenn das Team dem Vorschlag von Jonas Weber folgt. (3 Punkte)

2 Punkte Gegenvorschlag, 1 Punkt Risiko. Zum Beispiel:

Gegenvorschlag: Das Team führt zuerst einen Systemtest auf dem Testserver durch – mit vorbereiteten Testfällen aus dem Pflichtenheft, synthetischen Konten aller Altersgruppen (16, 17 und 18 Jahre, Geburtstag am Testtag) sowie Last- und Sicherheitstests. Erst wenn keine kritischen Fehler mehr offen sind, prüft Clara Neumann zusammen mit einigen Testnutzenden in einer Vorabversion der App anhand der vereinbarten Akzeptanzkriterien, ob die App ihren Zweck erfüllt. Ihr Fachwissen fließt schon vorher ein: Sie sieht die Testfälle zum Jugendschutz durch, bevor der Systemtest startet.

Risiko (eines genügt):

  • Ein Fehler beim Jugendschutz gelangt unbemerkt in die Produktion; Minderjährige bekommen wieder Aktivitäten ab 18 angezeigt – mit Schaden für den Ruf der App, Beschwerden von Eltern, möglichem Ärger mit Aufsichtsbehörden und teuren Notfall-Korrekturen.

  • Die Abnahme wird zur Fehlersuche, das Release verzögert sich, und die Geschäftsführung verliert viel Zeit mit technischen Fehlern.

e) Yusuf Demir möchte die Teststufen für das Backend am V-Modell erklären. Übertrage die Vorlage, ergänze die Teststufen (1) bis (4) und zeichne mit Pfeilen ein, gegen welches Entwurfsdokument jede Teststufe prüft. Gib außerdem zu jeder Teststufe ein passendes Beispiel aus dem Let’s-Meet-Backend an. (8 Punkte)

Vorlage V-Modell mit vier leeren Teststufen (mit KI erstellt)

Je Teststufe 1 Punkt für die richtige Bezeichnung an der richtigen Stelle, 0,5 Punkte für den richtigen Pfeil „prüft gegen“, 0,5 Punkte für ein passendes Beispiel.

V-Modell mit den Teststufen Komponenten-, Integrations-, System- und Abnahmetest (mit KI erstellt)
Teststufen mit Beispielen
Nr. Teststufe prüft gegen Beispiel bei Let’s Meet
(1) Komponententest (Unit-Test) Komponentenentwurf istAltersgerecht() liefert für eine 17-Jährige und eine Aktivität ab 18 false, für 18-Jährige true.
(2) Integrationstest technischer Systementwurf (Architektur, Schnittstellen) Der REST-Endpunkt für Aktivitätsvorschläge liefert mit echter MariaDB-Testdatenbank keine Aktivität ab 18 an ein Konto mit Alter 17; Push-Dienst wird korrekt angesprochen.
(3) Systemtest funktionaler Systementwurf (Pflichtenheft) Komplettes System auf dem Testserver: Registrierung, Verifizierung, Anmeldung mit Warteliste, Nachrücken; dazu Lasttest und Sicherheitstest.
(4) Abnahmetest Anforderungsdefinition (Lastenheft, Akzeptanzkriterien) Clara Neumann und Testnutzende (z. B. Sabine Hoffmann mit visuellen Benachrichtigungen) prüfen die Akzeptanzkriterien in der Vorabversion der App.

f) Yusuf Demir bittet Dich, ein Testkonzept für das neue Backend zu entwerfen. Beschreibe vier Inhalte dieses Testkonzepts jeweils mit einem Bezug zu Let’s Meet. (8 Punkte)

Je Inhalt 2 Punkte (1 Punkt Inhalt mit Beschreibung, 1 Punkt passender Bezug), z. B.:

  • Testobjekte, Testziele und Teststrategie: Backend-Version 1.0 mit REST-API und Datenbank; besonders wichtig sind Schutz Minderjähriger, Datenschutz und Verfügbarkeit. Festgelegt wird, welche Teststufen und Verfahren eingesetzt werden: Unit-Tests mit mindestens 80 % Zweigüberdeckung für die Fachlogik, Blackbox-Testfälle aus den Akzeptanzkriterien für die Altersregeln, automatisierte Integrationstests der REST-API, manueller Systemtest vor jedem Release.

  • Testumgebung: eigener Testserver mit MariaDB im Docker-Container in derselben Version wie in der Produktion, Test-Apps auf aktuellen Android- und iOS-Geräten sowie im Browser, Werkzeuge (JUnit, Coverage-Werkzeug, Lasttest-Werkzeug).

  • Testdaten: synthetische Konten aller Altersgruppen (16, 17, 18, älter) und Aktivitäten mit Mindestalter 16 und 18; keine Echtdaten (siehe g).

  • Rollen und Testplan: Wer testet was wann? Entwickelnde schreiben Unit-Tests im Sprint; Jonas Weber und Du pflegen die Integrationstests; Anh Nguyen testet die Barrierefreiheit mit Testnutzenden; Clara Neumann nimmt jedes Release ab. Zeitplan passend zu den Sprints und zum Starttermin.

  • Ein- und Endekriterien: Systemtest beginnt erst, wenn alle Unit- und Integrationstests grün sind; Freigabe nur ohne offene kritische Fehler und wenn alle Testfälle zum Jugendschutz bestanden sind.

  • Fehlermanagement: Fehler werden im Ticketsystem mit Schweregrad erfasst; Fehler beim Jugendschutz gelten immer als kritisch und blockieren die Freigabe.

  • Testdokumentation und Auswertung: Vorlagen für Testfälle und Testprotokolle; Testbericht je Release an Yusuf Demir und Clara Neumann mit Kennzahlen (bestandene/fehlgeschlagene Testfälle, offene Fehler, Testabdeckung).

  • Aufwand und Kosten: Schätzung des Testaufwands (z. B. Anteil je Sprint, Kosten für Testgeräte), Aktualisierung im Projektverlauf.

g) Jonas Weber möchte die Produktivdatenbank des Altsystems auf den Testserver kopieren, „dann haben wir realistische Testdaten“. Dr. Marta Kowalczyk lehnt das ab. Erläutere ihre Entscheidung und beschreibe, wie das Team trotzdem zu aussagekräftigen Testdaten kommt. (4 Punkte)

2 Punkte Erläuterung, 2 Punkte Vorgehen.

Erläuterung: Die Datenbank enthält personenbezogene Daten (Namen, Geburtsdaten, Kontakte, Standorte, Teilnahmen), teils von Minderjährigen. Nach der DSGVO dürfen sie nur für den Zweck verarbeitet werden, für den sie erhoben wurden (Zweckbindung, Datenminimierung). Testsysteme sind meist schlechter geschützt und für mehr Personen zugänglich als die Produktion; eine Kopie erhöht das Risiko einer Datenpanne.

Vorgehen (zwei Möglichkeiten genügen):

  • Synthetische Testdaten gezielt erzeugen, die alle Äquivalenzklassen und Grenzwerte abdecken (z. B. Konto genau 16 Jahre, 17 Jahre und 364 Tage, 18 Jahre; Aktivitäten ab 16 und ab 18; volle Aktivität mit Warteliste).

  • Anonymisierte Daten: Kopie nur nach vollständiger Anonymisierung (Namen, E-Mail-Adressen, Telefonnummern ersetzen, Geburtsdaten verschieben, Standorte vergröbern), sodass kein Personenbezug mehr herstellbar ist.

  • Testdatengeneratoren oder Skripte, die realistische Mengen erzeugen (für Lasttests), und standardisierte Testdatensätze, die bei jedem Testlauf identisch geladen werden (Reproduzierbarkeit).

  • Problemfälle des Altbestands (z. B. doppelte Konten, ungültige E-Mail-Adressen) nachbilden, statt die Originale zu verwenden.

Aufgabe 2.2: Kostenbeitrag gedeckelt – und trotzdem zu hoch (Kernkompetenz)

(ca. 25 min Bearbeitungszeit)

Du arbeitest im FIA-Projektteam des Ratz und Rübe Berufskollegs in Bielefeld an der Mitfahr-App RatzFahrt, mit der Auszubildende an Berufsschultagen Fahrgemeinschaften bilden. Projektleiter Thomas Becker hat eine Regel vorgegeben: Fahrer*innen dürfen je mitfahrender Person höchstens 0,10 € je Kilometer verlangen.

Bei einer Stichprobe fällt Andrea Wolf, der Datenschutzbeauftragten und Administratorin der App, auf, dass Niklas Fischer für die 19,4 km ab Bad Salzuflen einen Kostenbeitrag von 2,50 € verlangt – erlaubt wären höchstens 1,94 €. Die App hatte den Betrag ohne Meldung gespeichert. Oksana Melnyk findet die zuständige Methode der Klasse Angebotspruefung. Ihre Spezifikation lautet:

Die Methode zulaessigerBeitragCent(entfernungKm, wunschCent) liefert den zulässigen Kostenbeitrag je mitfahrender Person in Cent. Der Höchstbetrag beträgt 10 Cent je Kilometer, kaufmännisch auf volle Cent gerundet. Liegt der Wunschbeitrag darüber, wird der Höchstbetrag zurückgegeben, sonst der Wunschbeitrag. Ist die Entfernung nicht größer als 0 oder der Wunschbeitrag negativ, wird eine IllegalArgumentException ausgelöst.

public int zulaessigerBeitragCent(double entfernungKm, int wunschCent) {
    if (entfernungKm <= 0 || wunschCent < 0) {
        throw new IllegalArgumentException("Ungültige Eingabe");
    }
    int hoechstCent = (int) Math.round(entfernungKm * 10);
    if (entfernungKm > 15) {        // Pauschale aus der Pilotphase
        hoechstCent = 250;
    }
    if (wunschCent > hoechstCent) {
        return hoechstCent;
    }
    return wunschCent;
}

Jonas Wolff hatte die Methode vor der Freigabe der aktuellen Version mit folgenden Testfällen geprüft; alle wurden bestanden:

Testfälle von Jonas Wolff
Testfall entfernungKm wunschCent erwartetes Ergebnis
T1 10,0 80 80
T2 10,0 150 100
T3 13,0 130 130
T4 0,0 50 IllegalArgumentException
T5 12,0 -1 IllegalArgumentException

a) Jonas Wolff hat seine Testfälle als Blackbox-Test erstellt, Oksana Melnyk schlägt nun zusätzlich einen Whitebox-Test vor.

aa) Beschreibe, was einen Blackbox-Test auszeichnet. (2 Punkte)

2 Punkte für zwei zutreffende Merkmale, z. B.: Der Quelltext ist den Testenden nicht bekannt bzw. wird nicht beachtet; das Testobjekt wird nur über seine Schnittstelle von außen betrachtet. Die Testfälle (Eingaben und erwartete Ergebnisse) werden aus der Spezifikation bzw. den Anforderungen abgeleitet, z. B. mit Äquivalenzklassen und Grenzwerten. Die Testfälle können schon vor der Implementierung erstellt werden; ihre Aussagekraft hängt von der Auswahl der Testdaten ab.

ab) Beschreibe, was einen Whitebox-Test auszeichnet. (2 Punkte)

2 Punkte für zwei zutreffende Merkmale, z. B.: Der Quelltext ist bekannt. Die Testfälle werden so gewählt, dass bestimmte Anweisungen, Zweige oder Pfade durchlaufen werden; der Erfolg wird als Testabdeckung (Anweisungs-, Zweig-, Pfadüberdeckung) gemessen. Durchgeführt wird er meist von den Entwickelnden, häufig als automatisierter Unit-Test. Das erwartete Ergebnis stammt weiterhin aus der Spezifikation.

b) Untersuche die Testfälle von Jonas Wolff.

ba) Erläutere, warum keiner seiner Testfälle den Fehler gefunden hat. (3 Punkte)

  • Die Methode enthält eine Sonderregel, die nicht in der Spezifikation steht (Pauschale von 250 Cent ab mehr als 15 km). Jonas hat seine Testfälle aus der Spezifikation abgeleitet und kannte den Code nicht, also wusste er von dieser Grenze nichts. (1 Punkt)

  • Alle seine gültigen Testfälle liegen bei höchstens 13 km; die Bedingung entfernungKm > 15 ist dabei nie wahr, der Zweig mit der Pauschale wird nie durchlaufen. (1 Punkt)

  • Der Fehler zeigt sich nur, wenn die Entfernung über 15 km liegt und der Wunschbeitrag über dem richtigen Höchstbetrag liegt. Die Qualität eines Blackbox-Tests hängt von der Auswahl der Testdaten ab; Entfernungen über 13 km wie die 19,4 km ab Bad Salzuflen kamen in den Testfällen gar nicht vor. (1 Punkt)

bb) Ergänze einen Testfall, der den Fehler aufdeckt. Gib Eingaben, das erwartete Ergebnis laut Spezifikation und das tatsächliche Ergebnis der Methode an. (2 Punkte)

1 Punkt für geeignete Eingaben (Entfernung über 15 km, Wunschbeitrag über 10 Cent je km), 1 Punkt für richtiges erwartetes und tatsächliches Ergebnis. Zum Beispiel:

Zusätzlicher Testfall
Testfall entfernungKm wunschCent erwartetes Ergebnis tatsächliches Ergebnis
T6 19,4 250 194 250 → Fehler
T6 (Alternative) 16,0 200 160 200 → Fehler

Ein Testfall wie 19,4 km mit 150 Cent findet den Fehler nicht (erwartet und tatsächlich 150). Über 25 km wirkt der Fehler umgekehrt: Bei 30 km und 300 Cent liefert die Methode 250 statt 300 Cent.

c) Jonas Wolff winkt ab: „Mit einem Whitebox-Test hätte ich auch nichts anderes gefunden.“ Stelle aus seinen Testfällen und Deinem Testfall aus bb eine möglichst kleine Auswahl zusammen, die vollständige Zweigüberdeckung der Methode erreicht, und widerlege damit seine Aussage. Nenne außerdem einen weiteren Vorteil, den der Blick in den Quelltext hier bringt. (3 Punkte)

2 Punkte für Auswahl und Widerlegung, 1 Punkt für einen weiteren Vorteil.

Die Methode hat drei if-Anweisungen, also sechs Zweige (jeweils wahr und falsch). Drei Testfälle genügen:

Minimale Auswahl für vollständige Zweigüberdeckung
Testfall 1. if (ungültige Eingabe) 2. if (entfernungKm > 15) 3. if (wunschCent > hoechstCent)
T4 (0,0 km; 50) wahr – –
T2 (10,0 km; 150) falsch falsch wahr
T6 (19,4 km; 250) falsch wahr falsch

Widerlegung: Mit T1 bis T5 allein wird entfernungKm > 15 nie wahr; nur fünf von sechs Zweigen (rund 83 %) werden durchlaufen, ein Coverage-Bericht markiert hoechstCent = 250; als nie ausgeführt. Das Kriterium Zweigüberdeckung hätte Jonas also gezwungen, eine Entfernung über 15 km zu testen – und dabei wäre ihm die Sonderregel aufgefallen, die in der Spezifikation fehlt. Mit seinen fünf Testfällen wäre der Whitebox-Test gar nicht abgeschlossen gewesen.

Weiterer Vorteil (einer genügt): Die fest eingetragenen Werte 15 und 250 fallen beim Lesen auf und lassen sich durch benannte Konstanten ersetzen oder ganz entfernen; schlägt ein Testfall fehl, ist sofort klar, über welchen Zweig er gelaufen ist.

d) Thomas Becker soll die neue Version vor der Freigabe in einem Abnahmetest prüfen; er programmiert selbst nicht. Begründe, warum er dafür Blackbox-Tests einsetzt, und nenne einen Nachteil von Whitebox-Tests, der in dieser Situation eine Rolle spielt. (3 Punkte)

Begründung (2 Punkte): Der Abnahmetest prüft, ob die App die Anforderungen der Auftraggebenden erfüllt (Validierung). Dafür braucht Thomas Becker nur die Anforderungen und die Oberfläche der App, keine Programmierkenntnisse; er prüft aus Sicht der Nutzenden, z. B. ob ein Angebot über 0,10 € je km abgelehnt wird. Außerdem findet er dabei fehlende Funktionen, die ein Whitebox-Test nicht findet.

Nachteil Whitebox (1 Punkt), z. B.: setzt Kenntnis und Analyse des Quelltextes voraus; findet keine fehlenden Funktionen; bei großen Programmen sehr aufwendig.

e) Oksana Melnyk entfernt die Pauschale. Für den Test vor dem nächsten Release gibt es im Team zwei Vorschläge: Oksana möchte nur den Testfall aus bb wiederholen, „der hat den Fehler ja gezeigt“. Jonas Wolff möchte alle vorhandenen automatisierten Tests der App noch einmal ausführen, auch die für die Buchung einer Mitfahrt und für die Angebotsanzeige auf den Flurmonitoren – beide verwenden das Ergebnis von zulaessigerBeitragCent().

ea) Benenne die Testart hinter jedem der beiden Vorschläge. Begründe, warum der Vorschlag von Jonas Wolff auch dann nötig ist, wenn Oksanas Testfall nach der Korrektur bestanden wird, und beziehe Dich dabei auf eine Stelle der App, die die geänderte Methode nutzt. (5 Punkte)

Je richtig benannter Testart 1 Punkt, 3 Punkte für die Begründung mit Bezug:

  • Oksanas Vorschlag ist ein Fehlernachtest (Bestätigungstest): Der Testfall, an dem der Fehler sichtbar wurde (19,4 km, 250 Cent), läuft erneut und liefert jetzt 194. Damit ist belegt, dass genau dieser eine Fehler beseitigt ist – mehr nicht.

  • Der Vorschlag von Jonas Wolff ist ein Regressionstest: Tests, die vor der Änderung schon bestanden wurden, laufen noch einmal. Gesucht werden ungewollte Seiteneffekte der Änderung an Stellen, die selbst gar nicht angefasst wurden.

  • Begründung: Auch eine Korrektur ist eine Änderung am Code und kann neue Fehler einschleppen oder bisher verdeckte sichtbar machen. Das zeigt sich oft nicht in der geänderten Methode, sondern dort, wo ihr Ergebnis weiterverarbeitet wird. Beispiel: Hat jemand in der Buchung oder in der Monitoranzeige die 2,50 € aus der Pilotphase als feste Obergrenze nachgebaut, passt diese Stelle nach der Korrektur nicht mehr zur Methode – Mitfahrende sähen auf dem Flurmonitor einen anderen Betrag als bei der Buchung. Das entdeckt nur ein Test der Buchung bzw. Anzeige, nicht der wiederholte Testfall aus bb. Da die Tests bereits automatisiert vorliegen, kostet die Wiederholung kaum Zeit.

eb) Beschreibe, wie das Team Regressionstests bei jedem Release mit vertretbarem Aufwand durchführen kann. (4 Punkte)

Je beschriebener Maßnahme 2 Punkte, z. B.:

  • Automatisieren: Testfälle als Unit- und Integrationstests (z. B. JUnit) schreiben, die die CI-Pipeline des Repositorys bei jedem Merge-Request automatisch ausführt; schlägt ein Test fehl, wird die Änderung nicht übernommen. Der Aufwand je Durchlauf ist danach fast null.

  • Gefundene Fehler als Test festhalten: Der neue Testfall T6 bleibt dauerhaft in der Testsammlung, damit die Pauschale nicht unbemerkt zurückkehrt.

  • Risikobasiert auswählen: Bei jeder Änderung die Tests der betroffenen und der geschäftskritischen Funktionen (Kostenbeitrag, Einwilligung Minderjähriger, Buchung) ausführen, die vollständige Sammlung nächtlich bzw. vor jedem Release.

  • Manuelle Tests begrenzen: Für die Oberfläche eine kurze Checkliste der wichtigsten Abläufe (anmelden, Angebot einstellen, Mitfahrt anfragen) und diese schrittweise automatisieren.

f) Nenne drei Maßnahmen der Qualitätssicherung, mit denen ein Fehler wie die vergessene Pauschale künftig früher auffällt. (3 Punkte)

Je Maßnahme 1 Punkt, z. B.:

  • Code-Review jeder Änderung im Merge-Request (eine zweite Person hätte die Pauschale gegen die Spezifikation geprüft)

  • Whitebox-Test mit vorgegebener Mindestabdeckung (z. B. 100 % Zweigüberdeckung für die Preisregeln) und Coverage-Bericht in der Pipeline

  • Grenzwertanalyse bei den Blackbox-Testfällen über den gesamten Wertebereich (Entfernungen bis 20 km und mehr)

  • statische Codeanalyse (z. B. Hinweis auf „magische Zahlen“ wie 250 und 15)

  • Programmierrichtlinie: keine fest eingetragenen Sonderregeln, Werte als benannte Konstanten bzw. Konfiguration

  • Testkonzept mit Endekriterium, verbindlicher Definition of Done

  • Abnahmetest mit realistischen Fahrten aus dem Einzugsgebiet

Aufgabe 2.3: Den Pilotbetrieb des Retourenportals vorbereiten (Kernkompetenz)

(ca. 20 min Bearbeitungszeit)

Du bist Auszubildende*r im Entwicklungsteam der CSB-Rad GmbH in Bielefeld. Im Projekt „Retoure digital“ sollen Kund*innen Rücksendungen und Reklamationen künftig über ein Retourenportal im Kundenkonto anmelden. Ein gemietetes Retourenmodul ist an Shop-Backend, Lagersystem und Buchhaltung angebunden; der Pilotbetrieb startet im März 2027. Vorher sollen die Beschäftigten aus Kundenservice, Lager, Werkstatt und Buchhaltung das Portal in einem User Acceptance Test (UAT) erproben. Projektleiter Cem Sarıkaya bittet Dich, den UAT vorzubereiten. Die Skizze zeigt die beteiligten Systeme und Gruppen.

Skizze „Retoure digital“: Kund*innen melden Retouren im Retourenportal an; das gemietete Retourenmodul ist an Shop-Backend, Lagersystem und Buchhaltung angebunden; Kundenservice, Lager, Werkstatt und Buchhaltung erproben es im UAT (mit KI erstellt)

a) Teamleiterin Jelena Marković aus dem Kundenservice fragt, was ein UAT ist. Erläutere ihr, was unter einem User Acceptance Test zu verstehen ist und wodurch er sich vom Systemtest unterscheidet. (4 Punkte)

  • Im User Acceptance Test (Benutzerakzeptanztest) prüfen künftige Nutzende – hier die Beschäftigten aus Kundenservice, Lager, Werkstatt und Buchhaltung – die fertige Anwendung unter möglichst realen Bedingungen. Sie prüfen, ob sie ihre Arbeit damit erledigen können, ob das Portal verständlich und bedienbar ist und ob die vereinbarten Akzeptanzkriterien erfüllt sind (2 Punkte).

  • Der Systemtest wird dagegen von einem Test- bzw. Entwicklungsteam durchgeführt und prüft, ob das System die Anforderungen des Pflichtenhefts erfüllt („Haben wir das Produkt richtig gebaut?“). Der UAT fragt, ob es das richtige Produkt für den Zweck der Nutzenden ist (Validierung), und ist oft die Grundlage für die Abnahme (2 Punkte).

b) Sophie Bertram aus der Geschäftsführung möchte den UAT schon nächste Woche starten, obwohl das Entwicklungsteam noch an der Anbindung der Werkstatt-Tablets arbeitet und der Systemtest erst zur Hälfte abgeschlossen ist. Erläutere zwei Voraussetzungen, die vor dem Start eines UAT erfüllt sein müssen. (6 Punkte)

Je Voraussetzung 3 Punkte (Nennung 1 Punkt, Erläuterung 2 Punkte), z. B.:

  • Die Anwendung ist funktional vollständig. Solange noch an der Anbindung der Werkstatt-Tablets entwickelt wird, ändert sich das Verhalten des Portals nach jeder Änderung. Ergebnisse aus dem UAT wären dann schnell veraltet, und die Werkstatt könnte ihren Teil des Ablaufs gar nicht prüfen.

  • Systemtest und Regressionstests sind abgeschlossen, schwere Fehler sind behoben. Der UAT soll die Eignung für die Arbeit prüfen, nicht technische Fehler suchen. Stoßen die Beschäftigten ständig auf Abstürze, sinkt die Akzeptanz, und ihre Zeit wird verschwendet. Offen sein dürfen höchstens kosmetische Mängel.

  • Eine realitätsnahe UAT-Umgebung steht bereit: Portal, MDE-Geräte im Lager, Werkstatt-Tablets und Buchhaltungsanbindung wie im späteren Betrieb, mit realistischen, aber datenschutzgerechten Testdaten (keine echten Kundendaten). Unter Laborbedingungen wären die Ergebnisse nicht aussagekräftig.

  • Akzeptanzkriterien, Testszenarien und Testpersonen sind vorbereitet: z. B. „Eine Widerrufsretoure wird vom Eintreffen bis zur Gutschrift ohne Papier bearbeitet“; die Beschäftigten sind eingewiesen, haben Zeit eingeplant und wissen, wie sie Fehler melden.

Folgerung: Der UAT sollte erst nach Abschluss von Entwicklung und Systemtest starten.

c) Für die Testfälle des UAT schreibt Dein Mit-Azubi Jonas ein kleines Python-Skript, das zu jeder Testretoure den erwarteten Erstattungsbetrag berechnet. Bei einem Widerruf werden Kaufpreis und Versandkosten erstattet, bei einer Reklamation nur der Kaufpreis. Ist ein Artikel bei der Rücksendung beschädigt, wird ein Wertersatz in Prozent des Kaufpreises abgezogen.

def erstattung(preis, versandkosten, ist_widerruf, wertersatz_prozent):
    if ist_widerruf
        betrag = preis + versandkosten
    else:
        betrag = preis
    abzug = preis * wertersatz_prozent / 100
    return betrag + abzug

ca) Das Skript enthält einen Syntaxfehler und einen Semantikfehler. Beschreibe die beiden Fehlerarten und gib an, wo sie im Skript stecken. (6 Punkte)

Je Fehlerart 3 Punkte (Beschreibung 2 Punkte, Fundstelle 1 Punkt):

  • Syntaxfehler: Der Quelltext verstößt gegen die Grammatik (Schreibregeln) der Programmiersprache; der Interpreter bzw. Compiler kann ihn nicht übersetzen, das Programm startet nicht. Im Skript fehlt in Zeile 2 der Doppelpunkt nach if ist_widerruf (richtig: if ist_widerruf:). Python meldet einen SyntaxError.

  • Semantikfehler (Logikfehler): Das Programm ist syntaktisch korrekt und läuft, liefert aber ein falsches Ergebnis, weil es nicht das Beabsichtigte tut. Im Skript wird der Wertersatz in der letzten Zeile addiert statt abgezogen (richtig: return betrag - abzug). Beispiel: Widerruf, Preis 100,00 €, Versand 5,90 €, 10 % Wertersatz → richtig 95,90 €, das Skript liefert 115,90 €. Einen solchen Fehler findet nur ein Test mit erwartetem Ergebnis oder ein Review.

Nach der Korrektur liest Jonas die Testretouren aus einer CSV-Datei ein. Dabei kommen alle Werte als Text an; bei unbeschädigten Artikeln ist das Feld für den Wertersatz leer. Der erste Aufruf lautet erstattung("49,90", "4,95", True, "").

cb) Gib an, in welcher Zeile das korrigierte Skript bei diesem Aufruf abbricht und welche Ausnahme Python meldet. Erläutere, warum Zeile 3 trotz der Textwerte noch nicht abbricht. (2 Punkte)

  • Abbruch in Zeile 6 (abzug = preis * wertersatz_prozent / 100): Python versucht, den Text "49,90" mit dem Text "" zu multiplizieren, und meldet TypeError: can't multiply sequence by non-int of type 'str' (1 Punkt).

  • Zeile 3 läuft durch, weil + für zwei Zeichenketten erlaubt ist: "49,90" + "4,95" ergibt die Zeichenkette "49,904,95". Es entsteht kein Fehler, aber ein unsinniger Wert – ein Laufzeitfehler kann also erst einige Zeilen später sichtbar werden als seine Ursache (1 Punkt).

cc) Ergänze das Skript so, dass Beträge mit Dezimalkomma und ein leerer Wertersatz richtig verarbeitet werden und ein unbrauchbarer Wert wie "ca. 50" zu einer verständlichen Meldung statt zu einem Absturz des ganzen Testlaufs führt. (4 Punkte)

Je 1 Punkt für: Umwandlung mit Dezimalkomma in float, leerer Wertersatz wird zu 0, try/except mit verständlicher Meldung, Testlauf läuft nach einer unbrauchbaren Testretoure weiter. Zum Beispiel:

def als_zahl(wert, feld, leer_ist_null=False):
    text = "" if wert is None else str(wert).strip()
    if text == "" and leer_ist_null:
        return 0.0
    try:
        return float(text.replace(",", "."))
    except ValueError:
        raise ValueError(f"{feld}: '{wert}' ist keine gültige Zahl") from None

def erstattung(preis, versandkosten, ist_widerruf, wertersatz_prozent):
    preis = als_zahl(preis, "Preis")
    versandkosten = als_zahl(versandkosten, "Versandkosten")
    wertersatz_prozent = als_zahl(wertersatz_prozent, "Wertersatz", leer_ist_null=True)
    if ist_widerruf:
        betrag = preis + versandkosten
    else:
        betrag = preis
    abzug = preis * wertersatz_prozent / 100
    return round(betrag - abzug, 2)

testretouren = [("49,90", "4,95", True, ""), ("ca. 50", "4,95", False, "")]
for retoure in testretouren:
    try:
        print(erstattung(*retoure))
    except ValueError as fehler:
        print("Testretoure übersprungen:", fehler)

Ausgabe: 54.85 für die erste Testretoure, danach Testretoure übersprungen: Preis: 'ca. 50' ist keine gültige Zahl. Ungültige Eingaben wie "ca. 50" gehören zusätzlich als eigene Testfälle in die Testsammlung.


Hinweis zur Nachnutzung als Open Educational Resource (OER)

Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Übungsaufgaben zu Teststrategie und Qualitätssicherung” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/teststrategie-uebungsaufgaben veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/qs/testen. Erstellt mit KI-Assistenz; von mir umfassend redaktionell überarbeitet, geprüft und freigegeben. Stand: 28.10.2026.

[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: