DD.MM.YYYY | Name Vortragende/r Willkommen bei pro mente Wien Dr. Rudolf P. Wagner.
Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen...
-
Upload
ernsta-raduenz -
Category
Documents
-
view
122 -
download
6
Transcript of Vortragende: Dennis Kalkofen, Carsten Takac Visuell-unterstütztes Programmieren Visuelles Testen...
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
Gliederung
• Wofür testet man Programme?• Testen des Syntax• Testen einzelner Programmteile• Integrationstests• Tests nach Programmänderungen
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
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
• Übersichtlichkeit• Lesbarkeit• Verständnis• mehr als nur Schönschrift• erleichtert Teamarbeit
Formatieren von Quelltext
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Formatierungsmittel
• Anordnung des Codes• Namen von Bezeichnern• farbcodierter Text• Kommentierungen• Linien zur Unterteilung
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
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
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Animierte Algorithmen
• zeigen den dynamischen Programmablauf• dienen zum Programmverständnis• finden von Fehlern• Abstraktion
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort
Größe des Elementes
Array
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
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel 2: Sortieralgorithmen im Vergleich
Bubblesort
Quicksort
Shellsort
Beginn kurze Zeit später
Am Ende
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
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
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
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
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
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel
id attr value
xyp1
intintproc
210p1.cf
rpdl system
begin.........end f;
f
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
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
-
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
--
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
--
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;
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;
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-
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-
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
Testen komplexer Systeme mit GUI
• Historisch: Mainframe Client/Server mit GUI• Geänderte Anforderungen• vielversprechender Ansatz: „Capture/Replay“ Tools
Wie wird GUI gestestet?
• Einhaltung spezifizierter Vorgaben?• Use-Cases
Probleme:• komplexe Abläufe• Unmengen an „Verzweigungen“
Manuell kaum möglich!
Automatisches Testen – „Capture/Replay“ Tools
Idee:
- Aufzeichnen der Benutzeraktivitäten (Capture)- Editieren, Kombinieren- Wiedergabemöglichkeiten (Replay)
„Capture/Replay“ Tools
Tester
Interaktion
GUI
C/R Tool
capture
replay
TestSkript
editieren, kombinieren
Testsystem
Capture
- GUI-Elemente als Objekte- User-Aktivitäten den Objekten zuordnen- Sequenz festhalten im Testskript
Testskript (1) FileOpen.Files.SelectFileName
FileOpen.OK.Click- Erste Sequenz aufgezeichnet- Programmierung möglich
Testskript (2)
FileOpen.OK.Click- Editiermöglichkeiten- Bibliotheken Auswahl
Sequenz File.Edit.TextInput
File.Edit.TextFormat
Schleife
…
File.Scrollbar.Down
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
Bewertung
- Multi-User-Einsatz- Zeitplanung- Schnelligkeit, Konsistenz, Reproduzierbarkeit- Einbeziehung der Anwender in Testphase
- Kosten- Zeitplanung- „Intelligenz“ des C/R Tools
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;