Vorbereitung Übungsblatt 3
Tests starten
s. Unix-Kommando nohup
Kodeüberdeckung
Einordnung: Strukturelle Systemeigenschaften, White-Box-Test
- Theorie
- Anweisungsüberdeckung (Statement Coverage)
- Jede Anweisung im Quelltext des Testlings wird mindestens einmal
ausgeführt.
- Zweigüberdeckung (Branch Coverage)
- Anweisungsüberdeckung + Jeder Zweig von
Kontrollstrukturen muß ausgeführt werden, z.B.:
if (b) { dosth(); } /* implizit: else ; */
(1) if-Zweig (2) else-Zweig
while (b) { dosth(); }
(1) initial b
, d.h. Schleifenrumpf wird
betreten (2) initial !b
, d.h. Schleifenrumpf wird
nicht betreten
- Einfache Bedingungsüberdeckung
- Alle atomaren Bedingungen jeweils einmal zu
TRUE
und einmal zu FALSE
evaluieren,
z.B.:
if ((i==17) && (&p!=NULL)) {}
(1) i==17
(2) i!=17
(3)
p==NULL
(4) p!=NULL
- Mehrfach-Bedingungsüberdeckung
- Alle Kombinationen der atomaren Bedingungen testen, z.B.:
if ((i==17) && (&p!=NULL)) {}
(1) (i==17) && (p==NULL)
(2) (i==17) && (p!=NULL)
(2) (i!=17) && (p==NULL)
(2) (i!=17) && (p!=NULL)
- minimale Mehrfach-Bedingungsüberdeckung
- Alle Teilbedingungen (auch nicht-atomar) müssen mindestens
jeweils einmal
TRUE
und FALSE
sein
- Pfadüberdeckung
- ...
- Praxis
- Tool "gcov" (schon in Aufgabenserie 2 verwendet)
- Aufgabenserie 2: nur Anweisungsüberdeckung
Beachte: eigentlich "Zeilenüberdeckung", also nur,
wenn pro Anweisung eine eigene Zeile
- Aufgabenserie 3: Zweigüberdeckung + (soetwas wie)
Bedingungsüberdeckung:
Zweige und Bedingungen werden gleich behandelt (d.h. Bedingungen
erzeugen scheinbar intern neue Zweige); Zuordnung ist nicht
offensichtlich. Aber: Immerhin sieht man, ob es einen
Zweig gibt, der nicht ausgeführt wurde.
--> Bsp. anschauen
Nachhilfe C-Programmierung
Interaktiv ein kleines Programm erstellen ...
- Strukturen
- Zeiger (Pointer)
malloc()
... free()
...?
- Deklarationen (*.h) vs. Definitionen (*.c)
Last modified: Juni 14, 2004 17:35:47 (cest)
Stefan Bisanz stefan@bisanz-online.de