Blog

Gedanken über Frameworks, Algorithmen und Software Engineering

15. Sep 2018

Test-Generatoren - Stand der Technik

Vielleicht interessiert den einen oder anderen eine Übersicht über Testgeneratoren. Eine ziemlich vollständige Liste findet man auf der Zusammenfassung von Zoltán Micskei über Code-based test generation. Die meisten der hier gelisteten Projekte sind eher akademischer Natur und bestenfalls für Beispielcode einsetzbar.

weiter lesen

4. Mai 2018

Reguläre Ausdrücke in Java

Unkritisch habe ich Jahre lang reguläre Ausdrücke (java.util.regex) in Java verwendet. Auf der Universität hatte man ja gelernt, dass reguläre Ausdrücke effizient ausgewertet werden können.

Als ich in einem Projekt in einer großen Menge von Dokumenten (>10.000) eine große Menge von Worten (>1.000) suchen wollte, erinnerte ich mich an die Universität. Anstatt jedes Wort einzeln zu suchen wollte ich den regulären Ausdruck <Wort1>|<Wort2>|...|<Wort1000> suchen. Das müsste theoretisch deutlich effizienter sein, als nacheinander alle Wörter in jedem Dokument zu durchsuchen … Aber regulärer Ausdruck ist nicht regulärer Ausdruck und die schnellen Automaten der Vorlesung sind nicht die, die in Java verwendet werden.

weiter lesen

2. Apr 2018

Exaktes String Matching in der Praxis

Zunächst war mein Interesse an Textsuchalgorithmen eher akademischer Natur - einfach nur den Algorithmus verstehen und implementieren können. Nachdem aus dieser Leidenschaft ein kleines Projekt (StringSearchAlgorithms) enstanden ist - begann ich Vergleiche anzustellen …

Es stellte sich heraus, dass viele Algorithmen zwar im akademischen Sinne funktionieren, aber in der Praxis erschwert (oder gar nicht) einsetzbar sind. Tatsächlich sind die akademischen Algorithmen für ganz bestimmte Situationen optimiert und sehr spezifisch gebunden an:

  • Prozessorarchitekturen
  • Encoding-Formaten
  • Programmiersprachen (APIs)

Es folgt eine Übersicht über die Herausforderungen, die die Praxis an Textsuche stellt.

weiter lesen

29. Mai 2017

Testrecorder – Quo Vadis

Nach meinem Vortrag auf dem Karlsruher Entwicklertag habe ich jetzt auch einmal Zeit ein wenig über die Zukunft von Testrecorder zu reden … Testrecorder ist ein Java-Werkzeug zum Aufzeichnen von Laufzeitsituationen. Ausgehend von einem Methodenaufruf werden der Zustand davor und der Zustand danach aufgezeichnet. Das Ergebnis wird dann als JUnit-Test ausgegeben.

weiter lesen

12. Okt 2016

Naming von Interfaces und Implementierungen

Wie ist eure Konvention für Implementierungsklassen? Lieber FormDataValueImpl oder IFormDataValue ?

Eigentlich müsste man froh über so eine Frage sein - immerhin kümmert sich überhaupt jemand um Namenskonventionen … aber irgendwie ist doch beides Murks. Leider sind die oben genannten Muster so üblich geworden, dass meine Kritik wohl wenig Wirkung zeigen wird. Hier folgt sie:

weiter lesen

10. Aug 2016

Textsuche in Java (mit der JDK-API)

Textsuche ist eine recht häufiges Problemstellung, die immer dann auftritt, wenn wir prüfen ob ein String in einem anderen vorkommt. Die JDK-Standard-API bietet hier ein paar Grundfunktionalitäten, allerdings gibt es deutlich effizientere Methoden, insbesondere für größere Muster und größere Texte.

Dieser Beitrag könnte für diejenigen von Interesse sein, die sich für Textsuche und die Möglichkeiten der Java-API (bzw. Alternativen darüber hinaus) interessieren.

weiter lesen

21. Mai 2016

Private Variablen erreichen mit XRayInterface

In diesem Beitrag möchte ich eine Möglichkeit eröffnen wie man auf private Variablen und Methoden zugreifen kann, indem man seine Klassen an passende Interfaces adaptiert. Warum? In meinem früheren Beitrag über das Reparieren von Legacy Code habe ich kurz erwähnt, dass eine große Herausforderung beim Testen der Zugriff auf den verborgenem Zustand (private Variablen/Felder) vor und nach der Ausführung der Methoden ist.

weiter lesen

27. Mär 2016

Reparieren von Legacy-Code – Automatisch

Viele Projekte verwenden bereits automatisierte Regressionstests. Leider ist das genau dann nicht gegeben, wenn man es am nötigsten hat, nämlich bei Übernahme von fremdem (ungetesteten) Legacy-Code. Hier wünsche ich mir nicht nur automatisierte Regressionstests, sondern auch automatisierte Testerstellung. Warum gibt es so etwas nicht?

weiter lesen

OOP 2019

Im Februar bin ich auf der OOP mit Testgenerierung in Java - ein Überblick

Meine Präsentationen

Ich habe auf diversen Konferenzen Vorträge gehalten. Eine volle Liste findet man bei Talks.

Meine Projekte

Ich habe diverse Open-Source-Projekte auf Github, meine erfolgreichsten Projekte haben eine eigene Webpräsenz bekommen: