Self-testing code has automated tests that are easily run to verify that it does what the programmers intended| martinfowler.com