Einführung
in die imperative Programmierung
Tests
- verifizierend
- analysierend (Metriken)
- testend
- statisch
- Reviews
- statische Programm-Analysatoren
- dynamisch
- White-Box-Tests (Programm ist bekannt)
- strukturorientiert
- kontrollflussorientiert (kompakter Kontrollflussgraph)
- C0: Anweisungsüberdeckung
jede Anweisung muss getestet werden
- C1: Zweigüberdeckung
jede Kante des Kontrollflussgraphen muss getestet werden
- C4: Pfadüberdeckung
jeder Pfad des Kontrollflussgraphen muss getestet werden
- Bedingungsüberdeckung
- C2: einfache
in der Bedingung muss jede atomare Bedingung mindestens einmal zu true und zu false ausgewertet werden, bei ((A∧B)∨C) also A, B und C.
Es würde reichen, die Kombinationen TTT und FFF zu testen.
- minimale mehrfache
es muss jede Teilbedingung einmal zu true und einmal zu false ausgewertet werden, bei ((A∧B)∨C) also A, B, C, (A∧B) und ((A∧B)∨C).
Es würde auch hier reichen, TTT und FFF zu testen, denn mit TTT werden A, B, C,
(A∧B) und ((A∧B)∨C) wahr,
mit FFF werden A, B, C, (A∧B) und ((A∧B)∨C) falsch.
- C3: mehrfache
in der Bedingung muss jede Kombination aller atomaren Bedingungen getestet werden, bei ((A∧B)∨C) also für A, B, C die Kombinationen TTT, TTF, TFT, TFF, FTT, FTF, FFT, FFF.
- Boundary-interior-Pfadtest
Für Schleifen werden alle Pfade getestet für 0 Schleifendurchläufe, für einen Schleifendurchlauf (Boundary-Test) und für n Schleifendurchläufe, n>1, bevorzugt n=2 (Interior-Test).
- datenflussorientiert
- Black-Box-Tests (Problem ist bekannt, nicht das Programm)
- funktionsorientiert
- funktionale Äquivalenzklassenbildung
- funktionale Eingabeäquivalenzklassen
es werden Klassen von Eingabedaten gebildet, die sich ähnlich verhalten
- funktionale Ausgabeäquivalenzklassen
es werden Klassen von Ausgabedaten gebildet, die sich voneinander qualitativ unterscheiden
- fehlerorientiert
- Test spezieller Werte
- Grenzwertanalyse
- Zufallstest