News

PatternTesting 1.7 basiert nun auf Java 7 und Logging wurde von SLF4J auf Version 2 von Log4J umgestellt.

Wenn man "jdbc:prox:..." als JDBC-URL verwendet, wird man jetzt gewarnt, wenn man einen Update auf der Datenbank macht, danach aber das Commit vor dem Schließen der DB-Verbindung vergisst.

PatternTesting 1.6 verwendet jetzt Java 6. Und es wird vom ClasspathMonitor jetzt auch der Classloader von Tomcat 8 unterstützt (Anm.: der ClasspathMonitor in 1.6.0 kann in manchen Situation hängen bleiben - dieses Problem wurde mit 1.6.1 behoben).

PatternTesting 1.5 stellt "jdbc:proxy:..." as JDBC-URL zur Verfügung und ermöglicht damit das Monitoring von Datenbanken. Auch erlaubt es damit das Messen und die Protokollierung von SQL-Anweisungen (s.a. SQL Logging and Monitoring).

Ab 1.4 können Methoden-Aufruf als Sequenz-Diagramm protokolliert werden (s. Generation of Sequence Diagrams). Noch ist dieses Feature als "experimentell" eingestuft.

Vision of PatternTesting

To be the Minesweeper of Your Java Code!

Was heißt das?

Kennst du "Minesweeper"? Bei diesem Computer-Spiel geht es darum, die Minen auf dem Spielfeld zu finden. Wenn du dabei unvorsichtig bist und auf eine Minen-Feld triffst - Game Over!

PatternTesting ist zwar kein Spiel, aber es gibt dir Tipps, wo in deiner Software Minen versteckt sein könnten. Nun liegt es an dir, diese Minen zu entschärfen bevor deine Anwendung in die Luft geht oder deine Datenbank sich in Luft auflöst.

Finde die Minen in deinem Code, bevor es die Anwender tun. Ansonsten: GAME OVER!

Was sagt Sloganizer dazu?

generated by sloganizer.net

Übersicht

PatternTesting ist ein Test-Framework, das automatisch Architektur- oder Design-Vorgaben bzw. "Best Practices" sicherstellt. Es baut auf AOP und AspectJ auf, um diese Aufgabe zu gewährleisten. Weitere Details findest du unter Was ist PatternTesting.

