31
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

Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

Embed Size (px)

Citation preview

Page 1: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

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

Page 2: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

Inhaltsverzeichnis 2

Inhalt

• Einleitung• Realisierung• Test der Implementierung• Fallstudie• Fazit & Ausblick

Projektgruppe 4

Page 3: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

3

Projektdefinition

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Selenium

HTMLTestcase Template

Testdatengenerator „ETES“

Testcase generator

tool

HTML

TC1

XML

Testdaten

HTML

TC2HTML

TC3

manuelle Bearbeitung

HTMLTestcase

HTML

TC..

Page 4: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

4

Projektdefinition

Html<tr>

<td>select</td><td>arrival</td><td>label=01.11.2010</td>

</tr><tr>

<td>select</td><td>departure</td><td>label=07.11.2010</td>

</tr><tr>

<td>click</td><td>btn_submit</td><td></td>

</tr>

Xml

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

<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> </Data> ... </Actions></DTable>

<tr><td>select</td><td>arrival</td><td>$XML[Arrival]</td>

</tr><tr>

<td>select</td><td>departure</td><td>$XML[Departure].</td>

</tr><tr>

<td>click</td><td>$XML[btn_action]</td><td></td>

</tr>

<tr><td>select</td><td>arrival</td><td>$XML[Arrival]</td>

</tr><tr>

<td>select</td><td>departure</td><td>$XML[Departure].</td>

</tr><tr>

<td>click</td><td>$XML[btn_action]</td><td></td>

</tr><tr>

<td>assertAlert</td><td>Fehler</ td><td></td>

</tr>

<tr><td>select</td><td>arrival</td><td>$XML[Arrival]</td>

</tr><tr>

<td>select</td><td>departure</td><td>$XML[Departure].</td>

</tr><tr>

<td>click</td><td>$XML[btn_action]</td><td></td>

</tr>

Page 5: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

5

Designentscheidungen

• als Framework• Programmaufbau

DOMSAXThreadOberfläche

GUI ReaderThread

QXmlSimpleReader

XMLHandler TestController TestCaseWriter

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 6: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

6

Die GUI

1. Pfadangaben2. Fortschrittsbalken3. Startet die

Bearbeitung4. Beendet das

Programm5. Eingabefeld für

Errortyp6. Statistik7. Debug Ausgabe

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 7: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

7

ReaderThread

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

DOMSAXThreadOberfläche

GUI ReaderThread

QXmlSimpleReader

XMLHandler TestController TestCaseWriter

Page 8: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

8

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 & QXmlSimpleReaderProjektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 9: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

9

XML Handler

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

DOMSAXThreadOberfläche

GUI ReaderThread

QXmlSimpleReader

XMLHandler TestController TestCaseWriter

Page 10: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

10

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

Page 11: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

11

TestController

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

DOMSAXThreadOberfläche

GUI ReaderThread

QXmlSimpleReader

XMLHandler TestController TestCaseWriter

Page 12: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

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

Page 13: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

13

Klasse TestController

Funktionsweise:XML-Reader TestController

TestCase 1

TestCase 2

TestCase 3<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"> ... </Data> ... </Actions></DTable>

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

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

Page 14: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

14

Testcasewriter

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

DOMSAXThreadOberfläche

GUI ReaderThread

QXmlSimpleReader

XMLHandler TestController TestCaseWriter

Page 15: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

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

Page 16: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

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

ja

nein

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 17: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

17

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

Page 18: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

18

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

Page 19: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

19

Code Coverage

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

14 Testfälle wurden aufgestellt und durchgeführt

Page 20: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

20

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

Page 21: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

21

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

Page 22: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

22

Fallstudie - Szenario 1

Buchungsdaten – Formular in Iselta

gültige Eingaben• Zeichenketten• Zeichenketten nach

speziellem Schema• Zahlen

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 23: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

23

Fallstudie - Szenario 1

Demonstration

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 24: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

24

Fallstudie - Szenario 1

Ergebnis des ersten Szenarios in Selenium

fehlerhafte Eingabe

nicht aufgetretene

Fehlermeldung

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 25: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

25

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

Page 26: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

26

Fallstudie - Szenario 2

Hoteldaten – Formular in Iselta

gültige Eingaben• Zeichenketten• Ganze Zahlen• Kommazahlen

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 27: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

27

Fallstudie - Szenario 2

Hoteldaten – Formular in Iselta

fehlerhafte Eingabe

nicht aufgetretene

Fehlermeldung

Projektgruppe 4 Einleitung – Realisierung – Test – Fallstudie – Fazit

Page 28: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

28

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

Page 29: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

29

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

Page 30: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

30

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

Page 31: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt

Ende 31

Vielen Dank für Ihre Aufmerksamkeit!

Projektgruppe 4