Betreuer: Dipl.-Wirt.-Inf. Michael Linschulte Projektteam: Axel Balke

Slides:



Advertisements
Ähnliche Präsentationen
der betrieblichen Projektarbeit im Rahmen der Abschlussprüfung
Advertisements

Phasen und ihre Workflows
Sortieren I - Bubblesort -
JDF Tools: Einsatz bei Agfa
Fortgeschrittenenpraktika WS 2003/04 Database Research Group, Prof. Dr. Bernhard Seeger Department of Mathematics and Computer Science University of Marburg.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Imperative Programmierung -Entwicklungswerkzeuge
Vorstellung von PaderWAVE Generierung von Web-Anwendungen aus visuellen Spezifikationen, SS04 Projektgruppe der AG Kastens.
Evaluierung und Implementierung der Automated Test Life-Cycle Methodology (ATLM) am Beispiel der IT3-Software Vorträger: Ling Yan.
Tomcat Web-Server installieren
Ausnahmen HS Merseburg (FH) WS 06/07.
Dynamische Testverfahren
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Aufgaben des Testens Vergleich des Verhaltens einer Software mit den an sie gestellten.
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
DOM (Document Object Model)
Agenda Einführung Haskell QuickCheck Zusammenfassung
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
DbjFileManager Paul Fruntzek Michael Stanek. Überblick Unterste Ebene im Schichtenmodell Schnittstelle zum BS (Low-Level) Aufgabenbereich: Persistente.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Fehlerabdeckung/ Regressionstest1 Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Fehlerabdeckung/ Regressionstest Vortragende:
Christian Schindelhauer
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
Error Handling unter Visual FoxPro. © 1999 TMN-Systemberatung GmbH ON ERROR n ON ERROR DO ERRHAND WITH error(), sys(16), message(), lineno(1) – Globales.
Systementwicklungsprojekt:
CRM Editor auf der Basis von Qt (Beispiel von Ubi erat Lupa)
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Testumgebung Unittests: Test von einzelnen Methoden im Programmcode bezüglich ihres Ein- /Ausgangsverhaltens → White Box Test, hier nicht sinnvoll Code-Coverage:
Neuronale Netzwerke am Beispiel eines MLP
Erstellen eines Zufallsgenerators
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
20:00.
1 Knowledge Discovery mit Wordnet und Alembic Workbench (Julia Faion) (Markus Reiter)
Wir bauen uns eine Webapplikation!
Formulare definieren Formular einleiten mit <form>
Design and analysis of GUI test-case prioritization using weight-based methods Samra Khan.
Flexible Datenstrukturen
Java für Fortgeschrittene
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
CGI (Common Gateway Interface)
Hauptdokument - Datenquelle
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Dynamische Webseiten-Generierung
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
JUnit Grundkonzept Gruppe Markt. JUnit: Ziele Einfachheit: –Leicht erlernbare, bekannte Tools –Möglichst wenig Aufwand für die Implementierung von Testfällen.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Robuste Programme durch Ausnahmebehandlung
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Test-Driven Development
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
1 Einleitung Auf dem Weg zum Web 2.0 (was immer das sein mag) ist jQuery klein und fix Hängt damit die "Großen" wie Prototype, Dojo oder Mochikit ab Kreuzt.
Christoph Wirtz | Seminarvortrag EBC | Lehrstuhl für Gebäude- und Raumklimatechnik Ein Tool zum automatisierten Erstellen von Conversion Scripts.
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
Rechen- und Kommunikationszentrum (RZ) Selektionsstrategien auf Graphstrukturen Sven Porsche Seminarvorträge Aachen.
Die Struktur einer Java-Klasse
 Präsentation transkript:

Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer: Dipl.-Wirt.-Inf. Michael Linschulte Projektteam: Axel Balke Benedikt Krüger Christian Menke Heinrich Drobin Jahn Heymann Magnus Kortenjann Simon Waloschek

Inhalt Einleitung Realisierung Test der Implementierung Fallstudie Fazit & Ausblick Projektgruppe 4 Inhaltsverzeichnis

