implementierung eines werkzeugs zur kombination von testfällen mit eingabedaten...
TRANSCRIPT
![Page 1: Implementierung eines Werkzeugs zur Kombination von Testfällen mit Eingabedaten Betreuer:Dipl.-Wirt.-Inf. Michael Linschulte Projektteam:Axel Balke Benedikt](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d7f49795902118d0a91/html5/thumbnails/31.jpg)
Ende 31
Vielen Dank für Ihre Aufmerksamkeit!
Projektgruppe 4