###### tags: `Praktikum` # 6. White-Box Tests - Bedingungsüberdeckung ## Aufgabe 1.1: Implementierung der Auswahl für Bedingungsüberdeckungen Abgabeform: Abnahme im Praktikum und schriftliche Abgabe des endgültigen Codes (nach Tests) Implementieren Sie die Auswahl der Bedingungsüberdeckung entsprechen der folgenden Usage Szenario: Der Technical Test Analyst (User) liefert die Bedingung für die die Bedingungsüberdeckung bestimmt werden soll als Wahrheitswerttabelle in einer Datei. Für die Gesamtbedingung sollen beliebig viele atomare Teilbedingungen möglich sein. Das System zur Testfallselektion liest diese Wahrheitswerttabelle und eine oder mehrere Bedingungsüberdeckungskriterien ein und konvertiert sie in die interne Darstellung. Danach wird die Tabelle bezüglich des oder der gewählten Überdeckungskriterien analysiert und die Tabelle mit den ausgewählten Fällen wird im gleichen Format wie dem Eingabeformat an den Nutzer in einer Datei zurückgegeben. Für die Eingabe der Wahrheitswerttabelle sollen verschiedene Formate möglich sein, für die Pilotimplementierung soll Markdown als Eingabeformat realisiert werden. Optional ist CSV als mögliches weiteres Format. Als mögliche Überdeckungskriterien sollen mindestens MMBÜ und MC/DC implementiert werden, optional ist die Einfache Bedingungsüberdeckung. Daraus ergeben sich folgende User Stories, die mindestens implementiert werden müssen: | ID | Story | | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | IO-01 | Als User möchte ich aus Dateien Wahrheitswerttabellen in verschiedenen Formaten einlesen können. (Markdown, CSV optional) | | IO-02 | Die Anwendung muss mir als User die Auswahl der Testfälle als Wahrheitswerttabelle im gleichen Format wie das Input-Format liefern können. (File Reader / Writer) | | IO-03 | Als User möchte ich mehrere beliebige Dateien automatisch hintereinander verarbeiten lassen können. (Bulkprocessing) | | IO-04 | Als User möchte ich darauf hingewiesen werden, dass eine Input Datei fehlerhaft ist. | | PR-01 | Als User möchte ich zwischen verschiedenen Coverage-Maßen wählen können. (mindestens MMBÜ und MCDC, EBÜ optional) | | PR-02 | Als User möchte ich mehrere Coverage-Maße in einem Durchlauf ausführen. (Mehrfachauswahl) | | PR-03 | Als User soll die interne Struktur der Anwendung nicht sichtbar sein. (sauberes Interface) | | NF-01 | Die Implementierung soll Wahrheitswerttabellen mit beliebig vielen atomaren Bedingungen verarbeiten können (Scalability) | | NF-02 | Die Implementierung soll einfach erweiterbar sein für andere Eingabeformate (Modifiability) | | NF-03 | Die Implementierung soll einfach erweiterbar sein für weitere Bedingungüberdeckungskriterien (Modifiability) | | NF-04 | Der Code soll gut wartbar sein (Maintainability) | markdown christopher reader writer csv steffen reader writer Prüfen ob Ordner oder Datei -> nach Endung Isi (IOHandler) ## Augabe 1.2 Demonstrieren Sie die Funktion des Auswahlsystems zunächst für die folgenden Fälle: #### a) Die Tabelle aus der Folien (s.o.) für Minimal Bestimmte Mehrfachbedingungsüberdeckung ![](https://i.imgur.com/LBSFb6L.png) *bzw aus Kapitel 4-2 Folie 55* ![](https://i.imgur.com/eD3QUTg.png) #### b) Erstellen Sie für das folgende Beispiel zunächst von Hand die ausgewählten Testfälle für MMBÜ und MC/DC und prüfen Sie ob diese mit ihrer Implementierung übereinstimmt. | b1 | b2 | b3 | Auswertung | MMBÜ | MC/DC | | --- | --- | --- | ---------- | ---- | ----- | | 0 | 0 | 0 | 0 | - | - | | 0 | 0 | 1 | 0 | x | b1 | | 0 | 1 | 0 | 0 | x | - | | 0 | 1 | 1 | 0 | - | - | | 1 | 0 | 0 | 0 | x | b2 b3 | | 1 | 0 | 1 | 1 | x | b1 b3 | | 1 | 1 | 0 | 1 | x | b2 | | 1 | 1 | 1 | 0 | x | - | ##### Minimalbestimmende MehrfachBedingungsÜberdeckung (MMBÜ) *Unter MMBÜ wird der Anteil aller einfachen Bedingungsergebnisse, die von einer Testsuite ausgeführt wurden und unabhängig voneinander einen Entscheidungsausgang beeinflussen.* Quelle: Kapitel 4-2 Folie 50+ Für MMBÜ suchen wir 1 Veränderung, die die Auswertung negiert. Dabei wird zeilenweise vorgegangen, ob es sowas gibt. ##### Modified condition/decision coverage (MC/DC) Bei MC/DC geht man in der Tabelle nacheinander alle atomaren Bedinungen (hier: b1, b2, b3) ab. Dabei sucht man dann genau die Fälle raus, die sich bei dem anzuschauenden atomaren Bedinung und der Auswertung ändern, aber alle anderen atomaren Bedinungen gleich bleiben.