Und es geht doch ...
                             TDD für
                        Benutzeroberflächen
                     ...
Agenda



                       • Was ist Test Driven Development?
                       • TDD für Benutzeroberflächen
  ...
TDD



Montag, 8. Juni 2009
„Clean code that works“
                       Ron Jeffrie




Montag, 8. Juni 2009
Clean Code

           Klares Design                                Testbar


                                        Modu...
That Works


                 Performant                      Rechtzeitig
                                                ...
Schreiben          Verwenden

                                   Code




Montag, 8. Juni 2009
TDD Gebote


                       •Rot

                       • Grün

                       • Refactor

Montag, 8. Jun...
Rot

                „Du sollst keinen Prokuktivcode
                    schreiben außer um einen
               fehlschla...
Rot


                                  Was erwarte ich
                                   vom Code?



                  ...
Grün

                  „Du sollst möglichst einfachen
                 Code schreiben um den Test so
                schn...
Grün

                         Was ist der
                       einfachste Code
                        um den Test zu
 ...
Refactor

                        „Du sollst alle Redundanzen
                       beseitigen, die gemacht wurden
      ...
Refactor

                        Ich muss
                       Redundanz
                       beseitigen!



        ...
„Edit and Pray“
                                vs.
                       „Cover and Modify“
                            ...
Edit & Pray


             • System analysieren
             • Änderung durchführen
             • Anwendung starten und
 ...
Cover & Modify



              • Test schreiben
              • Änderung durchführen
              • Alle Tests ausführen...
Tests nehmen die Furcht
                             versehentlich Fehler
                                  einzuführen
  ...
Tests sind Dokumentation

                        „Jeder Test ist ausführbarer Beispielcode“




Montag, 8. Juni 2009
Tests leiten das Design

                       „Wir betrachten das Programm aus Sicht
                                   ...
GUIs testen



Montag, 8. Juni 2009
TDD für GUIs


                       • GUI Code ist schwer zu testen
                                        deshalb

   ...
Model-View-Controller (MVC)



                                           Controller

                       User Event   ...
Model-View-Presenter (MPV)




                              User Event               Change Notification


               ...
Beispiel




Montag, 8. Juni 2009
View

                       •   Properties

                           •   Display

                           •   Memory...
Model (State Machine)

                             •   States
                                 •   Number
               ...
Presenter
                          View                        Model
                                         P
         ...
Presenter testen

                                       PresenterTest




          ViewMock                      Present...
Presenter testen
                                       PresenterTest




Montag, 8. Juni 2009   Zustand lesen
Events testen
                                          PresenterTest




                                                ...
Wie teste ich die View?



Montag, 8. Juni 2009
„Verdrahtung“ testen

                       • API zum Presenter testen
                       • Vieles lässt sich automat...
Events testen

                       • Unterhalb der „echten“ Events ansetzen
                       • Evtl. Simulation v...
Aussehen testen

                       • Themes sind auch Code
                       • Aussehen lässt sich kaum automati...
Mini-Programme




Montag, 8. Juni 2009
Fazit


                        TDD funktioniert für
                       Benutzeroberflächern
                          ...
„Legacy code is code
                          without tests“
                             Michael Feathers




Montag, 8....
Fragen?



Montag, 8. Juni 2009
Resourcen - Code




                       git clone git://github.com/fjakobs/Calculator.git


Montag, 8. Juni 2009
Resourcen / TDD
                •      Literatur

                       •   „Test Driven Development by Example“, Kent Be...
Resourcen / MVP
                       •   Martin Fowler
                           •   Passive View, http://www.martinfow...
Nächste SlideShare
Wird geladen in …5
×

Und es geht doch - TDD für GUIs

2.861 Aufrufe

Veröffentlicht am

Test Driven Development ist eines der wichtigsten Methoden aus dem Extreme Programming um hohe Softwarequalität zu garantieren und agil auf Änderungen reagieren zu können. Es hält sich allerdings sehr hartnäckig die Legende, dass man TDD für die Entwicklung von Benutzeroberlächen nicht anwenden kann. In diesem Vortrag werden Architekturansätze und Techniken vorgestellt, die es erlauben testbare Benutzeroberflächen zu schreiben.

Veröffentlicht in: Technologie, Business
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.861
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
885
Aktionen
Geteilt
0
Downloads
21
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Und es geht doch - TDD für GUIs

  1. 1. Und es geht doch ... TDD für Benutzeroberflächen Fabian Jakobs <fabian.jakobs@1und1.de> qooxdoo Team <http://qooxdoo.org> Montag, 8. Juni 2009
  2. 2. Agenda • Was ist Test Driven Development? • TDD für Benutzeroberflächen • Beispiel Montag, 8. Juni 2009
  3. 3. TDD Montag, 8. Juni 2009
  4. 4. „Clean code that works“ Ron Jeffrie Montag, 8. Juni 2009
  5. 5. Clean Code Klares Design Testbar Modular Geringe Erweiterbar Abhängigkeiten Montag, 8. Juni 2009
  6. 6. That Works Performant Rechtzeitig fertig Erfüllt die Andorderungen Robust Zufriedene Anwender Montag, 8. Juni 2009
  7. 7. Schreiben Verwenden Code Montag, 8. Juni 2009
  8. 8. TDD Gebote •Rot • Grün • Refactor Montag, 8. Juni 2009
  9. 9. Rot „Du sollst keinen Prokuktivcode schreiben außer um einen fehlschlagenden Test zu bestehen!“ Montag, 8. Juni 2009
  10. 10. Rot Was erwarte ich vom Code? Test schreiben Code Montag, 8. Juni 2009
  11. 11. Grün „Du sollst möglichst einfachen Code schreiben um den Test so schnell wie möglich zu bestehen!“ Montag, 8. Juni 2009
  12. 12. Grün Was ist der einfachste Code um den Test zu bestehen? Schreiben Code Montag, 8. Juni 2009
  13. 13. Refactor „Du sollst alle Redundanzen beseitigen, die gemacht wurden um den Test zu bestehen!“ Montag, 8. Juni 2009
  14. 14. Refactor Ich muss Redundanz beseitigen! Schreiben Code Montag, 8. Juni 2009
  15. 15. „Edit and Pray“ vs. „Cover and Modify“ Michael Feathers Montag, 8. Juni 2009
  16. 16. Edit & Pray • System analysieren • Änderung durchführen • Anwendung starten und Änderung überprüfen • Anwendung „durchclicken“ Montag, 8. Juni 2009
  17. 17. Cover & Modify • Test schreiben • Änderung durchführen • Alle Tests ausführen Montag, 8. Juni 2009
  18. 18. Tests nehmen die Furcht versehentlich Fehler einzuführen „Diesen Teil des Programms ändere ich lieber nicht“ Montag, 8. Juni 2009
  19. 19. Tests sind Dokumentation „Jeder Test ist ausführbarer Beispielcode“ Montag, 8. Juni 2009
  20. 20. Tests leiten das Design „Wir betrachten das Programm aus Sicht der Anwender“ Montag, 8. Juni 2009
  21. 21. GUIs testen Montag, 8. Juni 2009
  22. 22. TDD für GUIs • GUI Code ist schwer zu testen deshalb • GUI Code isolieren • Komplexität gering halten Montag, 8. Juni 2009
  23. 23. Model-View-Controller (MVC) Controller User Event Update State Change Change Notification View Model State Query Montag, 8. Juni 2009 Zustand lesen
  24. 24. Model-View-Presenter (MPV) User Event Change Notification View Presenter Model Update State Query/Change Montag, 8. Juni 2009 Zustand lesen
  25. 25. Beispiel Montag, 8. Juni 2009
  26. 26. View • Properties • Display • Memory • Operation • Events • Button press Montag, 8. Juni 2009
  27. 27. Model (State Machine) • States • Number • Wait for Number • Error • Properties • State • Input • Value • Error Message • Memory • Operation • Methods • Read Token Montag, 8. Juni 2009
  28. 28. Presenter View Model P • Properties r • Properties e • State • Display s • Input • Memory e • Value n • Error Message • Operation t • Memory • Events e • Operation r • Methods • Button press • Read Token Montag, 8. Juni 2009
  29. 29. Presenter testen PresenterTest ViewMock Presenter ModelMock Montag, 8. Juni 2009 Zustand lesen
  30. 30. Presenter testen PresenterTest Montag, 8. Juni 2009 Zustand lesen
  31. 31. Events testen PresenterTest ModelMock ViewMock Presenter Montag, 8. Juni 2009 Zustand lesen
  32. 32. Wie teste ich die View? Montag, 8. Juni 2009
  33. 33. „Verdrahtung“ testen • API zum Presenter testen • Vieles lässt sich automatisiert testen Montag, 8. Juni 2009
  34. 34. Events testen • Unterhalb der „echten“ Events ansetzen • Evtl. Simulation von „echten“ Events Montag, 8. Juni 2009
  35. 35. Aussehen testen • Themes sind auch Code • Aussehen lässt sich kaum automatisiert testen ABER • View hat wenig Abhängigkeiten • Kann isoliert ausgeführt werden Montag, 8. Juni 2009
  36. 36. Mini-Programme Montag, 8. Juni 2009
  37. 37. Fazit TDD funktioniert für Benutzeroberflächern wenn die Architektur stimmt Montag, 8. Juni 2009
  38. 38. „Legacy code is code without tests“ Michael Feathers Montag, 8. Juni 2009
  39. 39. Fragen? Montag, 8. Juni 2009
  40. 40. Resourcen - Code git clone git://github.com/fjakobs/Calculator.git Montag, 8. Juni 2009
  41. 41. Resourcen / TDD • Literatur • „Test Driven Development by Example“, Kent Beck • „Working Effectively with Legacy Code“, Michael Feathers • „Clean Code: A Handbook of Agile Software Craftsmanship“, Robert C. Martin • Präsentationen im Netz • „Test Driven Development?“, Frederik Kalseth http://iridescence.no/post/Slides-From-my-TDD- Talk.aspx • „Test Driven Development Best Practices for Eclipse RCP“, Kevin Taylor, http://live.eclipse.org/ node/700 Montag, 8. Juni 2009
  42. 42. Resourcen / MVP • Martin Fowler • Passive View, http://www.martinfowler.com/eaaDev/ PassiveScreen.html • GUI Architectures, http://www.martinfowler.com/eaaDev/ uiArchs.html • Microsoft • View Testability, http://msdn.microsoft.com/en-us/library/ cc304742.aspx • Design Patterns - Model View Presenter, http:// msdn.microsoft.com/de-de/magazine/cc188690(en-us).aspx • „Build Your Own CAB“, Jeremey D. Miller, http:// codebetter.com/blogs/jeremy.miller/archive/2007/07/25/the- build-your-own-cab-series-table-of-contents.aspx Montag, 8. Juni 2009

×