Every project defines a set of rules that all (or most :-)) developers agree on. These rules can be coding conventions, naming conventions or at a higher level architecture decisions or best practices.
Usually these rules are either mentioned verbally or written in a "Developer Guide" (I am personnally using an internal Wiki web site for sharing this best practices knowledge). However, it is not enough. How am I going to verify that I have properly coded against these rules?
So far, there was only one solution: code review. Be it continuously with Pair programming or at some point in time with tech leads or peers performing the review. Wouldn't it be nice if I could have a suite of tests that could automatically check this? In the same spirit a JUnit test suite verifies that code does what it is expected to do. But this time, we would check that not only the code does what it is supposed to do but also that it does it the way we have defined it!
There are several tools available to check coding and naming conventions (See the Resource section), but there are none to perform architecture/design best practices.
... until now ....
Pattern Testing is about providing the means to automatically check for Architecture/Design/Implementation decisions.
Here are some examples of automated checks that the PatternTesting-Check framework allows:
In the future there may be more automated checks that the PatternTesting-Check framework allows:
The power is almost endless...