Projektdefinition HTML XML Testcase generator tool HTML Selenium Testdatengenerator „ETES“ HTML TC1 HTML TC2 HTML TC3 HTML TC.. HTML Testcase manuelle Bearbeitung HTML Testcase Template XML Testdaten Testcase generator tool Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Projektdefinition Html Xml <tr> <td>select</td> <td>arrival</td> <td>$XML[Arrival]</td> </tr> <td>departure</td> <td>$XML[Departure].</td> <td>click</td> <td>$XML[btn_action]</td> <td></td> <tr> <td>select</td> <td>arrival</td> <td>$XML[Arrival]</td> </tr> <td>departure</td> <td>$XML[Departure].</td> <td>click</td> <td>$XML[btn_action]</td> <td></td> <td>assertAlert</td> <td>Fehler</ td> <tr> <td>select</td> <td>arrival</td> <td>$XML[Arrival]</td> </tr> <td>departure</td> <td>$XML[Departure].</td> <td>click</td> <td>$XML[btn_action]</td> <td></td> <tr> <td>select</td> <td>arrival</td> <td>label=01.11.2010</td> </tr> <td>departure</td> <td>label=07.11.2010</td> <td>click</td> <td>btn_submit</td> <td></td> <DTable RefID="PID=3" Name="Suchmaske" ID="5"> <Actions No="0"> <Action Valid="true">btn_cancel</Action> <Action Valid="false" Error="Fehler">btn_submit</Action> <Data No="0"> <Feld Name=„Arrival“>label=01.11.2010</Feld> <Feld Name=„Departure">label=07.11.2010</Feld> </Data> <Data No="1"> <Feld Name=„Arrival“>label=01.02.2010</Feld> <Feld Name=„Departure">label=07.03.2010</Feld> ... </Actions> </DTable> Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Designentscheidungen als Framework Programmaufbau Oberfläche Thread SAX DOM QXmlSimpleReader GUI ReaderThread XMLHandler TestController TestCaseWriter Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Die GUI Pfadangaben Fortschrittsbalken Startet die Bearbeitung Beendet das Programm Eingabefeld für Errortyp Statistik Debug Ausgabe Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit ReaderThread GUI ReaderThread QXmlSimpleReader XMLHandler TestController TestCaseWriter Oberfläche Thread SAX DOM Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit ReaderThread Selbständiger Prozess Über Signals & Slots mit der GUI verbunden Qt System (ähnlich Events) Stellt Methoden bereit Debug Statistik Fortschritt Status Initialisiert XML Handler & QXmlSimpleReader Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit XML Handler GUI ReaderThread QXmlSimpleReader XMLHandler TestController TestCaseWriter Oberfläche Thread SAX DOM Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit XML Handler Eventhandler für QXmlSimpleReader Liest XML-Datei elementweise ein Baut XML-Teilbaum auf Beim Ende eines Actions-Block Überprüfen des erstellten Teilbaums Übergabe an TestController Löschen des Blocks Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit TestController GUI ReaderThread QXmlSimpleReader XMLHandler TestController TestCaseWriter Oberfläche Thread SAX DOM Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Klasse TestController Aufgaben des TestControllers HTML Template als QDomDocument einlesen Teilbäume vom XML Handler für die Klasse TestCase kombinieren Wichtige Funktionen des TestControllers setTemplate liest das HTML Template ein setActions erstellt Testfälle Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Klasse TestController XML-Reader TestController TestCase 1 TestCase 2 TestCase 3 Funktionsweise: <?xml version='1.0' encoding='UTF-8'?> <Testcase No="0"> <Action>action 1</Action> <Data No="0"> <Feld Name="Key1">Value1</Feld> <Feld Name="Key2">Value2</Feld> </Data> </Testcase> <?xml version='1.0' encoding='UTF-8'?> <Testcase No="0"> <Action>action 1</Action> <Data No=„1"> … </Data> </Testcase> <DTable RefID="PID=3" Name="Suchmaske" ID="5"> <Actions No="0"> <Action Valid="true">action1</Action> <Action Valid="false" Error="Fehler">action2</Action> <Data No="0"> <Feld Name="Key1">Value1</Feld> <Feld Name="Key2">Value2</Feld> </Data> <Data No="1"> ... </Actions> </DTable> <?xml version='1.0' encoding='UTF-8'?> <Testcase No="0"> <Action Valid="false" Error="Fehler">action2</Action> <Data No="0"> <Feld Name="Key1">Value1</Feld> <Feld Name="Key2">Value2</Feld> </Data></Testcase> … Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Testcasewriter GUI ReaderThread QXmlSimpleReader XMLHandler TestController TestCaseWriter Oberfläche Thread SAX DOM Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Klasse Testcasewriter Aufgabe des Testcasewriters XML Daten in HTML Template einfügen HTML Testfälle im Ausgangsordner abspeichern Aufbau des Testcasewriters Konstruktor erzeugt neuen Testfall Zwei private Unterfunktionen replaceData (QDomNodeList pList) getXMLData (QString pFieldName) Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Klasse Testcasewriter Für alle Elemente in der Liste Liste erstellen Liste durchlaufen Enthält Element Text mit $XML[…] Enthält Element Kinder $XML Feld Ersetzen ja nein Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Testumgebung Unittests: Test von einzelnen Methoden im Programmcode → White Box Test, hier nicht realisierbar Anwendung von Black Box Test Code-Coverage: Messung des Abdeckungsgrades des Codes → Kein wirklicher Test, sondern nur Maß für die Güte des Tests Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Code Coverage Überwachung der Ausführung pro Zeile (Anweisungsüberdeckung; C0 Test) Finden von nicht ausgeführtem Code 100%ige Überdeckung bedeutet nicht Fehlerfreiheit Fehlende Überdeckung bedeutet unzureichende Tests Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Code Coverage 14 Testfälle wurden aufgestellt und durchgeführt Methode: Überdeckungsgrad: main.cpp 100.00% mainwindow.cpp 94,44% readerthread.cpp 88,64% testcasewriter.cpp 93,59% testcontroller.cpp 98,11% xmlhandler.cpp 98,33% Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Code Coverage Die Testfälle wurden soweit modifiziert, dass Errors auftreten und somit die Abfangmethoden ebenfalls durchgeführt werden müssen Beispiel eines nicht ausgeführten Codefragments: #####: 76:void ReaderThread::statusTxt(QString statusTxt) -: 77:{ #####: 78: emit writeStatus(statusTxt); #####: 79:} Inkorrekte Pfadangaben werden beim Template nicht abgefangen. Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Fallstudie in Iselta Nutzen des Tools beim Testen von Webseiten mittels „Selenium“ Alle Testfälle werden im optimalen Fall positiv abgeschlossen Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Fallstudie - Szenario 1 gültige Eingaben Zeichenketten Zeichenketten nach speziellem Schema Zahlen Buchungsdaten – Formular in Iselta Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Fallstudie - Szenario 1 Demonstration Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Fallstudie - Szenario 1 fehlerhafte Eingabe nicht aufgetretene Fehlermeldung Ergebnis des ersten Szenarios in Selenium Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Fallstudie - Szenario 1 Alle negativ abgeschlossen Tests haben die gleiche Ursache: Zeichenketten, welche nur Sonderzeichen beinhalten werden als valide Eigennamen von Iselta akzeptiert Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Fallstudie - Szenario 2 gültige Eingaben Zeichenketten Ganze Zahlen Kommazahlen Hoteldaten – Formular in Iselta Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Fallstudie - Szenario 2 fehlerhafte Eingabe nicht aufgetretene Fehlermeldung Hoteldaten – Formular in Iselta Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Fallstudie - Szenario 2 Alle negativ abgeschlossen Tests haben wieder die gleiche Ursache: Zeichenketten, welche nur Sonderzeichen beinhalten werden als valide Bezeichnungen (bzw. Eigennamen) von Iselta akzeptiert Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Iselta prüft bei beiden getesteten Szenarien Zeichenketten nicht auf semantische Korrektheit Das Tool kann Testfälle generieren, welche Fehler entdecken und lokalisieren können Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Einleitung – Realisierung – Test – Fallstudie – Fazit Fazit & Ausblick Tool erleichtert das Erstellen von Testfällen Problem: Nur für eine Formularseite Lösung: Erweiterte Platzhalter z.B. $XML.<Nr>[<Variable>] Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Vielen Dank für Ihre Aufmerksamkeit! Projektgruppe 4 Ende