53
Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar: Visuell unterstütztes Programmieren SS 2002 Vortrag am 10.06.02, betreut von Prof. em. Dr. H.-J. Hoffmann

Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Embed Size (px)

Citation preview

Page 1: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Vortragende: Dennis Kalkofen, Carsten Takac

Visuell-unterstütztes Programmieren

Visuelles Testen von Programmen

TU Darmstadt, Fachbereich Informatik

Seminar: Visuell unterstütztes Programmieren SS 2002

Vortrag am 10.06.02, betreut von Prof. em. Dr. H.-J. Hoffmann

Page 2: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Gliederung

• Wofür testet man Programme?• Testen des Syntax• Testen einzelner Programmteile• Integrationstests• Tests nach Programmänderungen

Page 3: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Wofür testet man Programme?

• Fehlersuche, -korrektur• Erkennen konzeptioneller Probleme • Verständnis• Zusammenspiel der Bestandteile• Test auf bestimmte Eigenschaften• Laufzeitanalyse

Page 4: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

• Übersichtlichkeit• Lesbarkeit• Verständnis• mehr als nur Schönschrift• erleichtert Teamarbeit

Formatieren von Quelltext

Page 5: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Formatierungsmittel

• Anordnung des Codes• Namen von Bezeichnern• farbcodierter Text• Kommentierungen• Linien zur Unterteilung

Page 6: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Page 7: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Worauf ist zu achten?

• die ganze Programmierergruppe muß damit zurecht kommen• nicht gegen gängige Konventionen• Unterstützung des Editors und der IDE• Richtlinien regelmäßig überprüfen

Page 8: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Animierte Algorithmen

• zeigen den dynamischen Programmablauf• dienen zum Programmverständnis• finden von Fehlern• Abstraktion

Page 9: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 10: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 11: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 12: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 13: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 14: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 15: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 16: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 17: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 18: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 19: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 20: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 21: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 22: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 23: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 24: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 25: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 26: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel: Quicksort

Größe des Elementes

Array

Page 27: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Bewertung der Animation

• mit einfachen Mitteln die Funktionsweise von Bubblesort gezeigt• abstrahiert auf rote/grüne Balken• dennoch das Wesentliche ersichtbar

=> ein Fehler wäre mit dieser Animation leicht zu finden

Page 28: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel 2: Sortieralgorithmen im Vergleich

Bubblesort

Quicksort

Shellsort

Beginn kurze Zeit später

Am Ende

Page 29: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Bewertung der Animation

• andere Betrachtungsweise von Sortieralgorithmen• Vergleich des Verlaufs besser möglich• Rückschlüsse auf Arbeitsweise• Rückschlüsse auf Komplexität

Page 30: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Exkurs: Tonunterstützung

• Erweitern oder Ersetzen von visuellen Mitteln• gleichzeitiges Arbeiten mit visuellen Mitteln• stört nicht die GUI eines Programmes• kann leichtere Darstellung sein als visuell

Page 31: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Page 32: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Umrißdiagramme

• ursprünglich für ALGOL-Programme entwickelt• angepaßt an Objektorientierung und Logische Sprachen• visualisieren Änderungen während Programmablauf• Basis für Testprogramme

Page 33: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufbau

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

• bestehen aus ineinandergeschachtelten Boxen• jede Box repräsentiert Zustand einer Prozedur• Veränderungen während Programmablauf• Box beinhaltet Attribute, Rücksprungadresse (rpdl) und Quelltext• instruction pointer• Box wird gelöscht, wenn zurückgesprungen wird

Page 34: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

Beispiel

id attr value

xyp1

intintproc

210p1.cf

rpdl system

begin.........end f;

f

Page 35: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

Page 36: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

xy

intint

-

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

-

Page 37: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

xyp1

intintproc

-

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

--

Page 38: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

xyp1

intintproc

1

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

--

Page 39: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

xyp1

intintproc

1

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

-cf

y := 1;

rpdl

id attr valuey int 0

y:=3;

Page 40: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

xyp1

intintproc

1

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

-cf

y := 1;

rpdl

id attr valuey int 1

y:=3;

Page 41: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

xyp1

intintproc

1

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

3-

Page 42: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Aufruf einer Prozedur

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

id attr value

xyp1

intintproc

1

rpdl system

var x, y : int; procedure p1(value y: int); y := 1; end p1;

beginx := 1;p1(0);y := 3;end f;

f

3-

Page 43: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Dynamische DatenstrukturenBeispiel: Array

Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung

• in Heaps dargestellt id attr value

A

x

arr

int

rpdl ...

...

f

10 true 12 false

Page 44: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Testen komplexer Systeme mit GUI

• Historisch: Mainframe Client/Server mit GUI• Geänderte Anforderungen• vielversprechender Ansatz: „Capture/Replay“ Tools

Page 45: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Wie wird GUI gestestet?

• Einhaltung spezifizierter Vorgaben?• Use-Cases

Probleme:• komplexe Abläufe• Unmengen an „Verzweigungen“

Manuell kaum möglich!

Page 46: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Automatisches Testen – „Capture/Replay“ Tools

Idee:

- Aufzeichnen der Benutzeraktivitäten (Capture)- Editieren, Kombinieren- Wiedergabemöglichkeiten (Replay)

Page 47: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

„Capture/Replay“ Tools

Tester

Interaktion

GUI

C/R Tool

capture

replay

TestSkript

editieren, kombinieren

Testsystem

Page 48: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Capture

- GUI-Elemente als Objekte- User-Aktivitäten den Objekten zuordnen- Sequenz festhalten im Testskript

Page 49: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Testskript (1) FileOpen.Files.SelectFileName

FileOpen.OK.Click- Erste Sequenz aufgezeichnet- Programmierung möglich

Page 50: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Testskript (2)

FileOpen.OK.Click- Editiermöglichkeiten- Bibliotheken Auswahl

Sequenz File.Edit.TextInput

File.Edit.TextFormat

Schleife

File.Scrollbar.Down

Page 51: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Replay

- Gemerkte Aktionen automatisch ausführen- Objektorientierung !- Kontrollpunkte für gewünschte Reaktion des GUI- Abweichungen in Datenbank speichern- Analyse / Korrektur der Fehler- erneute Ausführung

Page 52: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Bewertung

- Multi-User-Einsatz- Zeitplanung- Schnelligkeit, Konsistenz, Reproduzierbarkeit- Einbeziehung der Anwender in Testphase

- Kosten- Zeitplanung- „Intelligenz“ des C/R Tools

Page 53: Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen von Programmen TU Darmstadt, Fachbereich Informatik Seminar:

Bibliographie

- B. Jayaraman, C.M. Blatus: Visualizing program execution; Proc. IEEE Symp. Visual Languages, 1996, 30-37- T. Hill et al.: Visualising the structure of object-oriented systems; Proc. IEEE Intl. Symp. Visual languages, 2000, 191-198- R. Baecker et al.: Software visualization for debugging; Comm. ACM, 40 (1997) 4, 44-54- E.F.Miller: Software test tools considered harmful?; Application Note, undatiert; - T.Souder et al.: Form – A framework for creating views of program execution; IEEE Intl. Conf. Software Maintenance, 2001, 612 ff- T. Ostrand et al.: A visual test development environment for GUI systems; ACM Software Engineering Notes, 23 (1998) 2, 82-92- NN (GI): Questionnaire on OO-test tools; Mai 1999, - NN (Intl. Software Automation, Inc.): Java Analyzer & Panorama for Java;