\documentclass{bschlangaul-aufgabe} \bLadePakete{java} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 4}, Thematik = {Qualitätssicherung, Testen bei Bubblesort}, Referenz = 46116-2017-H.T1-TA1-A4, RelativerPfad = Examen/46116/2017/09/Thema-1/Teilaufgabe-1/Aufgabe-4.tex, ZitatSchluessel = examen:46116:2017:09, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Bubblesort, Black-Box-Testing, Anforderungsüberdeckung, Äquivalenzklassenzerlegung, Grenzwertanalyse, Kontrollflussgraph, C2a Vollständige Pfadüberdeckung (Full Path Coverage)}, EinzelpruefungsNr = 46116, Jahr = 2017, Monat = 09, ThemaNr = 1, TeilaufgabeNr = 1, AufgabeNr = 4, } Ein\footcite{examen:46116:2017:09} gängiger Ansatz zur Messung der Qualität von Software ist das automatisierte Testen von Programmen. Im Folgenden werden praktische Testmethoden anhand des nachstehend angegebenen Sortieralgorithmus diskutiert. \bPseudoUeberschrift{Algorithmus 1 Bubble Sort\index{Bubblesort}} \bJavaExamen{46116}{2017}{09}{BubbleSort} \begin{enumerate} %% % a) %% \item Nennen Sie eine Art des Black-Box-Testens\index{Black-Box-Testing} und beschreiben Sie deren Durchführung anhand des vorgegebenen Algorithmus. \begin{bAntwort} Beim Black-Box-Testen sind die Testfälle von Daten getrieben (Data-Driven) und beziehen sich auf die Anforderungen und das spezifizierte Verhalten.) $\Rightarrow$ Aufruf der Methoden mit verschiedenen Eingangsparametern und Vergleich der erhaltenen Ergebnisse mit den erwarteten Ergebnissen. Das Ziel ist dabei eine möglichst hohe Anforderungsüberdeckung\index{Anforderungsüberdeckung}, wobei man eine minimale Anzahl von Testfällen durch Äquivalenzklassenzerlegung\index{Äquivalenzklassenzerlegung} (1) und Grenzwertanalyse\index{Grenzwertanalyse} (2) erhält. \begin{description} \item[zu (1):] Man identifiziert Bereiche von Eingabewerten, die jeweils diesselben Ergebnisse liefern. Dies sind die sog. Äquivalenzklassen. Aus diesen wählt man nun je einen Repräsentanten und nutzen diesen für den Testfall. \item[zu (2):] Bei der Grenzwertanalyse identifiziert man die Grenzbereiche der Eingabedaten und wählt Daten aus dem nahen Umfeld dieser für seine Testfälle. \end{description} Angewendet auf den gegebenen Bubblesort-Algorithmus würde die Grenzwertanalyse bedeuten, dass man ein bereits aufsteigend sortiertes Array und ein absteigend sortiertes Array übergibt. \end{bAntwort} %% % b) %% \item Zeichnen Sie ein mit Zeilennummem beschriftetes Kontrollflussdiagramm\index{Kontrollflussgraph} für den oben angegebenen Sortieralgorithmus. \begin{bAntwort} Zur Erinnerung: Eine im Code enthaltene Wiederholung mit for muss wie folgt im Kontrollflussgraphen „zerlegt“ werden: \end{bAntwort} %% % c) %% \item Erklären Sie, ob eine vollständige Pfadüberdeckung\index{C2a Vollständige Pfadüberdeckung (Full Path Coverage)} für die gegebene Funktion möglich und sinnvoll ist. \begin{bAntwort} Eine vollständige Pfadüberdeckung ($C_1$-Test) kann nicht erreicht werden, da die Bedingung der inneren Wiederholung immer wahr ist, wenn die Bedingung der äußeren Wiederholung wahr ist. D. h., der Pfad S-1-1-2-2-1“ kann nie gegangen werden. Dies wäre aber auch nicht sinnvoll, weil jeder Eintrag mit jedem anderen verglichen werden soll und im Fall true $\rightarrow$ false ein Durchgang ausgelassen. \end{bAntwort} \end{enumerate} \end{document}