Consider the classic cycle of software development, the Waterfall model. It includes analysis, design, implementation, and testing, roughly speaking. The testing stage was usually pushed into the end, and in projects with tight deadlines, it was probable that the tests weren't done properly. The adoption of new architectures in applications, which make testing easier, as well as their own current prominence in those architectures may be helped by the boom of quality assurance processes (such as ISO standards, see www.iso.org). All these factors applied to software, have given more importance to testing in this process.
To these factors, we can add methodologies such as Test-Driven Development (TDD), derived from Extreme Programming (or XP) and related to the Agile Movement. TDD proposes that tests guide development, so tests are the first thing to be developed. This test definition will act later as a cast of the code to be developed. We also obtain a particular shape...