Software-Test - Software and Systems Engineering
Software-Test - Software and Systems Engineering
Software-Test - Software and Systems Engineering
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Techniken im<br />
<strong>Software</strong>-<strong>Test</strong><br />
München, 4. Juli 2000<br />
Heiko Lötzbeyer<br />
Institut für Informatik<br />
Lehrstuhl für <strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Technische Universität München
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Ziele des <strong>Software</strong> <strong>Test</strong>s<br />
• Überblick<br />
• <strong>Test</strong>stufen<br />
– Unit-<strong>Test</strong><br />
– Integrationstest<br />
– Systemtest<br />
• <strong>Test</strong>verfahren<br />
– manuelle <strong>Test</strong>verfahren<br />
– Whitebox<br />
– Blackbox<br />
• <strong>Test</strong>fallermittlung<br />
– Spezifikationsbasierte <strong>Test</strong>fallermittlung<br />
• Schluß<br />
Inhalt<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 2
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Was ist <strong>Test</strong>en?<br />
Ziele<br />
– G.J.Myers,´79:<br />
„<strong>Test</strong>en ist der Prozeß, ein Programm mit der Absicht<br />
auszuführen, Fehler zu finden.“<br />
– Hetzel ´83:<br />
„Messung der <strong>Software</strong>qualität“<br />
–DieÜberprüfung, daß ein System die spezifizierten<br />
Anforderungen erfüllt.<br />
• Ziele:<br />
– Fehler finden<br />
– auch: Fehler vermeiden (B. Beizer)<br />
– nicht: Korrektheitsnachweis<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 3
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Überblick<br />
• Entstehung und Entdeckung von Fehlern<br />
(aus Balzert, IEEE <strong>Software</strong>, Jan. 1985, S.83)<br />
60%<br />
50%<br />
40%<br />
30%<br />
20%<br />
10%<br />
0%<br />
Anforderungs- und<br />
Entwurfsphase<br />
Eingebrachte Fehler Gefundene Fehler<br />
Technische<br />
Entwurfsphase<br />
Konstruktions- und<br />
Systemphase<br />
Abnahmetest und<br />
Betriebsphase<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 4
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Fehlerbeseitigung<br />
• Relative Kosten zur Fehlerbeseitigung<br />
(H. Balzert, 1998; Boehm, 1976)<br />
1000<br />
100<br />
10<br />
1<br />
Definition<br />
3<br />
Entwurf<br />
5<br />
Implementierung<br />
10<br />
Entwicklungstest<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 5<br />
15<br />
Abnahmetest<br />
40<br />
Betrieb<br />
150
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Fehlerverteilung<br />
• Fehlerverteilung (Dick Bender, 1993)<br />
Design<br />
27%<br />
Code<br />
7%<br />
Other<br />
10%<br />
Requirements<br />
56%<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 6
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Fehlerverteilung:<br />
(Beispiel von Hewlett-Packard, Grady 1997)<br />
Data h<strong>and</strong>ling<br />
6%<br />
Documentation<br />
19%<br />
Requirements<br />
5%<br />
Other code<br />
11%<br />
Hardware<br />
4%<br />
Process/Interprocess<br />
5%<br />
Fehlerverteilung<br />
Computation<br />
18%<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 7<br />
Logic<br />
32%
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
<strong>Test</strong>fallermittlung<br />
<strong>Test</strong>fälle<br />
Regressionstest<br />
Ablaufprotokolle<br />
<strong>Test</strong>durchführung<br />
<strong>Test</strong>treiber<br />
<strong>Test</strong>objekt<br />
Regressionstest<br />
Neues<br />
<strong>Test</strong>objekt<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 8<br />
Stubs
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
<strong>Test</strong>stufen<br />
• Unit-, Komponenten-, Modul- oder Klassentest<br />
– <strong>Test</strong> einer einzelnen Einheit<br />
• Integrationstest<br />
– Überprüfung des fehlerfreien Zusammenwirkens von<br />
Systemkomponenten<br />
• Systemtest<br />
– abschließender <strong>Test</strong> des Gesamtsystems<br />
Funktion, Leistung (Massen-, Zeit-, Streßtest), Benutzbarkeit,<br />
Sicherheit, Interoperabilität<br />
• Abnahmetest<br />
– <strong>Test</strong> unter Mitwirkung des Auftraggebers<br />
– Alpha-<strong>Test</strong>, Beta-<strong>Test</strong><br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 9
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Integrationsstrategien:<br />
– nicht-inkrementell:<br />
• bigbang<br />
• geschäftsprozeßorientiert<br />
– inkrementell:<br />
• top-down-Integration<br />
• bottom-up-Integration<br />
• funktionsorientiert<br />
• nach Verfügbarkeit<br />
Integrationstest<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 10
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Manuelle Prüfverfahren:<br />
<strong>Test</strong>verfahren<br />
– Programminspektion, Review, Walkthrough<br />
– effektiv: 30-70% (Myers, Balzert)<br />
– Zeit- und Personalaufwendig<br />
• Whitebox-<strong>Test</strong> (struktureller <strong>Test</strong>)<br />
– Ausgangspunkt: Struktur des Prüflings<br />
– Messung der <strong>Test</strong>überdeckung mittels Metrik<br />
• Blackbox-<strong>Test</strong> (funktionaler <strong>Test</strong>)<br />
– Ausgangspunkt: Spezifikation des Prüflings<br />
– Sicherstellung der gewünschten Funktionalität<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 11
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Whitebox-<strong>Test</strong><br />
• Instrumentierung des Codes (Zähler einfügen)<br />
• <strong>Test</strong>s durchführen<br />
• Messung der<br />
– verarbeiteten Anweisungen<br />
– ausgewerteten Bedingungen<br />
– Schleifendurchläufe<br />
• Auswertung der erreichten Überdeckung anh<strong>and</strong> von<br />
Metriken<br />
– kontrollflußorientiert<br />
– datenflußorientiert<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 12
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Function count(int x) {<br />
}<br />
int z;<br />
if x < 0 then z = -x;<br />
else z = x;<br />
while z > 0 { z--; }<br />
Kontrollflußorientiert<br />
X < 0<br />
YES NO<br />
z = -x z = x<br />
z > 0<br />
Z--<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 13<br />
NO<br />
2<br />
3<br />
1<br />
YES<br />
Programm Flußdiagramm
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Metriken:<br />
– Anweisungsüberdeckung<br />
Kontrollflußorientiert<br />
• jede Anweisung mind. 1 mal durchlaufen<br />
• hier: 3 Anweisungen können mit 2<br />
<strong>Test</strong>durchläufen überdeckt werden<br />
– Zweigüberdeckung<br />
• jeder Zweig (jede Bedingung: true, false)<br />
• hier: 2 Bedingungen mit jeweils 2<br />
Möglichkeiten können mit 2 <strong>Test</strong>durchläufen<br />
überdeckt werden<br />
– Pfadüberdeckung<br />
• jeder Pfad muß durchlaufen werden<br />
• hier: unendlich viele Pfade<br />
– Bedingungsüberdeckung, MC/DC<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 14<br />
FT<br />
F<br />
T,F
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Es gilt:<br />
Anweisungsüberdeckung<br />
⊂<br />
Zweigüberdeckung<br />
⊂ ⊂<br />
Modified Condition/Decision Coverage Pfadüberdeckung<br />
⊂<br />
Bedingungsüberdeckung<br />
• Probleme:<br />
– Infeasible Paths (nicht erreichbare Pfade)<br />
• z.B. if A do x; [...] if ¬A doy;<br />
• aus Redundanzen (z.B. Range-Checking-Code vom Compiler)<br />
• bei Exceptions<br />
– geeignete <strong>Test</strong>daten zu finden<br />
Kontrollflußorientiert<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 15
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Betrachtet werden<br />
– Definition,<br />
– lesende Zugriffe,<br />
– schreibende Zugriffe<br />
von Variablen<br />
• Defs/Uses-Verfahren:<br />
Datenflußorientiert<br />
– def: Wertzuweisung, auch Definitionen, Initialisierung<br />
– c-use: berechnende Benutzung (computational use)<br />
– p-use: prädikative Benutzung (predicate use)<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 16
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Datenflußgraph<br />
• Kontrollflußgraph mit Datenflußdarstellung:<br />
Function count(int x) {<br />
}<br />
int z;<br />
if x < 0 then z = -x;<br />
else z = x;<br />
while z > 0 { z--; }<br />
c-use x<br />
def z<br />
p-use z<br />
def x<br />
def z<br />
p-use x p-use x<br />
p-use z<br />
c-use z<br />
def z<br />
c-use x<br />
def z<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 17
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Datenflußmetriken<br />
• Metriken: (Statistiken aus Girgis, Woodware `86)<br />
– all defs: (24%, keine Kontrollflußfehler)<br />
• jede Definition muß in einer Berechnung oder Bedingung benutzt<br />
werden<br />
– all p-uses: (34%, identifiziert sicher Kontrollflußfehler)<br />
• Jede Kombination aus Variablendefinition und deren prädikative<br />
Nutzung muß getestet werden<br />
• Beinhaltet Zweigüberdeckung<br />
– all c-uses: (48%, identifiziert Berechnungsfehler)<br />
• Jede Kombination aus Variablendefinition und deren berechnende<br />
Benutzung muß getestet werden<br />
– all uses: (insgesamt ca. 70% der Programmierfehler)<br />
• c-uses und p-uses zusammen<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 18
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Whitebox-<strong>Test</strong>:<br />
Code<br />
<strong>Test</strong><br />
Abstraktion<br />
Modell<br />
<strong>Test</strong>fallermittlung<br />
Automatische Verfahren:<br />
Model-Checker,<br />
KI<br />
<strong>Test</strong>fälle und<br />
<strong>Test</strong>daten<br />
Überdeckung:<br />
Anweisungsüberdeckung,<br />
MC/DC<br />
Konkretisierung<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 19
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Blackbox-<strong>Test</strong>:<br />
Blackbox-<strong>Test</strong><br />
– Ermittlung der <strong>Test</strong>fälle ausschließlich aus der Spezifikation<br />
– Ziel ist eine möglichst umfassende und redundanzarme<br />
Prüfung der Funktionalität<br />
• Techniken:<br />
– Äquivalenzklassenbildung<br />
– Grenzwertanalyse<br />
– <strong>Test</strong>sequenzermittlung aus<br />
• Use-Cases<br />
• Beispielabläufen<br />
• Zust<strong>and</strong>sdiagrammen<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 20
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Äquivalenzklassenbildung:<br />
Äquivalenzklassen<br />
– Definitions- und Wertebereich in Äquivalenzklassen zerlegen<br />
• gültige Äquivalenzklassen => Funkionstests<br />
• ungültige Äquivalenzklassen => Stabilitätstests<br />
– Bsp: Monat : [1..12] zerlegen in<br />
• eine gültige Äquivalenzklasse : 1
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Classifaction Tree Editor:<br />
CTE<br />
Klassifikationsbaum<br />
≈ Kombination von<br />
Äquivalenzklassen<br />
Kombinationstabelle<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 22
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Zust<strong>and</strong>sautomaten<br />
• Ableitung von <strong>Test</strong>fällen aus Zust<strong>and</strong>sautomaten:<br />
– über Graphen:<br />
• Transitionsüberdeckung (Transitionstour)<br />
• Zust<strong>and</strong>süberdeckung<br />
• Pfadüberdeckung<br />
– durch Simulation<br />
• manuell mit Aufzeichnung<br />
• symbolische Ausführung<br />
– logikbasiert<br />
• Transformation in Aussagenlogik/Prädikatenlogik, deklarative<br />
Beschreibung der <strong>Test</strong>fälle<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 23
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Blackbox-<strong>Test</strong>:<br />
<strong>Test</strong>objekt<br />
<strong>Test</strong><br />
Spezifikation<br />
<strong>Test</strong>fallermittlung<br />
Automatische Verfahren:<br />
Model-Checker,<br />
KI<br />
<strong>Test</strong>fälle und<br />
<strong>Test</strong>daten<br />
<strong>Test</strong>ziel<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 24
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Methoden:<br />
Mealy-Automaten<br />
– Transitionstour, W-Methode, UIO-Methode<br />
• Vorteile:<br />
– vollautomatisch<br />
– auch Korrektheitsbeweis<br />
• Nachteile:<br />
– nur endliche Systeme<br />
– Korrektheitsbeweise erfordern starke Annahmen über <strong>Test</strong>objekt<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 25<br />
0/0<br />
0<br />
1/0<br />
0/1<br />
1<br />
1/1
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Transitionstour<br />
• Findet den kürzesten Pfad durch den Automaten, der alle<br />
Transitionen überdeckt<br />
• Vorteile:<br />
– vollautomatisch<br />
• Nachteile:<br />
– Automat muß bestimmte Eigenschaften haben:<br />
• stark zusammenhängend<br />
• errechnete Transitionssequenz muß wirklich durchführbar sein<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 26
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Methode:<br />
Model-Checking<br />
– Verwendung von Gegenbeispielen vom Model-Checker<br />
– Ermittlung der Systemläufe durch die Lösung aussagenlogischer<br />
Formeln<br />
• Vorteile:<br />
– vollautomatisch<br />
• Einschränkungen<br />
– nur zust<strong>and</strong>sendliche Systeme<br />
sonst Abstraktion notwendig<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 27
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
AF-Spezifikation<br />
Aussagenlogik<br />
<strong>Test</strong>ziel<br />
SATO<br />
(Aussagenlogik)<br />
<strong>Test</strong>fall<br />
(EET)<br />
Übersetzung Rückübersetzung<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 28
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Methode:<br />
CLP<br />
– Codierung in regelbasierte Systeme mit Constraint-Mechanismen (CLP<br />
= Constraint Logic Programming)<br />
– symbolische Simulation<br />
• Vorteile:<br />
– vollautomatisch<br />
– auch unendliche Systeme<br />
• Einschränkungen<br />
– Datentypen / Arithmetik<br />
– Schwierigkeiten mit nichtlinearen Prädikaten<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 29
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
AF-Spezifikation<br />
Constraintlogik<br />
<strong>Test</strong>ziel<br />
Prolog/CLP<br />
(Regeln,<br />
Constraintlogik)<br />
<strong>Test</strong>fall<br />
(EET)<br />
Übersetzung Rückübersetzung<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 30
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
• Weitgehend gelöst:<br />
– Metriken für Whitebox-<strong>Test</strong>s<br />
• Problematisch:<br />
– <strong>Test</strong>ziele definieren<br />
• Aktuell:<br />
– automatische <strong>Test</strong>fallermittlung aus<br />
• Use-Cases,<br />
• graphischen Beschreibungstechniken<br />
– Generierung von <strong>Test</strong>treibern, Stubs<br />
Schluß<br />
Inhalt Ziele Überblick <strong>Test</strong>stufen <strong>Test</strong>verfahren <strong>Test</strong>fallermittlung Schluß<br />
4. Juli 2000 H. Lötzbeyer 31
Lehrstuhl für<br />
<strong>Software</strong> & <strong>Systems</strong> <strong>Engineering</strong><br />
Next Events:<br />
ENDE<br />
Steinheil<br />
Alex B. Schmidt:<br />
Anwendungen der Relationenalgebra<br />
Dienstag 18.7.2000, 17.00 Uhr, Raum1546