Visuell-unterstütztes Programmieren Visuelles Testen von Programmen

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Puck eine visuelle Programmiersprache für die Schule
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
Datenbankzugriff im WWW (Kommerzielle Systeme)
Ruby on Rails im Überblick
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Gliederung des Inhalts
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Automatisches Testen und Bewerten von Java-Klassen
Rigi und Web2Rsf vorgestellt von Tobias Weigand. Inhalt Ziel von Web2Rsf und Rigi Vorstellung des Parsers Web2Rsf Vorstellung des Werkzeugs Rigi Analyse.
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Vortrag 11: Reengineering - Refactoring
1 Analyse von Software-statisch- Darmstadt,den Presentation: Sebastian Schikowski Steve Kenfack.
GROOVE Graphs for Object-Oriented Verification Seminar: SEFSIS Sommersemester 2006 Basil Becker
Introducing the .NET Framework
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Portierung von Java nach C
Vortrag: Ingo Gensch, Mathias Reich am:
OO Analyse und Entwurf für Anwender XIII. Objektorientierte Benutzeroberfäche Dr. Michael Löwe.
Wizards & Builders GmbH Microsoft Titel Microsoft-Titel für Entwickler und Softwarehäuser.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
UML Begleitdokumentation des Projekts
Tino Reindanz - FSU Jena Seminar Aktive Datenbanken – SS 2007 Folie 1 Seminar Aktive Datenbanken Rule Development Rule Development for Active Database.
Einführung in die Programmierung
Plattformunabhängige Programmiersprache
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Unified Modeling Language Repetition / Einführung zu UML
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Binde & Wallner Engineering GmbH
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Proseminar: „Webtechnologien für Ecommerce“
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmierung
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Software-Technik „Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige.
Analyse von Ablaufdiagrammen
Wasserfallmodell und Einzelbegriffe
Java Server Pages Sergej Keterling
Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation.
Projektmanagement Ziel und Umfang eines Softwareprojektes definieren
Java Programmierung.
Grundlegende Sortieralgorithmen
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Aufzeichnung von Usability-Daten im www. Client-Side Log : automatisch (maschinell) generiertes Protokoll Client : Rechner mit dem Browser des Users Server:
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Gestern: Kara Steuerung: Endliche Automaten.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Unified Process Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Planung von Softwareprojekten Dozent: Christoph Stollwerk WS 2014/2015.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
COBOL Präsentation im Rahmen des Seminars „Programmiersprachen“
Datenbanken im Web 1.
TypoScript.
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
MDA – Model Driven Architecture
Software - Testung ETIS SS05.
Visuelles Debugging Vortrag im Seminar: „Software - Visualisierung“ SS 2002 Freie Universität Berlin Enrico Heine Prof. Löhr.
Softwareentwicklung & Testprozess
 Präsentation transkript:

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 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

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

Formatieren von Quelltext Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Formatieren von Quelltext Übersichtlichkeit Lesbarkeit Verständnis mehr als nur Schönschrift erleichtert Teamarbeit

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

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

Animierte Algorithmen 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

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

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

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

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

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

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

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

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;

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;

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;

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;

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;

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;

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;

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;

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;

Dynamische Datenstrukturen Weshalb Testen | Syntax | Programmteile | Integrationstests | Programmänderung Dynamische Datenstrukturen Beispiel: Array f in Heaps dargestellt id attr value A x arr int 10 true 12 false rpdl ... ...

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

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

Automatisches Testen – „Capture/Replay“ Tools Idee: - Aufzeichnen der Benutzeraktivitäten (Capture) - Editieren, Kombinieren Wiedergabemöglichkeiten (Replay) Nur kurz

„Capture/Replay“ Tools Tester Interaktion GUI C/R Tool capture replay Test Skript editieren, kombinieren Testsystem Erläutern

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)

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

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 …

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

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

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;