Übungsaufgaben zur Testfallerstellung nach Whitebox-Systematik
https://bildung.social/@oerinformatik/111523080351425661
https://oer-informatik.de/whitebox-testfall-uebung-sortierung
tl/dr; (ca. 45 min Bearbeitungszeit): Zu einer gegebenen Funktion (ein Sortieralgorithmus) soll ein Kontrollflussgraph erstellt werden, die McCabe-Zahl berechnet werden (beides optional), die Überdeckungsmetriken für einen bestehenden Test berechnet werden, weitere Tests aus Whitebox-Sicht ergänzt werden und alles mit einem Code-Coverage-Tool implementiert werden. (Zuletzt geändert am 06.12.2023)
Die Aufgaben beziehen sich auf die Inhalte der folgenden Blogposts:
Aufgabe Überdeckungstests Sortieralgorithmus
Im Folgenden ist eine Beispielimplementierung für einen Sortier-Algorithmus abgebildet:
public static int[] sortiere(int[] sortieren) {
for (int i = 0; i < sortieren.length - 1; i++) {
for (int j = i + 1; j < sortieren.length; j++) {
if (sortieren[i] > sortieren[j]) {
int temp = sortieren[i];
sortieren[i] = sortieren[j];
sortieren[j] = temp;
}
}
}
return sortieren;
}
- Erstelle für diese Methode einen Kontrollflussgraphen!
Hinweis: in dieser Beispiellösung heißt die FUnktion anderes, der Kontrollflussentwurf passt aber.
- Berechne die Zyklomatische Komplexität (McCabe-Zahl)!
Die McCabe-Zahl M lässt sich am einfachsten über die Anzahl der binären Verzweigungen (b) berechnen: im Kontrollflußgraph oben haben die Knoten 2, 5 und 7 je zwei ausgehende Kanten (b=3)
M = b + 1 = 4
Hintergrund: Artikel zur McCabe-Zahl- Welche Testfälle erhälst Du aus Blackbox-Sicht für diesen Algorithmus? Erstelle für jede Blackbox-Systematik zwei Testfälle und dokumentiere die erforderlichen Informationen für die Testfälle tabellarisch!
Testfall Nr. |
Beschreibender Name der Testklasse / des Testfalls | Vor- bedingungen |
Eingabewerte (Parameter sortieren ) |
Erwartetes Resultat |
Nach- bedingungen |
Tatsächliches Resultat |
bestanden / nicht bestanden |
---|---|---|---|---|---|---|---|
1. | ÄK: Unsortiertes Array | keine | sortiere([2;3;1]) |
[1;2;3] | - | ?? | ?? |
2. | ÄK: bereits sortiertes Array | keine | sortiere([3;4;5]) |
[3;4;5] | - | ?? | ?? |
3. | GW: Leeres Array | keine | sortiere([]) |
[] | - | ?? | ?? |
4. | GW: Ungültige Werte | keine | sortiere(NULL) |
Exception | - | ?? | ?? |
- Es liegt nur der folgende Testfall vor:
Berechne den Anweisungsüberdeckungsgrad und den Zweigüberdeckungsgrad! Gibt die Werte in der Form xx von yy
an (oder als nicht gekürzter Bruch), und nicht als Prozentzahl!
Anhand des Kontrollflussgraphen - am besten selbst nach zeichnen, alle durchlaufenen Anweisungen und Kanten kennzeichnen:
Anweisungsüberdeckung: C_0=\frac{9}{9}=100\%
Über Zweige: Zweig 7-6 wird nicht durchlaufen,
Zweigüberdeckung: C_1=\frac{5}{6}=100% Über Kanten: Kante 7-6 wird nicht durchlaufen,
Kantenüberdeckung: C_1=\frac{10}{11} =100%
- Übernimm die Methode in eine IDE und erstelle die entworfenen Testfälle. Überprüfe Deine Ergebnisse mit JaCoCo.
Weitere Übungsaufgaben
Links zu weiteren Übungsaufgaben finden sich über das Menü oder am Ende des Artikels zu Whitebox-Tests/Code-Coverage
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 zur Testfallerstellung nach Whitebox-Systematik” von Hannes Stein, Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/whitebox-testfall-uebung-sortierung veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/qs/code-coverage. Stand: 06.12.2023.
[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]