Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Unit Testing Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH blogs.msdn.com/rogerboesch © 2004 Microsoft Corporation.

Ähnliche Präsentationen


Präsentation zum Thema: "Unit Testing Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH blogs.msdn.com/rogerboesch © 2004 Microsoft Corporation."—  Präsentation transkript:

1 Unit Testing Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH blogs.msdn.com/rogerboesch © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

2 Agenda Einführung in Unit Testing
Unit Testing mit Visual Studio Team System Unit Testing Framework (Not so) Simple Unit Testing Data Driven Unit Testing Unit Testing Best Practices BICEP – Das richtige Testen CORRECT – Boundary Conditions Mock Objekte Plattform Unit Testing ASP.Net, Silverlight 2.0, Windows Mobile © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

3 Unit Testing lohnt sich immer…
© 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

4 Was sind eigentlich Unit Tests? Einführung in Unit Testing
Prüfen von Units (Modulen) Autarke Code Einheiten (Bsp. Methode) Nur sinnvolle Tests (Bsp. Keine Getter/Setter) Automatisierbar und wiederholbar Whitebox Testing (Einblick in Code) Einspeisen von verschiedenen Werten Vergleichen des Ergebnisses Kombination von Unit Tests Bilden von Szenarios © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

5 Die 10 besten Ausreden Einführung in Unit Testing
Es braucht viel zu viel Zeit um die Tests zu schreiben! Die Tests laufen zu lassen dauert zu lange! Wir verwenden viel Legacy Code, der nicht getestet werden kann! Es ist nicht meine Aufgabe meinen Code zu testen! Ich weiss nicht, was der Code genau tun muss, wie soll ich da Tests schreiben? Der Code lässt sich doch compilieren! Ich werde bezahlt um Code zu schreiben, nicht Tests! Unsere Tester müssen ja auch noch Arbeit haben! Meine Firma erlaubt keine Unit Test auf Live-Systemen! Ja ja, ich schreibe doch bereits Unit Tests! © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

6 Was bewirkt Unit Testing? Einführung in Unit Testing
Frühes und ständiges Testen wird ermöglicht Stehen nach jeder Änderung zur Verfügung Sind in ihrer Gesamtheit aussagekräftig Unterstützen und fördern Refactoring Fördert Einfachheit der einzelnen Methoden Sorgt für einen verbesserten Software Entwicklungs Prozess Kombination von Code und Unit Tests fördert Wartbarkeit und Austauschbarkeit © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

7 Ist es wirklich so einfach? Einführung in Unit Testing
Sinnhaftigkeit der Tests ( Was testet man?) Problembereiche Testen von Benutzeroberflächen schwierig MVC Design Pattern hilft ein wenig weiter  Schwierige Abgrenzungen (Bsp. Datenbanken) Nebenläufigkeit (Threads) bereiten Probleme Lösungsansatz: Mock-Objekte (to mock: engl. für nachahmen) Einschränkung Testen des “grossen Ganzen” nicht möglich Ersetzen keine Integrations- und Akzeptanz -Tests © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

8 Test Driven Development Einführung in Unit Testing
Motto: Rot  Grün  Refactoring Schreibe einen kleinen Test für den nächsten zu implementierenden Funktionalitätshappen. Dieser Test sollte nicht funktionieren. Erfülle den Test mit möglichst wenig Code, um schnell wieder zum "grünen Balken" (alle Tests laufen) zurückzukehren. Räume den Code auf! Dazu gehört das Entfernen von Duplikaten, Einführung von notwendigen Abstraktionen und Umsetzen der Code Konventionen. Ziel dieses Aufräumens ist die einfache Form des Codes. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

9 Ein erstes Beispiel Unit Testing mit Visual Studio Team System
using System; public class Cmp { public static int Largest(int[] list) } Welche Tests sind notwendig/sinnvoll? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

10 Zu testende Varianten Unit Testing mit Visual Studio Team System
Reihenfolge unabhängig 7,8,9  ,7,9  9 9,8,7  9 Mehrere gleiche Einträge 7,9,8,9  9 Nur eine Nummer 1  1 Negative Nummern -9,-8,-7  -7 Leere Liste null  ? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

