Continuous Integration

It would seem that testing something each time you make a change would waste a lot of time and slow down the process. Isn't more important to get coding done as quickly as possible without delays or interruptions? Doing all the testing at one time-at the end of the project-would seem to be the way to go, and because it's so intuitive, it is the way things have been done in software development for quite a while. Anyone who has been involved in a project that followed this philosophy can tell you how painful the test cycle at the end of a project can be.

Continuous Integration does take time from the development process, specifically the time to write unit tests, which could be spent coding. However, the payoff is that problems are found earlier in the process and closer to the point of creation. Many studies have shown that the earlier problems are found in the development cycle, the less expensive they are to fix. Plus, all the time spent in the traditional test cycle is saved, not to mention all the pain that is avoided. An additional benefit is that working software is always available for release, driven by business, not technical, considerations.