3. Agenda
• Teil I - Einführung in FIT
– Testen mit Fit Tabellen
– Fit Tabellen und Applikation verknüpfen
4. Agenda
• Teil I - Einführung in FIT
– Testen mit Fit Tabellen
– Fit Tabellen und Applikation verknüpfen
• Teil II - Webapplikation testen mit Fit und Selenium
– Einführung in Selenium
– Selenium in Fit Tests nutzen (Selenium Fixture)
5. Agenda
• Teil I - Einführung in FIT
– Testen mit Fit Tabellen
– Fit Tabellen und Applikation verknüpfen
• Teil II - Webapplikation testen mit Fit und Selenium
– Einführung in Selenium
– Selenium in Fit Tests nutzen (Selenium Fixture)
• Teil III - Einführung in XMLFit
– Fitnesse – Testen mittels Wiki und Fit
– XMLFit – Fit Tests mit XML DSL entwickeln
6. Agenda
• Teil I - Einführung in FIT
– Testen mit Fit Tabellen
– Fit Tabellen und Applikation verknüpfen
• Teil II - Webapplikation testen mit Fit und Selenium
– Einführung in Selenium
– Selenium in Fit Tests nutzen (Selenium Fixture)
• Teil III - Einführung in XMLFit
– Fitnesse – Testen mittels Wiki und Fit
– XMLFit – Fit Tests mit XML DSL entwickeln
• Übungsaufgabe
8. Überblick Fit - Framework for
Integrated Tests
• FIT wurde entwickelt von Ward
Cunningham WIKI-Erfinder...
9. Überblick Fit - Framework for
Integrated Tests
• FIT wurde entwickelt von Ward
Cunningham WIKI-Erfinder...
• Motivation von Fit Tests
– Automatisierung von Akzeptanztests
mittels Tabellen
– Framework für Datengetriebene Tests
– Data-Driven-Test (xUnit Test
Patterns - Gerard Meszaros)
10. Überblick Fit - Framework for
Integrated Tests
• FIT wurde entwickelt von Ward
Cunningham WIKI-Erfinder...
• Motivation von Fit Tests
– Automatisierung von Akzeptanztests
mittels Tabellen
– Framework für Datengetriebene Tests
– Data-Driven-Test (xUnit Test
Patterns - Gerard Meszaros)
• Fit Design - Open Framework
– Beautiful Code beschreibt in „Fit
Tests- BEAUTY THROUGH FRAGILITY“
das Design von Fit als ein Open
11. Testen mit Fit Tabellen
• Fit Tests für den Beispiel Zinsrechner
12. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Betrag
10
13. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Betrag Zinssatz
10 2.5
14. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Betrag Zinssatz Laufzeit
10 2.5 2
15. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Betrag Zinssatz Laufzeit Summe
10 2.5 2 10.51
16. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Betrag Zinssatz Laufzeit Summe()
10 2.5 2 10.51
17. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Betrag Zinssatz Laufzeit Summe()
Testfall 10 2.5 2 10.51
18. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Eingehende - Werte
Betrag Zinssatz Laufzeit Summe()
Testfall 10 2.5 2 10.51
19. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Prüfung eines Ergebnis
Eingehende - Werte
Betrag Zinssatz Laufzeit Summe()
Testfall 10 2.5 2 10.51
20. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Betrag Zinssatz Laufzeit Summe()
10 2.5 2 10.51
10 10 3 25.94
10 10 10 100000
... ... ... ...
Testfälle
21. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Applikation Anbindung (Java Klasse)
Prüfung des Ergebnis
Eingehende - Werte
onlinerechner.ZinsenFixture
Betrag Zinssatz Laufzeit Summe()
10 2.5 2 10.51
10 10 3 25.94
10 10 10 100000
... ... ... ...
Testfälle
22. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
23. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Gelb =Ausnahme - Fehler im Test
24. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Gelb =Ausnahme - Fehler im Test
Grün = erfolgreicher Test
25. Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Rot = Fehler in der Anwendung
Gelb =Ausnahme - Fehler im Test
Grün = erfolgreicher Test
26. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
fit.ActionFixture
start ZinsenActionFixture
enter Betrag 10
enter Zinssatz 2,5
enter Laufzeit 2
press Submit
check Summe 10,51
27. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Befehle / Kommandos
fit.ActionFixture
start ZinsenActionFixture
enter Betrag 10
enter Zinssatz 2,5
enter Laufzeit 2
press Submit
check Summe 10,51
28. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Befehle / Kommandos
fit.ActionFixture
start ZinsenActionFixture
enter Betrag 10 Argumente
enter Zinssatz 2,5
enter Laufzeit 2
press Submit
check Summe 10,51
29. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Befehle / Kommandos
fit.ActionFixture
start ZinsenActionFixture
enter Betrag 10 Argumente
enter Zinssatz 2,5
enter Laufzeit 2
press Submit
check Summe 10,51
Objekt / Auswahl / Target
30. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Befehle / Kommandos
fit.ActionFixture
start ZinsenActionFixture
enter Betrag 10 Argumente
enter Zinssatz 2,5
Testfall
enter Laufzeit 2
press Submit
check Summe 10,51
Objekt / Auswahl / Target
31. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Befehle / Kommandos
Anbindung an die Applikation (Java)
fit.ActionFixture
start ZinsenActionFixture
enter Betrag 10 Argumente
enter Zinssatz 2,5
Testfall
enter Laufzeit 2
press Submit
check Summe 10,51
Objekt / Auswahl / Target
32. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
33. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Prüfung
34. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Eingaben
Prüfung
35. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Eingaben
Aktion - Zinsen Berechnen
Prüfung
36. Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Anwendung Starten
Eingaben
Aktion - Zinsen Berechnen
Prüfung
37. Testen mit Fit Tabellen
• Weiteres Beispiel für eine ActionFixture
Tabelle
fit.ActionFixture
start jugs.Zinsrechner
enter Betrag 0
enter Zinssatz 2,5
enter Laufzeit 0
press Submit
check Fehler Kein gültiger Betrag
check Fehler Keine gültige
Laufzeit
38. Testen mit Fit Tabellen
• Mengen testen mit RowFixture Tabellen
Jugs.TeilnehmerListe
Titel Author
Keynote - Wie ich lernte, das Johannes Link
Testen zu lieben
Glass-Box-Test zur Testsuite- Rainer Schmidberger
Optimierung
Wertvolle Unittests durch DSL Ulf Müller
orientiertes API Design
... ...
39. Testen mit Fit Tabellen
• Geordnete Listen testen mit RowFixture
Tabellen
Jugs.TeilnehmerListe
Nr Titel Author
1 Keynote - Wie ich lernte, das Testen zu Johannes Link
lieben
2 Glass-Box-Test zur Testsuite- Rainer
Optimierung Schmidberger
3 Wertvolle Unittests durch DSL Ulf Müller
orientiertes API Design
... ...
40. Testen mit Fit Tabellen
• Testen mit Sequenzen von Tabelle
Beispiel Fit Test ... fit.ActionFixture
start jugs.TestTageAnmel
enter den
name Baranows
enter Titel Fit
ki Tests
pressSubmit
Submit
chec einladung true
k
Jugs.TeilnehmerListe
Titel Author
Keynote - Wie ich lernte, Johannes Link
das Testen zu lieben
Glass-Box-Test zur Rainer Schmidberger
Testsuite-Optimierung
Ulf Müller Wertvolle Unittests durch
DSL orientiertes API Design
... ...
41. Fit Tabellen und Applikation
verknüpfen
• Fit Design – drei Klassen Framework ...
? ? ?
45. Fit Tabellen und Applikation
verknüpfen
• Beispiel - ColumnFixture
46. Fit Tabellen und Applikation
verknüpfen
• Beispiel - ColumnFixture
SUT
47. Fit Tabellen und Applikation
verknüpfen
• Beispiel - ColumnFixture
SUT
Anbindung an SUT
48. • Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture {
private Zinsen zinsen = new Zinsen();
public double betrag;
public double zinsatz;
public double laufzeit;
public double summe() {
zinsen.setBetrag(betrag);
zinsen.setLaufzeit(laufzeit);
zinsen.setZinssatz(zinsatz);
return zinsen.berechneZinsen();
}
}
49. • Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture { Basis Klasse
für
private Zinsen zinsen = new Zinsen(); Fit Extension
public double betrag;
public double zinsatz;
public double laufzeit;
public double summe() {
zinsen.setBetrag(betrag);
zinsen.setLaufzeit(laufzeit);
zinsen.setZinssatz(zinsatz);
return zinsen.berechneZinsen();
}
}
50. • Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture { Basis Klasse
für
private Zinsen zinsen = new Zinsen(); Fit Extension
public double betrag; SUT
public double zinsatz;
public double laufzeit;
public double summe() {
zinsen.setBetrag(betrag);
zinsen.setLaufzeit(laufzeit);
zinsen.setZinssatz(zinsatz);
return zinsen.berechneZinsen();
}
}
51. • Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture { Basis Klasse
für
private Zinsen zinsen = new Zinsen(); Fit Extension
public double betrag; SUT
public double zinsatz;
public double laufzeit; Eingehende - Werte
public double summe() {
zinsen.setBetrag(betrag);
zinsen.setLaufzeit(laufzeit);
zinsen.setZinssatz(zinsatz);
return zinsen.berechneZinsen();
}
}
52. • Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture { Basis Klasse
für
private Zinsen zinsen = new Zinsen(); Fit Extension
public double betrag; SUT
public double zinsatz;
public double laufzeit; Eingehende - Werte
public double summe() { Prüfung - Ausgabe
zinsen.setBetrag(betrag);
zinsen.setLaufzeit(laufzeit);
zinsen.setZinssatz(zinsatz);
return zinsen.berechneZinsen();
}
}
53. • Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture { Basis Klasse
für
private Zinsen zinsen = new Zinsen(); Fit Extension
public double betrag; SUT
public double zinsatz;
public double laufzeit; Eingehende - Werte
public double summe() { Prüfung - Ausgabe
zinsen.setBetrag(betrag);
zinsen.setLaufzeit(laufzeit);
zinsen.setZinssatz(zinsatz); Anbindung
return zinsen.berechneZinsen(); an SUT
}
}
54. Fit Tabellen und Applikation
verknüpfen
• Beispiel - ActionFixture entwickeln
fit.ActionFixture
start onlinerechner.ZinsenActionFixtu
enter re
Betrag 10
enter Zinssatz 2,5
enter Laufzeit 2
press berechneZinsen
check Summe 10,51
55. Fit Tabellen und Applikation
verknüpfen
• Beispiel - ActionFixture entwickeln
fit.ActionFixture GOF - Dekorierer-Muster
start onlinerechner.ZinsenActionFixtu
enter re
Betrag 10
enter Zinssatz 2,5
enter Laufzeit 2
press berechneZinsen
check Summe 10,51
56. Fit Tabellen und Applikation
verknüpfen
• Beispiel - ActionFixture entwickeln
57. • Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
Zinsen zinsen = new Zinsen();
double summe;
public void betrag(double betrag) {
zinsen.setBetrag(betrag);
}
…
public void berechneZinsen() {
summe = zinsen.berechneZinsen();
}
public double summe() {
return summe;
}
}
58. • Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
Zinsen zinsen = new Zinsen();
double summe;
public void betrag(double betrag) {
zinsen.setBetrag(betrag); Eingaben / Enter
}
…
public void berechneZinsen() {
summe = zinsen.berechneZinsen();
}
public double summe() {
return summe;
}
}
59. • Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
Zinsen zinsen = new Zinsen();
double summe;
public void betrag(double betrag) {
zinsen.setBetrag(betrag); Eingaben / Enter
}
…
public void berechneZinsen() { Aktion / Press
summe = zinsen.berechneZinsen();
}
public double summe() {
return summe;
}
}
60. • Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
Zinsen zinsen = new Zinsen();
double summe;
public void betrag(double betrag) {
zinsen.setBetrag(betrag); Eingaben / Enter
}
…
public void berechneZinsen() { Aktion / Press
summe = zinsen.berechneZinsen();
}
public double summe() {
return summe; Ausgabe Prüfung / Check
}
}
61. Fit Tabellen und Applikation
verknüpfen
• Fixture dekorieren
fit.AliasFixture
mappin mappingAlias.xml
start
g fit.ActionFixture
start Login
enter username baranowski
enter password test
enter frageNochmal Nein
press login
check login sucessfull true
62. Fit Tabellen und Applikation
verknüpfen
• Fixture dekorieren
GOF - Dekorierer-Muster
fit.AliasFixture
mappin mappingAlias.xml
start
g fit.ActionFixture
start Login
enter username baranowski
enter password test
enter frageNochmal Nein
press login
check login sucessfull true
63. Fit Tabellen und Applikation
verknüpfen
fit.AliasFixture
• Fixture dekorieren mappin mappingAlias.xml
g
start fit.ActionFixture
start Login
enter username baranowski
:AliasFixture enter password test
enter frageNochmal Nein
press login
check login sucessfull true
64. Fit Tabellen und Applikation
verknüpfen
fit.AliasFixture
• Fixture dekorieren mappin mappingAlias.xml
g
start fit.ActionFixture
Erster Start und mapping Methoden start Login
enter username baranowski
:AliasFixture enter password test
enter frageNochmal Nein
press login
check login sucessfull true
:ActionFixture
65. Fit Tabellen und Applikation
verknüpfen
fit.AliasFixture
• Fixture dekorieren mappin mappingAlias.xml
g
start fit.ActionFixture
Erster Start und mapping Methoden start Login
enter username baranowski
:AliasFixture enter password test
enter frageNochmal Nein
press login
check login sucessfull true
:ActionFixture
Zweiter Start
:Login
66. Fit Tabellen und Applikation
verknüpfen
fit.AliasFixture
• Fixture dekorieren mappin mappingAlias.xml
g
start fit.ActionFixture
Erster Start und mapping Methoden start Login
enter username baranowski
:AliasFixture enter password test
enter frageNochmal Nein
press login
check login sucessfull true
:ActionFixture
Zweiter Start
:Login Eigenes Fixture
username,
password...
67. Fit Test Abdeckung
• Statement Coverage
• Branch Coverage
• Werkzeuge
– Emma
– Cobertura
69. Agenda
• Teil I - Einführung FIT
– Testen mit Fit Tabellen
– Fit Tabellen und Applikation verknüpfen
• Teil II - Webapplikation testen Fit und
Selenium
– Einführung in Selenium
– Selenium in Fit Tests nutzen (Selenium Fixture)
• Teil III - Einführung in XMLFit
– Fitnesse – Testen mittels Wiki und Fit
– XMLFit – Fit Tests mit XML DSL entwickeln
71. Selenium Core
• Selenium Core - Beispiel Zinsrechner
open /JugsBase/zinsrechner.jsp
type betrag 20.0
type zinsatz 22.0
type laufzeit 100.0
clickAndWait submit
assertTextPrese 8649939365.27 Euro
nt
72. Selenium Core
• Selenium Core - Beispiel Zinsrechner
Action - Tabelle
Selenium Befehl
open /JugsBase/zinsrechner.jsp
type betrag 20.0
type zinsatz 22.0 Argumente
type laufzeit 100.0
clickAndWait submit Target
assertTextPrese 8649939365.27 Euro
nt
74. Selenium Remote Control
Selenium Server
Browser
Firefox, IE
Selenium Core
JAVA,
PHP...
SUT
HTTP Proxy
Webapplikation
75. Selenium Remote Control
• Selenium RC- JUnit Beispiel Zinsrechner
@Test
public void testZinsenBerechnen() throws Exception {
selenium.open("/JugsBase/zinsrechner.jsp");
selenium.type("betrag", "10.0");
selenium.type("zinssatz", "10.0");
selenium.type("laufzeit", "5.0");
selenium.click("submit");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("16.11 Euro"));
}
76. Selenium Remote Control
• Fit und Selenium RC mittels allgemeinem
Selenium Fixture
fit. SeleniumFixture
open /JugsBase/zinsrechner.jsp
type betrag 10.0
type zinssatz 10.0
type laufzeit 5.0
clickAndWait submit
assertTextPrese 16.11 Euro
nt
77. Selenium Remote Control
• Selenium RC- Selenium Fixture für Fit
...
public void type(Argument selektor, Argument arg) throws
Exception {
try
{
selenium.type(selektor.text(), arg.text());
} catch(Exception e) {
exception(selektor, e);
return;
}
right(selektor); right(arg);
}
...
78. Selenium Remote Control
• Selenium RC in Fit Fixture – Beispiel
ColumnFixture
onlinerechner.SeleniumZinsenFixtur
e etrag Zinssatz Laufzeit Summe()
B
10 2,5 2 10,51
10 10 3 25,94
20 10 10 100000
... ... ... ...
79. Selenium Remote Control
• Selenium RC- Fit Beispiel Zinsrechner
...
public String summe() {
selenium.open("/JugsBase/zinsrechner.jsp");
selenium.type("betrag", String.valueOf(betrag));
selenium.type("zinssatz", String.valueOf(zinssatz));
selenium.type("laufzeit", String.valueOf(laufzeit));
selenium.click("submit");
selenium.waitForPageToLoad("30000");
String summe = selenium.getText(
"//table[@id='zinsergebnis']//tr[4]/td[2]");
return summe;
}
...
80. Agenda
• Teil I - Einführung FIT
– Testen mit Fit Tabellen
– Fit Tabellen und Applikation verknüpfen
• Teil II - Webapplikation testen Fit und
Selenium
– Einführung in Selenium
– Selenium in Fit Tests nutzen (Selenium Fixture)
• Teil III - Einführung in XMLFit
– Fitnesse – Testen mittels Wiki und Fit
– XMLFit – Fit Tests mit XML DSL entwickeln
83. Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
– Nachvollziehbarkeit: Testdaten und
Testablauf sind nicht getrennt!
84. Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
– Nachvollziehbarkeit: Testdaten und
Testablauf sind nicht getrennt!
– Lesbarkeit: Tests können von der
Fachabteilung verstanden werden und mit
formuliert werden...
85. Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
– Nachvollziehbarkeit: Testdaten und
Testablauf sind nicht getrennt!
– Lesbarkeit: Tests können von der
Fachabteilung verstanden werden und mit
formuliert werden...
– Tests können zur Kommunikation mit dem
Kunden dienen
86. Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
– Nachvollziehbarkeit: Testdaten und
Testablauf sind nicht getrennt!
– Lesbarkeit: Tests können von der
Fachabteilung verstanden werden und mit
formuliert werden...
– Tests können zur Kommunikation mit dem
Kunden dienen
– Plattformunabhängig: Testlogik
(Implementierung) ist Plattformunabhängig
87. Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
– Nachvollziehbarkeit: Testdaten und
Testablauf sind nicht getrennt!
– Lesbarkeit: Tests können von der
Fachabteilung verstanden werden und mit
formuliert werden...
– Tests können zur Kommunikation mit dem
Kunden dienen
– Plattformunabhängig: Testlogik
(Implementierung) ist Plattformunabhängig
– Testergebnis kann direkt als Testprotokoll
genutzt werden
90. Einführung in XMLFit
• Nachteile von Fit als Motivation
– Tests mittels HTML formulieren ist sehr
umständlich und unübersichtlich
91. Einführung in XMLFit
• Nachteile von Fit als Motivation
– Tests mittels HTML formulieren ist sehr
umständlich und unübersichtlich
– HTML mittels WYSIWYG schwierig
92. Einführung in XMLFit
• Nachteile von Fit als Motivation
– Tests mittels HTML formulieren ist sehr
umständlich und unübersichtlich
– HTML mittels WYSIWYG schwierig
– Wiederverwendbare Komponenten, z.B. Login,
nicht einfach möglich
93. Einführung in XMLFit
• Nachteile von Fit als Motivation
– Tests mittels HTML formulieren ist sehr
umständlich und unübersichtlich
– HTML mittels WYSIWYG schwierig
– Wiederverwendbare Komponenten, z.B. Login,
nicht einfach möglich
– Testabläufe mit verschiedenen Testdaten nicht
einfach modellierbar
94. Einschub – Überblick Fitnesse
• Fitnesse – Testen mittels Wiki und Fit
|ZinsenTestFixture|
|betrag|zinsatz|laufzeit|summe?|
|10|2.5|2|10.50625|
|10|2.5|2|10|
95. Einschub – Überblick Fitnesse
• Fitnesse – Testen mittels Wiki und Fit
Column-Fixture-Tabelle
|ZinsenTestFixture|
|betrag|zinsatz|laufzeit|summe?|
|10|2.5|2|10.50625|
|10|2.5|2|10|
96. Einschub – Überblick Fitnesse
• Fitnesse – Testen mittels Wiki und Fit
Column-Fixture-Tabelle
|ZinsenTestFixture|
|betrag|zinsatz|laufzeit|summe?|
|10|2.5|2|10.50625|
|10|2.5|2|10|
...Etwas unübersichtlich bei vielen Daten ...
100. Einschub – Überblick Fitnesse
• Vorteile von Fitnesse
– DSL für HTML Tests einfacher klassische HTML
Fit Tests
101. Einschub – Überblick Fitnesse
• Vorteile von Fitnesse
– DSL für HTML Tests einfacher klassische HTML
Fit Tests
– WIKI, kann von verteilten Teams genutzt
werden
102. Einschub – Überblick Fitnesse
• Vorteile von Fitnesse
– DSL für HTML Tests einfacher klassische HTML
Fit Tests
– WIKI, kann von verteilten Teams genutzt
werden
– Test Komponenten durch Page include
105. Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
– Debugging der Fixture und der Tests nur remote
möglich
106. Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
– Debugging der Fixture und der Tests nur remote
möglich
– Fixture bereitstellen
107. Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
– Debugging der Fixture und der Tests nur remote
möglich
– Fixture bereitstellen
– Kein so einfacher Test Report der archiviert
werden kann
108. Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
– Debugging der Fixture und der Tests nur remote
möglich
– Fixture bereitstellen
– Kein so einfacher Test Report der archiviert
werden kann
– Hosting von Fitnesse
109. Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
– Debugging der Fixture und der Tests nur remote
möglich
– Fixture bereitstellen
– Kein so einfacher Test Report der archiviert
werden kann
– Hosting von Fitnesse
– Testabdeckung kann nur schwierig gemessen
werden
110. Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
– Debugging der Fixture und der Tests nur remote
möglich
– Fixture bereitstellen
– Kein so einfacher Test Report der archiviert
werden kann
– Hosting von Fitnesse
– Testabdeckung kann nur schwierig gemessen
werden
– Für Daten getriebene Entwicklertests /
Komponententests nicht geeignet
116. Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
Tests
– DSL aus der die HTML Tests generiert werden
117. Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
Tests
– DSL aus der die HTML Tests generiert werden
– XML da gute Tool-Unterstützung
118. Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
Tests
– DSL aus der die HTML Tests generiert werden
– XML da gute Tool-Unterstützung
– Aus Testdaten mehre Fit Tests generieren über
Variablen und DatenSets
119. Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
Tests
– DSL aus der die HTML Tests generiert werden
– XML da gute Tool-Unterstützung
– Aus Testdaten mehre Fit Tests generieren über
Variablen und DatenSets
– Simpler Ansatz zur Testerzeugung
120. Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
Tests
– DSL aus der die HTML Tests generiert werden
– XML da gute Tool-Unterstützung
– Aus Testdaten mehre Fit Tests generieren über
Variablen und DatenSets
– Simpler Ansatz zur Testerzeugung
– Dateibasierter Ansatz - XMLFit Tests können
mittel SVN oder CVS verwaltet werden...
121. XMLFit Design
• Version 0.0.1
– XSLT basierende Transformation
• Version 0.0.2
– OAW basierende Transformation
XSL Meta
Modell
XML FIT
HTML
OAW
XML Modell
130. Agenda
• Teil I - Einführung FIT
– Testen mit Fit Tabellen
– Fit Tabellen und Applikation verknüpfen
• Teil II - Webapplikation testen Fit und
Selenium
– Einführung in Selenium
– Selenium in Fit Tests nutzen (Selenium Fixture)
• Teil III - Einführung in XMLFit
– Fitnesse – Testen mittels Wiki und Fit
– XMLFit – Fit Tests mit XML DSL entwickeln
• Übungsaufgabe
131. Einführung in Übungsaufgabe
• Eclipse Projekt einrichten mit Maven
„mvn eclipse:eclipse“
• XMLFit Tests oder Fit Tests ausführen mit
„mvn test“
• Firefox Selenium IDE einrichten
• Selenium RC Server starten
• ...