Präsentation herunterladen
Veröffentlicht von:Eleonore Stimpert Geändert vor über 10 Jahren
1
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
2
Inhalt Einleitung Realisierung Test der Implementierung Fallstudie
Fazit & Ausblick Projektgruppe 4 Inhaltsverzeichnis
3
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
4
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= </td> </tr> <td>departure</td> <td>label= </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= </Feld> <Feld Name=„Departure">label= </Feld> </Data> <Data No="1"> <Feld Name=„Arrival“>label= </Feld> <Feld Name=„Departure">label= </Feld> ... </Actions> </DTable> Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
5
Designentscheidungen
als Framework Programmaufbau Oberfläche Thread SAX DOM QXmlSimpleReader GUI ReaderThread XMLHandler TestController TestCaseWriter Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
6
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
7
Einleitung – Realisierung – Test – Fallstudie – Fazit
ReaderThread GUI ReaderThread QXmlSimpleReader XMLHandler TestController TestCaseWriter Oberfläche Thread SAX DOM Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
8
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
9
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
10
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
11
Einleitung – Realisierung – Test – Fallstudie – Fazit
TestController GUI ReaderThread QXmlSimpleReader XMLHandler TestController TestCaseWriter Oberfläche Thread SAX DOM Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
12
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
13
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
14
Einleitung – Realisierung – Test – Fallstudie – Fazit
Testcasewriter GUI ReaderThread QXmlSimpleReader XMLHandler TestController TestCaseWriter Oberfläche Thread SAX DOM Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
15
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
16
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
17
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
18
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
19
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
20
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
21
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
22
Fallstudie - Szenario 1 gültige Eingaben Zeichenketten
Zeichenketten nach speziellem Schema Zahlen Buchungsdaten – Formular in Iselta Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
23
Einleitung – Realisierung – Test – Fallstudie – Fazit
Fallstudie - Szenario 1 Demonstration Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
24
Fallstudie - Szenario 1 fehlerhafte Eingabe
nicht aufgetretene Fehlermeldung Ergebnis des ersten Szenarios in Selenium Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
25
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
26
Fallstudie - Szenario 2 gültige Eingaben Zeichenketten Ganze Zahlen
Kommazahlen Hoteldaten – Formular in Iselta Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
27
Fallstudie - Szenario 2 fehlerhafte Eingabe
nicht aufgetretene Fehlermeldung Hoteldaten – Formular in Iselta Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit
28
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
29
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
30
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
31
Vielen Dank für Ihre Aufmerksamkeit!
Projektgruppe 4 Ende
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.