Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Modellgetriebene FIT-Tests
                am Beispiel XMLFit
               Test Tage 2009


 XMLFit


FIT Selenium
Agenda
Agenda
• Teil I - Einführung in FIT
   – Testen mit Fit Tabellen
   – Fit Tabellen und Applikation verknüpfen
Agenda
• Teil I - Einführung in FIT
   – Testen mit Fit Tabellen
   – Fit Tabellen und Applikation verknüpfen

• Teil II -...
Agenda
• Teil I - Einführung in FIT
   – Testen mit Fit Tabellen
   – Fit Tabellen und Applikation verknüpfen

• Teil II -...
Agenda
• Teil I - Einführung in FIT
   – Testen mit Fit Tabellen
   – Fit Tabellen und Applikation verknüpfen

• Teil II -...
Überblick Fit - Framework for
      Integrated Tests
Überblick Fit - Framework for
         Integrated Tests
• FIT wurde entwickelt von Ward
  Cunningham WIKI-Erfinder...
Überblick Fit - Framework for
         Integrated Tests
• FIT wurde entwickelt von Ward
  Cunningham WIKI-Erfinder...
• Mot...
Überblick Fit - Framework for
         Integrated Tests
• FIT wurde entwickelt von Ward
  Cunningham WIKI-Erfinder...
• Mot...
Testen mit Fit Tabellen
• Fit Tests für den Beispiel Zinsrechner
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle



     Betrag
       10
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle



     Betrag       Zinssatz
       10            2.5
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle



    Betrag      Zinssatz    Laufzeit
      10          2....
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle



   Betrag   Zinssatz Laufzeit Summe
     10       2.5    ...
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle




   Betrag   Zinssatz Laufzeit Summe()
     10       2.5 ...
Testen mit Fit Tabellen
   • Fit Tests als ColumnFixture Tabelle




           Betrag   Zinssatz Laufzeit Summe()
Testfal...
Testen mit Fit Tabellen
   • Fit Tests als ColumnFixture Tabelle

      Eingehende - Werte


           Betrag   Zinssatz ...
Testen mit Fit Tabellen
   • Fit Tests als ColumnFixture Tabelle

                                   Prüfung eines Ergebni...
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle


   Betrag     Zinssatz Laufzeit Summe()
     10         2....
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
 Applikation Anbindung (Java Klasse)
                       ...
Testen mit Fit Tabellen
• Fit Tests als ColumnFixture Tabelle
Testen mit Fit Tabellen
 • Fit Tests als ColumnFixture Tabelle




Gelb =Ausnahme - Fehler im Test
Testen mit Fit Tabellen
 • Fit Tests als ColumnFixture Tabelle




Gelb =Ausnahme - Fehler im Test
                       ...
Testen mit Fit Tabellen
 • Fit Tests als ColumnFixture Tabelle
                             Rot = Fehler in der Anwendung
...
Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle

     fit.ActionFixture
     start     ZinsenActionFixture
   ...
Testen mit Fit Tabellen
 • Fit Test als ActionFixture Tabelle
Befehle / Kommandos
        fit.ActionFixture
        start  ...
Testen mit Fit Tabellen
 • Fit Test als ActionFixture Tabelle
Befehle / Kommandos
        fit.ActionFixture
        start  ...
Testen mit Fit Tabellen
 • Fit Test als ActionFixture Tabelle
Befehle / Kommandos
        fit.ActionFixture
        start  ...
Testen mit Fit Tabellen
   • Fit Test als ActionFixture Tabelle
Befehle / Kommandos
           fit.ActionFixture
          ...
Testen mit Fit Tabellen
   • Fit Test als ActionFixture Tabelle
Befehle / Kommandos
                          Anbindung an...
Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle
Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle




                         Prüfung
Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle



                         Eingaben




                    ...
Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle



                         Eingaben


                      ...
Testen mit Fit Tabellen
• Fit Test als ActionFixture Tabelle


                         Anwendung Starten

               ...
Testen mit Fit Tabellen
• Weiteres Beispiel für eine ActionFixture
  Tabelle
 fit.ActionFixture
 start      jugs.Zinsrechne...
Testen mit Fit Tabellen
      • Mengen testen mit RowFixture Tabellen
Jugs.TeilnehmerListe

Titel                         ...
Testen mit Fit Tabellen
    • Geordnete Listen testen mit RowFixture
      Tabellen

Jugs.TeilnehmerListe

Nr    Titel    ...
Testen mit Fit Tabellen
• Testen mit Sequenzen von Tabelle
 Beispiel Fit Test ... fit.ActionFixture
                      ...
Fit Tabellen und Applikation
             verknüpfen
• Fit Design – drei Klassen Framework ...




          ?           ?...
• Fit Design – drei Klassen Framework
Fit Tabellen und Applikation
             verknüpfen
• Fit Design – Fixtures
Fit Tabellen und Applikation
             verknüpfen
• Beispiel - ColumnFixture entwickeln

   onlinerechner.ZinsenFixture...
Fit Tabellen und Applikation
             verknüpfen
• Beispiel - ColumnFixture
Fit Tabellen und Applikation
             verknüpfen
• Beispiel - ColumnFixture

                              SUT
Fit Tabellen und Applikation
             verknüpfen
• Beispiel - ColumnFixture

                                 SUT
    ...
• Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture {

       private Zinsen zinsen = new Zin...
• Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture {   Basis Klasse
                        ...
• Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture {   Basis Klasse
                        ...
• Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture {   Basis Klasse
                        ...
• Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture {   Basis Klasse
                        ...
• Beispiel Code - ColumnFixture
public class ZinsenFixture extends ColumnFixture {   Basis Klasse
                        ...
Fit Tabellen und Applikation
             verknüpfen
• Beispiel - ActionFixture entwickeln

 fit.ActionFixture
 start    on...
Fit Tabellen und Applikation
             verknüpfen
• Beispiel - ActionFixture entwickeln

 fit.ActionFixture    GOF - Dek...
Fit Tabellen und Applikation
             verknüpfen
• Beispiel - ActionFixture entwickeln
• Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
       Zinsen zinsen = new Zinsen();
  ...
• Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
       Zinsen zinsen = new Zinsen();
  ...
• Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
       Zinsen zinsen = new Zinsen();
  ...
• Beispiel Code - ActionFixture
public class ZinsenActionFixture extends Fixture {
       Zinsen zinsen = new Zinsen();
  ...
Fit Tabellen und Applikation
              verknüpfen
• Fixture dekorieren
 fit.AliasFixture
 mappin mappingAlias.xml
 star...
Fit Tabellen und Applikation
              verknüpfen
• Fixture dekorieren
                        GOF - Dekorierer-Muster...
Fit Tabellen und Applikation
              verknüpfen
                       fit.AliasFixture

• Fixture dekorieren   mappi...
Fit Tabellen und Applikation
               verknüpfen
                                      fit.AliasFixture

• Fixture de...
Fit Tabellen und Applikation
                verknüpfen
                                      fit.AliasFixture

• Fixture d...
Fit Tabellen und Applikation
                verknüpfen
                                      fit.AliasFixture

• Fixture d...
Fit Test Abdeckung
• Statement Coverage
• Branch Coverage

• Werkzeuge
  – Emma
  – Cobertura
Fit Test Abdeckung
Agenda
• Teil I - Einführung FIT
  – Testen mit Fit Tabellen
  – Fit Tabellen und Applikation verknüpfen

• Teil II - Weba...
Einführung in Selenium

      Selenium Core




Selenium         Selenium RC
   IDE
Selenium Core
• Selenium Core - Beispiel Zinsrechner


open            /JugsBase/zinsrechner.jsp
type            betrag   ...
Selenium Core
• Selenium Core - Beispiel Zinsrechner
                   Action - Tabelle
Selenium Befehl
open            /...
Selenium IDE
• Selenium IDE-
  Capture &
  Replay Tests


    Action Tabelle
Selenium Remote Control

              Selenium Server
                                   Browser
                        ...
Selenium Remote Control
• Selenium RC- JUnit Beispiel Zinsrechner

@Test
public void testZinsenBerechnen() throws Exceptio...
Selenium Remote Control
• Fit und Selenium RC mittels allgemeinem
  Selenium Fixture
fit. SeleniumFixture
open            /...
Selenium Remote Control
• Selenium RC- Selenium Fixture für Fit
...
public void type(Argument selektor, Argument arg) thro...
Selenium Remote Control
• Selenium RC in Fit Fixture – Beispiel
  ColumnFixture

 onlinerechner.SeleniumZinsenFixtur
 e et...
Selenium Remote Control
• Selenium RC- Fit Beispiel Zinsrechner
...
public String summe() {
        selenium.open("/JugsBa...
Agenda
• Teil I - Einführung FIT
  – Testen mit Fit Tabellen
  – Fit Tabellen und Applikation verknüpfen

• Teil II - Weba...
Einführung in XMLFit
Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
  – Nachvollziehbarkeit: Testdaten und
    Testablauf sind...
Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
  – Nachvollziehbarkeit: Testdaten und
    Testablauf sind...
Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
  – Nachvollziehbarkeit: Testdaten und
    Testablauf sind...
Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
  – Nachvollziehbarkeit: Testdaten und
    Testablauf sind...
Einführung in XMLFit
• Warum Fit als Framework für Systemtests?
  – Nachvollziehbarkeit: Testdaten und
    Testablauf sind...
Einführung in XMLFit
Einführung in XMLFit
• Nachteile von Fit als Motivation
Einführung in XMLFit
• Nachteile von Fit als Motivation
  – Tests mittels HTML formulieren ist sehr
    umständlich und un...
Einführung in XMLFit
• Nachteile von Fit als Motivation
  – Tests mittels HTML formulieren ist sehr
    umständlich und un...
Einführung in XMLFit
• Nachteile von Fit als Motivation
  – Tests mittels HTML formulieren ist sehr
    umständlich und un...
Einführung in XMLFit
• Nachteile von Fit als Motivation
  – Tests mittels HTML formulieren ist sehr
    umständlich und un...
Einschub – Überblick Fitnesse
• Fitnesse – Testen mittels Wiki und Fit


 |ZinsenTestFixture|
 |betrag|zinsatz|laufzeit|su...
Einschub – Überblick Fitnesse
• Fitnesse – Testen mittels Wiki und Fit
 Column-Fixture-Tabelle

 |ZinsenTestFixture|
 |bet...
Einschub – Überblick Fitnesse
• Fitnesse – Testen mittels Wiki und Fit
 Column-Fixture-Tabelle

 |ZinsenTestFixture|
 |bet...
Einschub – Überblick Fitnesse
Einschub – Überblick Fitnesse
Einschub – Überblick Fitnesse
• Vorteile von Fitnesse
Einschub – Überblick Fitnesse
• Vorteile von Fitnesse
  – DSL für HTML Tests einfacher klassische HTML
    Fit Tests
Einschub – Überblick Fitnesse
• Vorteile von Fitnesse
  – DSL für HTML Tests einfacher klassische HTML
    Fit Tests
  – W...
Einschub – Überblick Fitnesse
• Vorteile von Fitnesse
  – DSL für HTML Tests einfacher klassische HTML
    Fit Tests
  – W...
Einschub – Überblick Fitnesse
Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
  – Debugging der Fixture und der Tests nur remote
    möglich
Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
  – Debugging der Fixture und der Tests nur remote
    möglich
  – ...
Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
  – Debugging der Fixture und der Tests nur remote
    möglich
  – ...
Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
  – Debugging der Fixture und der Tests nur remote
    möglich
  – ...
Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
  – Debugging der Fixture und der Tests nur remote
    möglich
  – ...
Einschub – Überblick Fitnesse
• Nachteile von Fitnesse
  – Debugging der Fixture und der Tests nur remote
    möglich
  – ...
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests




                     XML Model
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests                    FIT Tests




                    ...
Einführung in XMLFit
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests
  – DSL aus der die HTML Tests generiert werden
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests
  – DSL aus der die HTML Tests generiert werden
  – X...
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests
  – DSL aus der die HTML Tests generiert werden
  – X...
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests
  – DSL aus der die HTML Tests generiert werden
  – X...
Einführung in XMLFit
• XMLFit einen XML basierte DSL für Fit
  Tests
  – DSL aus der die HTML Tests generiert werden
  – X...
XMLFit Design
• Version 0.0.1
   – XSLT basierende Transformation
• Version 0.0.2
   – OAW basierende Transformation

 XSL...
Einführung in XMLFit
• Einfaches Beispiel Zinsrechner:
Einführung in XMLFit
• Einfaches Beispiel Zinsrechner:
   <actionFixture type="fit.SeleniumFixture">
           <command n...
Einführung in XMLFit
• Einfaches Beispiel Zinsrechner:

...
<test id="001" name="Zinsen">
        <testStep file="example-...
Einführung in XMLFit
• Beispiel Zinsrechner mit getrennten
  Testdaten:
<actionFixture type="fit.SeleniumFixture">
...
   ...
• Beispiel Zinsrechner mit getrennten
  Testdaten:
<test id="002" name="Zinsen">
         <testStep file="example-zinsrech...
Einführung in XMLFit
• Beispiel Zinsrechner mit getrennten
  Testdaten:
...
<test id="002" name="Zinsen">
         <testSt...
Einführung in XMLFit
• Beispiel Zinsrechner mit getrennten
  Testdaten:
<data>
          <dataSet>
                 <betra...
Einführung in XMLFit
• Mehre Tests als Tabellen Sequenzen aus
  Daten generieren
<test id="004" name="Zinsen">
         <t...
Agenda
• Teil I - Einführung FIT
  – Testen mit Fit Tabellen
  – Fit Tabellen und Applikation verknüpfen

• Teil II - Weba...
Einführung in Übungsaufgabe
• Eclipse Projekt einrichten mit Maven
  „mvn eclipse:eclipse“
• XMLFit Tests oder Fit Tests a...
Fragen & Diskussion




        ?
Referenzen

• Fit for Developing
  Software - Rick
  Mugridge und Ward
  Cunningham
Referenzen
• xUnit Test Patterns
  (Refactoring Test
  Code)- Gerard
  Meszaros
Referenzen

• Beautiful Code -
  Michael Feathers:
  Framework for
  Integrated Test: Beauty
  through Fragility, et al.
Werkzeuge
Links zu Werkzeugen:
  FIT - http://fit.c2.com/
  Selenium - http://seleniumhq.org/
  JUnit 4.X - http://www.juni...
Upcoming SlideShare
Loading in …5
×

2009 - Modell getriebene fit tests

851 views

Published on

A german talk about FIT.

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

2009 - Modell getriebene fit tests

  1. 1. Modellgetriebene FIT-Tests am Beispiel XMLFit Test Tage 2009 XMLFit FIT Selenium
  2. 2. Agenda
  3. 3. Agenda • Teil I - Einführung in FIT – Testen mit Fit Tabellen – Fit Tabellen und Applikation verknüpfen
  4. 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. 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. 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
  7. 7. Überblick Fit - Framework for Integrated Tests
  8. 8. Überblick Fit - Framework for Integrated Tests • FIT wurde entwickelt von Ward Cunningham WIKI-Erfinder...
  9. 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. 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. 11. Testen mit Fit Tabellen • Fit Tests für den Beispiel Zinsrechner
  12. 12. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Betrag 10
  13. 13. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Betrag Zinssatz 10 2.5
  14. 14. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Betrag Zinssatz Laufzeit 10 2.5 2
  15. 15. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Betrag Zinssatz Laufzeit Summe 10 2.5 2 10.51
  16. 16. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Betrag Zinssatz Laufzeit Summe() 10 2.5 2 10.51
  17. 17. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Betrag Zinssatz Laufzeit Summe() Testfall 10 2.5 2 10.51
  18. 18. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Eingehende - Werte Betrag Zinssatz Laufzeit Summe() Testfall 10 2.5 2 10.51
  19. 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. 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. 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. 22. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle
  23. 23. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Gelb =Ausnahme - Fehler im Test
  24. 24. Testen mit Fit Tabellen • Fit Tests als ColumnFixture Tabelle Gelb =Ausnahme - Fehler im Test Grün = erfolgreicher Test
  25. 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. 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. 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. 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. 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. 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. 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. 32. Testen mit Fit Tabellen • Fit Test als ActionFixture Tabelle
  33. 33. Testen mit Fit Tabellen • Fit Test als ActionFixture Tabelle Prüfung
  34. 34. Testen mit Fit Tabellen • Fit Test als ActionFixture Tabelle Eingaben Prüfung
  35. 35. Testen mit Fit Tabellen • Fit Test als ActionFixture Tabelle Eingaben Aktion - Zinsen Berechnen Prüfung
  36. 36. Testen mit Fit Tabellen • Fit Test als ActionFixture Tabelle Anwendung Starten Eingaben Aktion - Zinsen Berechnen Prüfung
  37. 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. 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. 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. 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. 41. Fit Tabellen und Applikation verknüpfen • Fit Design – drei Klassen Framework ... ? ? ?
  42. 42. • Fit Design – drei Klassen Framework
  43. 43. Fit Tabellen und Applikation verknüpfen • Fit Design – Fixtures
  44. 44. Fit Tabellen und Applikation verknüpfen • Beispiel - ColumnFixture entwickeln onlinerechner.ZinsenFixture Betrag Zinssatz Laufzeit Summe() 10 2,5 2 10,51 10 10 3 25,94 20 10 10 100000 ... ... ... ...
  45. 45. Fit Tabellen und Applikation verknüpfen • Beispiel - ColumnFixture
  46. 46. Fit Tabellen und Applikation verknüpfen • Beispiel - ColumnFixture SUT
  47. 47. Fit Tabellen und Applikation verknüpfen • Beispiel - ColumnFixture SUT Anbindung an SUT
  48. 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. 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. 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. 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. 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. 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. 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. 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. 56. Fit Tabellen und Applikation verknüpfen • Beispiel - ActionFixture entwickeln
  57. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 67. Fit Test Abdeckung • Statement Coverage • Branch Coverage • Werkzeuge – Emma – Cobertura
  68. 68. Fit Test Abdeckung
  69. 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
  70. 70. Einführung in Selenium Selenium Core Selenium Selenium RC IDE
  71. 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. 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
  73. 73. Selenium IDE • Selenium IDE- Capture & Replay Tests Action Tabelle
  74. 74. Selenium Remote Control Selenium Server Browser Firefox, IE Selenium Core JAVA, PHP... SUT HTTP Proxy Webapplikation
  75. 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. 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. 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. 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. 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. 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
  81. 81. Einführung in XMLFit
  82. 82. Einführung in XMLFit • Warum Fit als Framework für Systemtests?
  83. 83. Einführung in XMLFit • Warum Fit als Framework für Systemtests? – Nachvollziehbarkeit: Testdaten und Testablauf sind nicht getrennt!
  84. 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. 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. 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. 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
  88. 88. Einführung in XMLFit
  89. 89. Einführung in XMLFit • Nachteile von Fit als Motivation
  90. 90. Einführung in XMLFit • Nachteile von Fit als Motivation – Tests mittels HTML formulieren ist sehr umständlich und unübersichtlich
  91. 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. 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. 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. 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. 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. 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 ...
  97. 97. Einschub – Überblick Fitnesse
  98. 98. Einschub – Überblick Fitnesse
  99. 99. Einschub – Überblick Fitnesse • Vorteile von Fitnesse
  100. 100. Einschub – Überblick Fitnesse • Vorteile von Fitnesse – DSL für HTML Tests einfacher klassische HTML Fit Tests
  101. 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. 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
  103. 103. Einschub – Überblick Fitnesse
  104. 104. Einschub – Überblick Fitnesse • Nachteile von Fitnesse
  105. 105. Einschub – Überblick Fitnesse • Nachteile von Fitnesse – Debugging der Fixture und der Tests nur remote möglich
  106. 106. Einschub – Überblick Fitnesse • Nachteile von Fitnesse – Debugging der Fixture und der Tests nur remote möglich – Fixture bereitstellen
  107. 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. 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. 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. 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
  111. 111. Einführung in XMLFit • XMLFit einen XML basierte DSL für Fit Tests
  112. 112. Einführung in XMLFit • XMLFit einen XML basierte DSL für Fit Tests XML Model
  113. 113. Einführung in XMLFit • XMLFit einen XML basierte DSL für Fit Tests FIT Tests XML Model
  114. 114. Einführung in XMLFit
  115. 115. Einführung in XMLFit • XMLFit einen XML basierte DSL für Fit Tests
  116. 116. Einführung in XMLFit • XMLFit einen XML basierte DSL für Fit Tests – DSL aus der die HTML Tests generiert werden
  117. 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. 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. 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. 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. 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
  122. 122. Einführung in XMLFit • Einfaches Beispiel Zinsrechner:
  123. 123. Einführung in XMLFit • Einfaches Beispiel Zinsrechner: <actionFixture type="fit.SeleniumFixture"> <command name="open"> <target>/JugsBase/zinsrechner.jsp</target> </command> <command name="type"> <target>betrag</target> <value>5.0</value> </command> ... <command name="assertTextPresent"> <target>25.94 Euro</target> </command> </actionFixture>
  124. 124. Einführung in XMLFit • Einfaches Beispiel Zinsrechner: ... <test id="001" name="Zinsen"> <testStep file="example-zinsrechner.xml" /> </test> ...
  125. 125. Einführung in XMLFit • Beispiel Zinsrechner mit getrennten Testdaten: <actionFixture type="fit.SeleniumFixture"> ... <command name="type"> <target>betrag</target> <value>${betrag}</value> </command> ... </actionFixture>
  126. 126. • Beispiel Zinsrechner mit getrennten Testdaten: <test id="002" name="Zinsen"> <testStep file="example-zinsrechner2.xml"> <property name="betrag" value="10"/> <property name="zinssatz" value="5"/> <property name="laufzeit" value="10"/> <property name="summe" value="24"/> </testStep> <testStep file="example-zinsrechner2.xml"> <property name="betrag" value="20"/> <property name="zinssatz" value="50"/> <property name="laufzeit" value="110"/> <property name="summe" value="241"/> </testStep> </test>
  127. 127. Einführung in XMLFit • Beispiel Zinsrechner mit getrennten Testdaten: ... <test id="002" name="Zinsen"> <testStep file="example-zinsrechner2.xml" data="example-data-zins.xml" /> </test> ...
  128. 128. Einführung in XMLFit • Beispiel Zinsrechner mit getrennten Testdaten: <data> <dataSet> <betrag>10</betrag> <laufzeit>10</laufzeit> <zinssatz>11</zinssatz> <summe>110</summe> </dataSet> </data>
  129. 129. Einführung in XMLFit • Mehre Tests als Tabellen Sequenzen aus Daten generieren <test id="004" name="Zinsen"> <testStep file="example-zinsrechner2.xml" data="example-data-zins.xml" /> <testStep file="example-zinsrechner2.xml"> <property name="betrag" value="10"/> <property name="zinssatz" value="5"/> <property name="laufzeit" value="10"/> <property name="summe" value="24"/> </testStep> </test>
  130. 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. 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 • ...
  132. 132. Fragen & Diskussion ?
  133. 133. Referenzen • Fit for Developing Software - Rick Mugridge und Ward Cunningham
  134. 134. Referenzen • xUnit Test Patterns (Refactoring Test Code)- Gerard Meszaros
  135. 135. Referenzen • Beautiful Code - Michael Feathers: Framework for Integrated Test: Beauty through Fragility, et al.
  136. 136. Werkzeuge Links zu Werkzeugen: FIT - http://fit.c2.com/ Selenium - http://seleniumhq.org/ JUnit 4.X - http://www.junit.org/ Fitnesse - http://fitnesse.org/ OAW - http://www.openarchitectureware.org/ NVU – WYSIWYG HTML Editor: http://net2.com/nvu/ download.html XMLFIT - http://xmlfit.sourceforge.net/ Apache Maven - http://maven.apache.org/ Cobertura - http://cobertura.sourceforge.net/ EclEmma - http://www.eclemma.org/ Eclipse – http://www.eclipse.org

×