Blog

Tourniquet-Junit

Heute wurde ein neues Release von Tourniquet-Junit (0.4.5) veröffentlich. Tourniquet ging aus dem Projekt Scribble hervor und wird nun als eigenständiges Projekt weiterentwickelt. Was ist Tourniquet? Tourniquet-Junit ist eine Sammlung von JUnit4 Rules, die das Entwickeln funktionaler Tests vereinfachen sollen, da damit Tests, die typischerweise eine Integrationsumgebung benötigt werden, self-contained werden, d.h. keine weiteren Laufzeit Abhängigkeiten mehr haben. Ausserdem enthält Tourniquet-Junit eine Reihe von Assertions und weiterer Utilities die das Entwicklen von Test vereinfachen sollen.

Weiterlesen

Automation von Admin Web UIs

In besondere beim Betrieb von Legacy Web Anwendungen gibt es häufig wiederkehrende administrativen Aufgaben. Nicht selten gibt es für derartige Anwendungen eine Administrationsoberfläche, jedoch keine für Administration nutzbare Service Schnittstelle. Dennoch können administrative Aufgaben mit einfachen Mitteln automatisiert werden, sofern die Weboberfläche aus HTML- und HTTP-Sicht gut strukturiert ist. Von Vorteil ist zusätzlich, wenn die Client-Server Interaktion nicht zu stark auf Server-seitige Session States setzt und für verschiedene Operationen auch verschiedene Einsprungpunkte liefert.

Weiterlesen

Was wir Testen

Die Discipline des Testens hat in den letzten Jahren durch agile Entwicklung und Automation ein Revival erlebt. Zwar gibts es nach wie vor noch manuelle Tests, insbesondere Smoke Tests und Usability Tests, doch der überwiegende Teil der Tests, allen voran Unit Tests, wird heutzutage automatise ausgeführt. Ein Grossteil dessen, was wir testen, sind Funktionen oder Features. Diese Funktionen und Features überführen bestimmte Eingabeparameter in ein beobachtbares Resultat. Diese Eingabeparameter setzen sich aus bis zu drei Komponenten zusammen:

Weiterlesen

Patterns zum Umgang mit Legacy Code: ServiceLoader

Legacy Code ist Code, der nicht nach aktuellen Massstäben der Software-Entwicklung entwickelt wurde, nicht mehr gewartet wird und häufig nicht oder unzureichend dokumentiert wird. Aber auch externe, proprietäre closed source Libraries genügen häufig diesen Kriterien. Oftmals wird dieser Code jedoch nach wie vor betrieben und muss auch hin und wieder angepasst werden, z.B. um regulatorischen Anforderungen nachzukommen. Legacy Code kommt häufig in der Form eine CLOBs daher. Eine undefinierte Masse an Codezeilen, von der keiner mehr weiss, was er tut.

Weiterlesen

Mixins mit Java

Unter Mixins versteht man zusätzliche Funktionalität, die einer Klasse hinzugefügt werden kann. Sie sind eine spezielle Form der Mehrfachvererbung, bei der Eigenschaften oder Verhalten von mehreren „Eltern“ geerbt werden. Mit Mixins lassen sich zwei Problemgebiete lösen: Man möchte viele Optionale Features für eine Klasse anbieten Man möchte ein bestimmtes Feature für viele verschiedene Klassen anbieten Mit Hilfe von Mixins lassen sich Domain Modelle einfach halten, indem nur die essentiellen Eigenschaften definiert werden und optionale Eigenschaften über Mixins hinzugefügt werden können.

Weiterlesen

Exponentielles Wachstum der LoC ist kein Zeichen gesteigerter Produktivität

Eines der wesentlichen Eckpfeiler agiler Software Entwicklung ist dessen Transparenz. Teams geben kontinuierlich Auskunft über ihren Fortschritt, erledigte Aufgaben, Hindernisse, Ereignisse im Team, aber auch die Qualität ihrer Arbeit. Das Erfassen von Metriken gehört dabei ebenso zum Handwerk wie gezielte Verbesserungen, die mithilfe dieser Metriken nachgewiesen werden – what gets measured, gets managed. Das Erfassen von Code Metriken ist dabei heute weitestgehend mit Tools wie PMD, Findbugs, Sonarqube und Code-Coverage automatisierbar und dank Code Versioning Systemen wie CVS, SVN oder Git lückenlos nachverfolgbar.

Weiterlesen

Multi-Modul-Integrationstest-Abdeckung mit Jacoco und Sonar

In diesem Artikel beschreibe ich, wie man Jacoco für Maven-Multi-Modul-Projekte einrichtet, damit die Coverage von Integrationstests für die gesamte Codebasis berechnet und mit Sonarqube analysiert werden kann.

Weiterlesen

Mutationstests

Ende Januar habe ich an der OOP2015-Konferenz in München teilgenommen. Unter den vielen interessanten Sitzungen war eine, die einen bleibenden Eindruck hinterlassen hat. Es war der Workshop von Filip van Laenen und Markus Schirp über Mutationstests (Folien hier), den ich in diesem Beitrag zusammenfassen möchte.

Weiterlesen