Dieses Projekt besteht aus folgenden Artefakte:

  • patterntesting-parent: Die übergeordnete Klammer über sämtliche Unterprojekte.
  • patterntesting-rt: Dies ist der Runtime-Teil, der auch "standalone" verwendet werden kann, ohne patterntesting-check und die anderen Unterprojekte. Es bringt zwar bereits einige Überprüfungen mit, diese werden aber über Annotationen aktiviert.
  • patterntesting-check: Eine Sammlung von wiederverwendbaren Pattern-Tests (oder Aspekten in AspectJ-Terminologie); dies ist der Ursprung von PatternTesting.
    Seit 0.9.5 ist dieser Teil aufgeteilt in
    • patterntesting-check-ct: Compile-Time-Prüfungen (statischer Teil)
    • patterntesting-check-rt: Runtime-Prüfungen (dynamischer Teil). Im Unterschied zu patterntesting-rt (s.o.) sind diese Überprüfungen per default aktiv, können aber über Annotationen (z.B. @NullArgsAllowed) deaktiviert werden.
  • patterntesting-concurrent: Diese Bibliothek unterstützt einige Annotation, die den Umgang mit Parallelität vereinfachen. Auch enthält sie Test-Unterstützung für Threads.
  • patterntesting-exception: Dies ist ein Wrapper um verschiedene JDK-Klassen, um aussagekräftigere Exceptions zu erhalten. Die Bibliothek enthält auch eine ExceptionFactory für die Test-Unterstützung.
  • patterntesting-tools: Einige Tools, um die Ausführung von Pattern-Tests innerhalb ihres Projekts zu unterstützen (Plugins für Ant und Maven, Report-Generierung, ...). Dieser Bereich ist allerdings seit längerem eine Baustelle :-(
  • patterntesting-samples: dieser Teil enthält einige Beispiel, wie PatternTesting eingesetzt werden kann.

Warum wurde PatternTesting in mehrere Unterprojekt aufgeteilt? Ein Grund ist Maven. Maven empfiehlt, nur ein Artefakt pro Projekt zu erzeugen. Der Hauptgrund war allerdings Performanz-Gründe. Vor allem unter Eclipse 3.3 gab es mit der alten patterntesting-check-Bibliothek (die jetzt in einen statischen und dynamischen Teil aufgeteilt ist) erhebliche Akzeptanz-Probleme. Mit der Aufteilung hat man zudem die Wahl, welche Teile von PatternTesting man im Propjekt einsetzen will.

Antipattern

Fehler im Code sind ärgerlich. Speziell dann, wenn sie in Produktion auftreten und man feststellen muss, dass manche Fehler leicht hätten vermieden werden können. Im Wiki sind einige AntiPatterns aufgelisten, wo dir PatternTesting helfen kann, sie zu entdecken bzw. zu vermeiden.

IDE and Compiler Version

Wenn du Eclipse als Java-IDE verwendest, brauchst du das AJDT-Plugin.

Wenn du eine andere IDE verwendest, nimm am besten die letzte stabile Version von AspectJ, mindestens aber die Version 1.7.3. Dies ist die gleiche Version wie die des Eclipse-AspectJ-Plugins (AJDT).

History

11/05/2017 Bugfix ClasspathMonitor fÜr Spring Boot
06/01/2017 Umstellung auf Java 7 und Version 2 von Log4J
17/08/2016 Erweiterungen fÜr JMX
27/03/2016 Ostern-Version
29/02/2016 Schaltjahr-Version
06/01/2016 endgÜltiger Wechsel nach Java 6
04/07/2015 Format von websequence diagrams wird in 1.5.2 unterstÜtzt.
26/01/2015 Patterns können jetzt in 1.5.1 verwendet werden, um Klassen von Überprüfungen in den verschiedenen XxxTester-Klassen auszuschließen.
06/01/2015 ClasspathMonitor in 1.5.0 kommt jetzt besser mit WebSpheres Classloader zurecht
14/06/2014 1.4.3 erlaubt das Loggen von SQL-Anweisungen im DEBUG-Loglevel.
05/05/2014 1.4.2 ermöglicht die Messung von SQL-Anweisungen via JMX (mithilfe der SqlStatistics MBean).
06/04/2014 Mit 1.4.1 ermöglicht das DB-Monitoring ü eine eigene JDBC-URL ("jdbc:proxy:...").
06/01/2014 Mit 1.4.0 ist auch die Generierung von Sequenz-Diagrammen möglich.
06/01/2013 1.3.0 wird ausgeliefert
15/07/2012 1.2.20 wird ausgeliefert
23/03/2012 Jubiläums-Release 1.2.10-YEARS
06/01/2012 1.2.0 wird ausgeliefert
18/10/2010 1.0.3 wird ausgeliefert und auf oss.sonatype.org hochgeladen
08/09/2010 1.0.2 wird ausgeliefert
18/07/2010 1.0.1 wird ausgeliefert
20/06/2010 1.0.0 wird endlich ausgeliefert
28/01/2010 Vortrag "Pleiten, Pech und PatternTesting" auf der OOP 2010 in München
22/01/2010 Christian Heise macht bei PatternTesting mit. Welcome Chris!
2010 Beginn mit 1.0 und Umzug auf patterntesting.org
20/12/2009 Delivery of version 0.9.8 (probably the last 0.9 version)
11/09/2009 Begin to deliver version 0.9.7 with improved patterntesing-samples.
20/06/2009 Hector Tenedero joins the Pattern Testing project. Welcome Hector!
02/05/2009 Delivery of version 0.9.6 for the Stuttgarter Test-Tage 2009.
30/03/2009 after the project split (patterntesting-exception, patterntesting-concurrent, patterntesting-check-ct, patterntesting-check-rt) all sub projects have now version 0.9.5
26/03/2009 PatternTesting Check is now splitted into a static part (PatternTesting Check.CT for checks during compile time) and a dynamic part (PatternTesting Check.RT for checks during runtime)
23/03/2009 Exception support is now moved into its own project - PatternTesting Exception
Thread and concurrency support is also moved into its own project - PatternTesting Concurrent
20/03/2009 release of 0.9 for patterntesting-rt, patterntesting-check, patterntesting-samples and patterntesting-tools.
12/12/2008 PatternTesting 0.8.0, redesign and split into several subprojects. Avalon is no longer support because this project is dead. If you need Avalon support use PatternTesting 0.6.x.
24/11/2008 Marko Umek joins the Pattern Testing project. Welcome Marko!
03/11/2008 PatternTesting 0.6.1 has been released.
05/10/2008 PatternTesting 0.6.0 has been released.
09/09/2008 begin with PatternTesting 0.6.0 with support of AspectJ 1.6 and Java 6
27/04/2008 PatternTesting 0.5.1 has been released.
23/04/2008 Got some new ideas for the AbstractNullPointerTrap on a BOF session about AOP on the JAX. You can now use annotations (@NullArgsAllowed and @MayReturnNull) to mark methods.
28/01/2008 PatternTesting 0.5.0 has been released.
06/01/2008 Switched to Maven 2. Documentation is now generated with it.
May 2007 Joined the project (Oliver Boehm). I will try to reactivate it.
20/02/2004 Shohara Shaikh joins the Pattern Testing project. Welcome Shohara!
10/11/2004 Xavier Warzee joins the Pattern Testing project. Welcome Xavier!
15/09/2004 PatternTesting 0.3 has been released.
11/08/2004 Work begins on the project again. Updated .3dev version to be compatible with maven 1.0 and aspectj 1.2. More enhancements to follow!
25/04/2004 Added support for AspectJ 1.1.1
19/04/2004 New StackTrace Pattern Test.
03/03/2004 Matt Smith takes the lead and gives a new life to the Pattern Testing project. Welcome Matt!
28/9/2002 New ThreadSafe Pattern Test (part of the Avalon Pattern Test Suite).
22/9/2002 New Database Pattern Test.
18/9/2002 Jitendra Joshi joins the Pattern Testing team!
15/9/2002 Version 0.2 has been released. It now contains a fully working Maven plugin. In addition, the AspectJ extension has been much improved and is now based on the AspectJ Ajc Ant task which it extends.
14/9/2002 Version 0.1 has been released. At the moment it only contains an AspectJ extension to generate AJC results in XML. It will be used for the MAven plugin later on in order to generate HTML reports.
12/9/2002 Reorganisation of the project structure and build (we are now using Maven).
12/9/2002 Jerome Bernard joins the Pattern Testing team!
11/9/2002 Steve Donagh joins the Pattern Testing team!
13/6/2002 Stephen Cheng joins the Pattern Testing team!
23/3/2002 Start of the Pattern Testing project.