Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Ernsta Raduenz Geändert vor über 10 Jahren
1
Visuell-unterstütztes Programmieren Visuelles Testen von Programmen
Vortragende: Dennis Kalkofen, Carsten Takac TU Darmstadt, Fachbereich Informatik Seminar: Visuell unterstütztes Programmieren SS 2002 Vortrag am , betreut von Prof. em. Dr. H.-J. Hoffmann
2
Gliederung Wofür testet man Programme? Testen des Syntax
Testen einzelner Programmteile Integrationstests Tests nach Programmänderungen
3
Wofür testet man Programme?
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
4
Formatieren von Quelltext
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Formatieren von Quelltext Übersichtlichkeit Lesbarkeit Verständnis mehr als nur Schönschrift erleichtert Teamarbeit
5
Formatierungsmittel Anordnung des Codes Namen von Bezeichnern
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Formatierungsmittel Anordnung des Codes Namen von Bezeichnern farbcodierter Text Kommentierungen Linien zur Unterteilung
6
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
7
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
8
Animierte Algorithmen
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Animierte Algorithmen zeigen den dynamischen Programmablauf dienen zum Programmverständnis finden von Fehlern Abstraktion
9
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
10
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
11
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
12
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
13
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
14
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
15
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
16
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
17
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
18
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
19
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
20
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
21
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
22
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
23
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
24
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
25
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
26
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel: Quicksort Größe des Elementes Array
27
Bewertung der Animation
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
28
Beispiel 2: Sortieralgorithmen im Vergleich
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Beispiel 2: Sortieralgorithmen im Vergleich Bubblesort Quicksort Shellsort Beginn kurze Zeit später Am Ende
29
Bewertung der Animation
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
30
Exkurs: Tonunterstützung
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
31
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
32
Umrißdiagramme ursprünglich für ALGOL-Programme entwickelt
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
33
Aufbau bestehen aus ineinandergeschachtelten Boxen
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Aufbau 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
34
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Beispiel f id attr value x y p1 int proc 2 10 p1.cf rpdl system begin ... end f;
35
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f;
36
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value x y int - - rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f;
37
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value x y p1 int proc - - - rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f;
38
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value x y p1 int proc 1 - - rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f;
39
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value x y p1 int proc 1 - cf rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f; id attr value y int rpdl y:=3; y := 1;
40
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value x y p1 int proc 1 - cf rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f; id attr value y int 1 rpdl y:=3; y := 1;
41
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value x y p1 int proc 1 3 - rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f;
42
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung
Aufruf einer Prozedur f id attr value x y p1 int proc 1 3 - rpdl system var x, y : int; procedure p1(value y: int); y := 1; end p1; begin x := 1; p1(0); y := 3; end f;
43
Dynamische Datenstrukturen
Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Dynamische Datenstrukturen Beispiel: Array f in Heaps dargestellt id attr value A x arr int true false rpdl ... ...
44
Testen komplexer Systeme mit GUI
Historisch: Mainframe Client/Server mit GUI Geänderte Anforderungen vielversprechender Ansatz: „Capture/Replay“ Tools Mainframe: Textbasiert Eingabe / Berechnung / Ausgabe Client/Server: Leistungsfähigkeit Vernetzung Vielfältige Möglichkeiten der Interaktion mit GUI-Elementen (Menüs, Buttons, Bildlaufleisten, Symbolleisten) Nicht vorhersehbares Verhalten neue Testverfahren
45
Wie wird GUI gestestet? Einhaltung spezifizierter Vorgaben? Use-Cases
Probleme: komplexe Abläufe Unmengen an „Verzweigungen“ Manuell kaum möglich! Vorgaben? Vor Projektbeginn festgehalten Tester probiert anhand festgehaltener Testfälle durch ob Reaktion des Servers wie erwartet Z.B. Klick File Open Auswahldialog für Datei Bestätigung Laden der Datei Probleme: Beschaffenheit Client/Server Applikationen oft sehr komplex Z.B. Speichert Datum in DB – nicht nachvollziehbar (relational, verteiltes System…) Multi-User-Tests unmöglich Vielzahl an Möglichkeiten Verzweigungen wachsen mit vielen Graph. Bedienungselementen Anzahl Pfade gleicher Länge = Aktionssequenzen mit gl. Anzahl an Schritten wächst exponentiell
46
Automatisches Testen – „Capture/Replay“ Tools
Idee: - Aufzeichnen der Benutzeraktivitäten (Capture) - Editieren, Kombinieren Wiedergabemöglichkeiten (Replay) Nur kurz
47
„Capture/Replay“ Tools
Tester Interaktion GUI C/R Tool capture replay Test Skript editieren, kombinieren Testsystem Erläutern
48
Capture - GUI-Elemente als Objekte
- User-Aktivitäten den Objekten zuordnen - Sequenz festhalten im Testskript Objekte mit ID und Attributen (z.B. Name, Farbe, Beschriftung) Benutzereingaben (Mausklicks, Tastatureingaben)
49
Testskript (1) Erste Sequenz aufgezeichnet Programmierung möglich
FileOpen.Files.SelectFileName Erste Sequenz aufgezeichnet Programmierung möglich FileOpen.OK.Click Möglichkeiten strukturierter Programmiersprachen wie Fallunterscheidung, Schleifen und Subroutinen
50
Testskript (2) Editiermöglichkeiten Bibliotheken FileOpen.OK.Click
Auswahl Sequenz File.Edit.TextInput File.Edit.TextFormat Auch komplett manuell möglich (z.B. wenn noch kein Testsystem komplett implementiert) Oft: Vorgefertigte Skripte als Module in Bibliothek können übernommen werden Schleife File.Scrollbar.Down …
51
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 Testsystem übernimmt Rolle des Bedieners (Tester kann virtuellen Benutzer am Bildschirm beobachten) Objektorientierte Indexierung der GUI-Elemente. Gleiches Skript auch wenn Buttons andere Farbe oder Position Kontrollpunkte z.B. Anzahl Elemente Menü, Inhalt Textfeld bei Tastatureingabe, Bildpunkte Bitmap - Wie soll GUI nach bestimmter Sequenz von Aktionen aussehen – tatsächliches Aussehen mit Kontrollpunkt vergleichen
52
Bewertung Multi-User-Einsatz Zeitplanung
Schnelligkeit, Konsistenz, Reproduzierbarkeit Einbeziehung der Anwender in Testphase Kosten „Intelligenz“ des C/R Tools Vorteile: Startzeiten für Skripte Multi User Belastungstest Automatisch mehrere Plattformen testen Resourcenintensiv ohne Beaufsichtigung am Wochenende, später auswerten/korrigieren Intuitive Oberfläche bei C/R -> weniger Kommunikationsprobleme Nachteile: Kosten Lizenz, Installation, Wartung (wenn überhaupt C/R für spezif. Anforderungen existiert) Aufzeichnen von Aktivitäten oft erst sehr spät im Entwicklungsprozeß möglich, wenn schon fast komplett implementiert -> jetzt Fehler gefunden, Korrektur schwierig, teuer Intelligenz: Automatisiert nur bei Wiederholung sinnvoll Programmierer als Tester bedient nur wie für ihn logisch wie geplant Benutzer intuitiv evtl. anders System automatisch alle sinnvollen Variationen testen? Notwendige Vorgaben des Programmierers Unvollständig oder fehlerhaft -> C/R bedingt sinnvoll
53
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, 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;
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.