1 / 34

Test Driven Development

Test Driven Development. - Romano Adler- http://www.romano-adler.de. „Jaaaa, morgen müssen wir Unit-Tests einführen!“. „ Wir machen viel Prototyping …. “ „ Wir haben keine Zeit um noch Tests zu schreiben… “ „ Unsere Anwendung lässt sich nicht testen… “

keon
Download Presentation

Test Driven Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Test Driven Development - Romano Adler- http://www.romano-adler.de

  2. „Jaaaa, morgen müssen wir Unit-Tests einführen!“ • „Wir machen viel Prototyping….“ • „Wir haben keine Zeit um noch Tests zu schreiben…“ • „Unsere Anwendung lässt sich nicht testen…“ • „Durch manuelles Testen werden alle Fehler gefunden…“ • … Warum sollte man nicht testen?

  3. Unit-Testing mit Visual Studio • Test Driven Development-Paradigmen • Model View Presenter-Pattern • Mock Frameworks • Behavior Verification Agenda

  4. Unit-Testing mit Visual Studio

  5. kleinste Einheit in OO = Methode • Test beschreibt einen Vertrag • erfordert gute Kapselung • in .NET: NUnit / Visual Studio 2005 / 2008 Test Methodtotest Asserts Unit Testing

  6. [TestClass()] • [TestMethod()] • [ClassInitialize()] / [ClassCleanup()] • [AssemblyInitialize()] / [AssemblyCleanup()] • [TestInitialize()] / [TestCleanup()] • [Priority()] • [Ignore()] • [Owner()] • [Description()] • [DataSource()] • [ExpectedException()] Visual Studio Test Attributes

  7. DEMO

  8. Grundlage für Refactoring • Fehler durch Änderungen können entdeckt werden (Regression Testing) • erleichtert die Integration (Integration Testing) • bringt bessere Architektur z.B. Trennung zwischen Schnittstelle und Implementierung • Dokumentation Unit-Testing Vorteile

  9. Test vor /während dem „Produktiv-Code“ entwickeln • Isolation • nur Methoden testen • keine Abhängigkeiten zwischen Tests • eine Test-Klasse pro Produktiv-Klasse • eine Methode pro Test-Fall • Mock-Objekte um Interfaces zu testen Unit-Testing Best Practices

  10. Create Private Accessors • Code Coverage • Build Server • per Check-In • Nightly Build • Continuous Integration Visual Studio Testing

  11. Load Tests Visual Studio Testing

  12. Web Tests Visual Studio Testing

  13. UI Tests • TestAutomationFX • MVP-Pattern Visual Studio Testing

  14. Work Item Tracking Version Control Reporting Team Communications Build Automation Team Systems - Überblick

  15. Test Driven Development-Paradigmen

  16. Bis dem Entwickler keine Tests mehr einfallen Entwicklung des Tests (dieser muss fehlschlagen) Entwicklung der Funktion, sodass der Test (und alle anderen) funktioniert Refactoring Der evolutonäre Entwurf

  17. Testen anhand der Anforderungen • erst Test schreiben • kurze Iterationen: soviel Code wie nötig • erstes Ziel: alle Tests müssen durchlaufen • hohe Codeabdeckung Test Driven Development

  18. DEMO

  19. Model View PresenterDesign Pattern

  20. Darstellung • Eingabe • …… Backend Client • Logik • Logik? Warum Model View PresenterDesign Pattern?

  21. View Presenter Model Rich-Client Logik Backend Web-Client Warum Model View PresenterDesign Pattern?

  22. IView Presenter Model View Model View PresenterDesign Pattern

  23. IView: • Abstraktion einer View • definierte Methoden, Properties und Events für den Presenter • View: • konkrete View • sollte kaum Logik enthalten • wird nicht getestet Model View PresenterDesign Pattern

  24. Presenter • implementiert client-seitige Logik • Model • stellt dem Client Daten und Dienste zur Verfügung Model View PresenterDesign Pattern

  25. Mock Frameworks

  26. Mock Object • simuliert das Verhalten eines Objekts • wird benutzt, um das Verhalten eines anderen Objektes zu simulieren • benutzt dasselbe Interface, wie das „richtige“ Objekt Mock Frameworks

  27. Ayende Rahien (Oren Eini) http://www.ayende.com/ MockRepository mockery = new MockRepository (); IMockObject mock = mockery.CreateMock <IMockObject> (); using ( mockery.Record () ) { SetupResult.For (mock.GetTest()).Return (“Hello"); … Rhino Mocks

  28. Mock Container: MockRepository • Strict Mock: CreateMock<T>() • None Strict Mock: DynamicMock<T>() • Partial Mock: PartialMock<T>() • Stub: Stub<T>() • Verhaltenaufzeichnen: Record() • Verhaltendefinieren: SetupResult.For() • Erwartungendefinieren: Expect.On () • Verhaltenüberprüfen: Playback() Rhino Mocks

  29. DEMO

  30. BehaviorVerification

  31. prüft das Verhalten einer Methode Test Test Methodtotest Methodtotest Asserts klassisches Unit-Testing Behavior Verification BehaviorVerification

  32. DEMO

  33. A Unit Testing Walkthrough with Visual Studio Team Test: http://msdn.microsoft.com/en-us/library/ms379625(VS.80).aspx • Visual Studio Team System 2008 Team Foundation Server: http://msdn.microsoft.com/en-us/tfs2008/default.aspx • Model View Presenter - Jean-Paul Boodhoo: http://msdn.microsoft.com/en-us/magazine/cc188690.aspx • dnrTV MVP: http://www.dnrtv.com/default.aspx?showNum=14 • ARCast.TV - Presenter First Pattern | ARCast.TV | Channel 9: http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Presenter-First-Pattern-Part-1/ • The Humble Dialog Box - Michael Feathers: http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf • Rhino Mocks: http://www.ayende.com • xUnit-Patterns: http://xunitpatterns.com/ Referenzen

  34. Fragen

More Related