How do successful agile teams deliver bug-free, maintainable software--iteration after iteration? The answer is: By seamlessly combining development and testing. On such teams, the developers write testable code that enables them to verify it using various types of automated tests. This approach keeps regressions at bay and prevents "testing crunches"--which otherwise may occur near the end of an iteration--from ever happening. Writing testable code,...