Die kniffligen Fälle beim Testen – Ressourcen

Ressourcenzugriffe wie das Lesen oder Schreiben von Dateien oder Datenbankzugriffe bereiten beim automatisierten Testen häufig Probleme. Ganz überwiegend liegt das daran, dass der Zugriff auf eine Ressource, wie eine Datei oder Datenbank, mit anderen Aspekten im Code vermischt ist. Innerhalb einer Methode wird dann sowohl auf die Ressource zugegriffen als auch mit den gelesenen Ergebnissen gearbeitet. Das Vermischen der Aspekte erschwert das automatisierte Testen.

Read More


[Video] Die Mikado Methode – Ablauf

Mit der Mikado Methode lassen sich komplexe Refactorings Schritt für Schritt durchführen. Gewinnen Sie die Kontrolle über Ihre Codebasis zurück!

Read More


Die kniffligen Fälle beim Testen – Events

Events spielen eine große Rolle in .NET Anwendungen. Häufig basieren große Teile der Verbindung zwischen der UI und „dem Rest“ der Anwendung auf Events. Auch außerhalb der UI gibt es viele Stellen, an denen Events sehr nützlich sind. Hier wäre vor allem das Thema asynchrone Aufrufe zu nennen. Asynchrone Aufrufe bestehen oft aus einer Methode, über die der asynchrone Vorgang gestartet wird, sowie einem Event, über den das Resultat geliefert wird, sobald es zur Verfügung steht. Doch wie testet man Events automatisiert? Der Beitrag gibt Antworten.

Read More


[Video] Komplexe Refactorings mit der Mikado Methode

Mit der Mikado Methode lassen sich komplexe Refactorings in kleine Schritte zerlegen. Die Methode basiert zum einen darauf, durch Experimente herauszufinden, welche Voraussetzungen erfüllt werden müssen, bevor die eigentlich gewünscht Änderung umgesetzt werden kann. Zum anderen wird die Versionskontrolle dazu verwendet, immer wieder zu einem bekannten Stand der Codebasis zurückzukehren. Die einzelnen Experimente werden immer wieder entfernt, da sie lediglich dem Erkenntnisgewinn dienen.

Read More


Die kniffligen Fälle beim Testen – Exceptions

Im Kontext von automatisierten Tests fallen Exceptions in eine der beiden folgenden Kategorien: (a) Eine Methode löst selbst eine Exception aus, wenn sie einen Ausnahmezustand entdeckt. (b) Während der Ausführung einer Methode kann eine Exception auftreten, auf die die Methode reagiert. Der Beitrag beschreibt, wie solche Fälle automatisiert getestet werden können.

Read More


Die kniffligen Fälle beim Testen – Sichtbarkeit

Sind Sie schon über das Attribut InternalsVisibleTo gestolpert? Es ermöglicht Ihnen das Testen von internal Methoden. Warum ich das für sinnvoll halte, erläutert der folgende Beitrag. Unter anderem erfahren Sie etwas über Blackbox und Whitebox Tests sowie über den Unterschied von Integration und Operation.

Read More


Komplexe Refactorings an Legacy Code durchführen – Teil 2

Im ersten Schritt ist durch eine experimentelle Vorgehensweise ein Mikado Graph entstanden. Es wurde jeweils naiv versucht, die erforderlichen Änderungen am Code durchzuführen. Alle Probleme, die sich bei diesen Experimenten gezeigt haben, sind als Vorbedingungen für das Mikado Ziel in den Mikado Graph übernommen worden. Da die einzelnen Vorbedingungen aufeinander aufbauen, sich also in Abhängigkeiten befinden, enthält der Mikado Graph nicht nur die Vorbedingungen, sondern stellt auch die Abhängigkeiten dar. Lesen Sie im 2. Teil nun mehr zu den Details der Mikado Methode.

Read More


Komplexe Refactorings an Legacy Code durchführen – Teil 1

Dies ist der erste Teil einer Beitragsserie über komplexe Refactorings an Legacy Code Projekten. Er erläutert, welche Herausforderung sich bei komplexen Änderungen zeigen. Anhand einer Bilderserie wird verdeutlich, zu welchen Problemen die übliche Vorgehensweise führt. Im Anschluss wird gezeigt, wie die Herausforderung mit Hilfe der Mikado Methode angegangen werden kann.

Read More


4 Tools, die das automatisierte Testen erleichtern (inkl. Tipps zur Nutzung)

Der Nutzen automatisierter Tests wird inzwischen zwar nicht mehr in Frage gestellt. Doch immer noch treffe ich auf Entwickler, denen es schwer fällt, regelmäßig Tests zu schreiben. Im Beitrag stelle ich 4 Tools vor, mit denen Unit Tests leichter von der Hand geht. Das hilft Ihnen vielleicht dabei, zu einem leidenschaftlichen Tester zu werden.

Read More


Einfache Refactorings – Teil 5

Um automatisierte Tests ergänzen zu können, ist es manchmal sinnvoll, einen Konstruktorparameter einzuführen, über den die Abhängigkeit von außen reingereicht werden kann. Der Beitrag zeigt, wie dies am Beispiel von DateTime.Now mit einer simplen Lambda Expression möglich ist. Desweiteren befasst sich der Beitrag mit Abhängigkeiten. Reduzieren Sie Abhängigkeiten durch das Extrahieren eines Interface. Auf diese Weise kann häufig die Testbarkeit hergestellt oder verbessert werden.

Read More