The most fundamental principle behind Agile is to make software in an iterative fashion. What this means is – in every iteration, you add some more business value (read features) to the product. This works smoothly only if you are committed to only “moving forward” i.e. you never break existing features- even if you have to refactor (which is actually strongly encouraged).
Achieving this level of sophistication isn’t easy. It comes with a strict discipline. To be able to concentrate on the future, you need to be sure that your past is secure. In other words, as a developer, I should have to worry about only what I did today , without worrying about the impact on what I did yesterday.
This is where a good set of automated unit test cases come in. They help you to make sure that your code is well guarded, detect breakages in time and help you prevent broken windows.
It’s like going to a battlefield with armor. You definitely don’t want to go to a battle without protection (unless maybe you are Chuck Norris ).