Whitebox-Übungsaufgabe “Rabatt”
https://bildung.social/@oerinformatik/111523080351425661
https://oer-informatik.de/whitebox-testfall-uebung-rabatt
Whitebox-Test, Anweisungsüberdeckung, Zweigüberdeckung, Kantenüberdeckung, Kontrollflussgraph, Testabdeckung, JaCoCo, Unit-Test, Übungsaufgaben, Prüfungsvorbereitung
tl/dr; (ca. 6 min Lese- und Bearbeitungszeit): Übungsaufgabe zur Whitebox-Testfall-Erstellung und Berechnung der Codeüberdeckung am Beispiel einer “Rabatt”-Funktion: Du bestimmst den Anweisungs- und Zweigüberdeckungsgrad eines gegebenen Unit-Tests und ergänzt Testfälle bis zur vollständigen Zweigüberdeckung [AI-Assisted]. (Zuletzt geändert am 29.10.2026)
Diese Übung gehört zu einer Reihe über Whitebox-Tests: Was steckt in der Whitebox? (Grundlagenartikel) / Leitfragen zur Whitebox-Systematik / Übung „ShippingCost“ / Übung „Rabatt“ / Übung „Sortierung“ / Übungsaufgaben zu Whitebox-Tests und Überdeckungsmaßen
Die Aufgaben beziehen sich auf die Inhalte der folgenden Blogposts:
Die Methode der Übung vergibt Rabatte nach zwei Regeln, einer für jede einzelne Position und einer für die Gesamtsumme:
Hinweise zur Bearbeitung: Von FIA wird erwartet, dass ihnen Aufgaben auf Profilkompetenz-Ebene (Aufgabe 3.1) keine Probleme bereiten. Bearbeite jede Teilaufgabe schriftlich, bevor Du die Beispiellösung aufklappst. Überdeckungsgrade gibst Du als Bruch in der Form xx von yy an (nicht gekürzt).
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 „Whitebox-Übungsaufgabe
"Rabatt"“.
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/codecoverage
- https://oer-informatik.de/zyklomatische-komplexitaet
- Stilbeispiel: https://oer-informatik.de/whitebox-testfall-uebung-rabatt
Die Aufgaben sollen Inhalte zu diesen Schlagwörtern abdecken:
- Whitebox-Test
- Anweisungsüberdeckung
- Zweigüberdeckung
- Kantenüberdeckung
- Kontrollflussgraph
- Testabdeckung
- JaCoCo
- Unit-Test
Kompetenzstufe: Profilkompetenz (alternativ: Basiskompetenz, Kernkompetenz, 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 3.1: Überdeckungstests für einen Rabattrechner (Profilkompetenz)
Gegeben ist die folgende Methode, die Rabatte errechnet in Abhängigkeit der Positionskosten (über 100 € -> 5 € Rabatt) und Gesamtkosten (über 1000 € -> 5 % Rabatt auf die rabattierte Gesamtsumme):
public static int rabattAusgeben(int[] kosten){
int rabatt = 0;
int summe = 0;
for(int position:kosten){
if (position > 100) {
rabatt += 5;
}
summe += position;
}
if (summe-rabatt > 1000){
rabatt +=(int)((summe-rabatt)*0.05);
}
return rabatt;
}a) Welchen Anweisungsüberdeckungsgrad und Zweigüberdeckungsgrad erhältst Du mit dem folgenden Testfall? Gib die Werte in der Form xx von yy (oder als nicht gekürzten Bruch) an, nicht als Prozentzahl. (4 Punkte)
@Test
public void rabattAusgeben_1000_10_Test() {
// given: Preparation
int[] kosten = { 1000, 10 };
// when: Execution
int result = App.rabattAusgeben(kosten);
// then: Verification
int expected = 55;
assertEquals(expected, result);
}Testfall im Kontrollflussgraphen: 1->2->3->4->5->6->3->4->6->3->7->8->9
Die Anweisungen 1 und 2 können zusammengefasst werden.
C_0 = durchlaufene Anweisungen / mögliche Anweisungen = 9/9 = 100 % (bei Zusammenfassung von 1+2: 8/8 = 100 %)
C_1 = durchlaufene Zweige / mögliche Zweige = 5/6 (≈ 83 %). Es fehlt der else-Zweig der Verzweigung in Knoten 7, denn die rabattierte Summe (1005) liegt über 1000.
Berechnung über Kanten statt Zweige: C_1 = durchlaufene Kanten / mögliche Kanten = 10/11 (≈ 91 %; bei Zusammenfassung von 1+2: 9/10 = 90 %). Nur die Kante 7->9 wird nicht durchlaufen.
JaCoCo meldet für diesen Testfall ebenfalls 100 % der Anweisungen (Instructions) und 5 von 6 Zweigen (Branches):
Nachvollziehen kannst Du die Werte mit dem Maven-Beispielprojekt jacoco-metrik-example; es enthält die Methode rabattAusgeben() (dort mit zusätzlichen Konsolenausgaben) und eigene Testfälle.
b) Ergänze so wenige Testfälle wie möglich, um eine 100%ige Zweigüberdeckung zu erhalten. Erwartete Ergebnisse sind nicht erforderlich, es genügen die zu testenden Parameter. Die Testfälle kannst Du nach dem Muster assertEquals(expected, result) abkürzen, für den obigen Testfall also z. B. assertEquals(??, rabattAusgeben({ 1000, 10 }));. (2 Punkte)
Es fehlt nur der else-Zweig in Knoten 7: summe-rabatt darf höchstens 1000 betragen. Dafür genügt ein einziger zusätzlicher Testfall, z. B. mit einer Position unter 100 €:
Testfall im Kontrollflussgraphen: 1->2->3->4->6->3->7->9
assertEquals(??, rabattAusgeben({ 10 })); (erwartet wird 0)
Zusammen mit dem Testfall aus a) sind damit alle 6 Zweige und alle 11 Kanten durchlaufen. Ebenso möglich ist ein leeres Array { } (Pfad 1->2->3->7->9).
Links und weitere Informationen
Was steckt in der Whitebox? Von Testgüte, Testüberdeckung und Codemetriken (Grundlagenartikel)
Weitere Übungen: Leitfragen zur Whitebox-Systematik, Übung „ShippingCost“, Übung „Sortierung“, Übungsaufgaben zu Whitebox-Tests und Überdeckungsmaßen
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: “Whitebox-Übungsaufgabe ”Rabatt”” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/whitebox-testfall-uebung-rabatt 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: 29.10.2026.
[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]
