In the beginning there were these brilliant Java guys who wondered what would happen if you were to write code that executed some other piece of code in order to verify whether the original code worked. They created a framework called JUnit that was designed to help others write code to test other code. This idea got very popular and has since forked into many different frameworks on different platforms.
The guys behind this idea were Erich Gamma and Kent Beck, and thought of as leaders, they didn't stop at discovering test automation, but instead asked themselves, "What would happen if we write the test first and the system later?" This invention was labeled TDD and has since been the subject of countless discussions and controversy.
The workflow they invented is shown in the following image:
The workflow illustrates writing the test first. If the test passes, the system under test already has this functionality implemented. If the test fails, the functionality needs...