11 Visual Studio Team System
Unit Testing mit Visual Studio Team System Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

12 Data Driven Unit Tests Unit Testing mit Visual Studio Team System
Vorteile Schnell erweiterbar durch zusätzliche Datensätze Einfach zu implementieren Komplett ins Testing Framework von VSTS integriert Durch „Nicht“-Programmierer erweiterbar Aufbau der Datenbank Die notwendigen Felder Programmierung Einsatz des DataSource Properties Zugriff auf die Daten: Der TestContext © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

13 Data Driven Unit Tests mit Visual Studio Team System
Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

14 Das richtige Testen! Unit Testing Best Practices
Right BICEP Right: Sind die Testergebnisse korrekt? B: Sind die Boundary Conditions korrekt? I: Kann invers getestet werden? C: Kann Cross-Check getestet werden? E: Können Fehler (Errors) erzeugt werden? P: Liegt die Performance in der Toleranz? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

15 Das richtige Testen! Unit Testing Best Practices
CORRECT Boundaries Conformance: Stimmt das Format? Ordering: Spielt die Reihenfolge eine Rolle? Range: Liegt der Wert in einem definierten Bereich? Reference: Nutzt der Code externe Ressourcen? Existence: Existiert ein bestimmter Wert? Cardinality: Stimmt die Anzahl? Time: Geschieht alles in der Zeit, zur Zeit? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

16 Manchmal ist es nicht so einfach… Unit Testing Best Practices
Mock Objekte Stubs Implementieren eines Interfaces und liefern von Dummy-Werten Fakes Erlaubt die Simulieren des echten Verhaltens Frage Dich immer! Ist ein Mock Objekt wirklich notwendig? Hilft ev. ein Refactoring/Redesign? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

17 Manchmal ist es nicht so einfach Unit Testing Best Practices
Mock Objekte Stubs Implementieren eines Interfaces und liefern von Dummy-Werten Fakes Erlaubt die Simulieren des echten Verhaltens Frage Dich immer! Ist ein Mock Objekt wirklich notwendig? Hilft ev. ein Refactoring/Redesign? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

18 Zeit ist nicht gleich Zeit… Unit Testing Best Practices
public static string DaysFromNow(DateTime last) { TimeSpan span = DateTime.Now - last; switch (span.Days) case 0: return "Heute"; case 1: return "Gestern"; default: return span.Days + " Tage vorher"; } Was ist hier am Sinnvollsten ? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

19 Merkmaler guter Unit Tests Unit Testing Best Practices
Tests müssen schnell sein Ansonsten werden sie nicht so oft gestartet Separieren oder simulieren von Abhängikeiten  Immer Mock-Objekte oder Stubs einsetzen Limitieren des Scopes  Ein Test testet jeweils nur einen Fall Tests müssen isoliert ablaufen können  Die Reihenfolge der Tests darf keine Rolle spielen Tests sollten selbsterklärend sein  Erkenne ich sofort was getestet wird? © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

20 Plattform Unit Testing
Silverlight 2.0, Windows Mobile, ASP.Net … … solange die Zeit reicht  Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

21 Unit Tests: Was bleibt noch? Unit Testing Best Practices
Wie oft soll ich meine Tests laufen lassen? Nach dem Schreiben einer neuen Methode (TDD) Bei einem Fehler Schreibe einen Test der den Fehler aufzeigt Bereinige den Fehler Lass alle Unit Tests erneut laufen! Nach erfolgreichem Kompilieren bei jeder Code Änderung Vor dem Einchecken in die Versions Kontrolle VSTS kennt Check-In Policies! © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

22 Weiterführende Informationen zum Thema
Links Software Tester Team Center Working with Unit Tests Guidelines for Test Driven Development Unit Testing für C++ Code Bücher zum Thema Software Testing with Visual Studio Team System (ISBN ) Pragmatic Unit Testing (http://pragprog.com/starter_kit) © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

23 © Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Herunterladen ppt "Unit Testing Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH blogs.msdn.com/rogerboesch © 2004 Microsoft Corporation."

Ähnliche Präsentationen


Google-Anzeigen