Like Bart Simpson must write on the blackboard, I have to keep repeating myself:
Why? To save time! That's my greatest limited resource and I need to use it more wisely. I've always had a hunch that writing tests was helpful, but now I'm certain that I can save lots of time and aggravation by writing more and better tests for the software I write.
These days I'm writing a lot of Ruby software, and thankfully there are some incredible testing kits out there (actually I should do a review of the ones I've used over at Ruby Code Experiments), and most of my use of them revolves around the awesome Rake tool.
Beyond saving time, writing tests adds another interesting perspective to the software development paradigm: completeness.
I doubt I'm the only one whose ever been involved with a scope-less software project which eventually starts to suffer feature creep. Its no fun - things get out of hand and its hard to stay focused. With tests, specifying what a software package should and shouldn't do is fairly straightforward.
I'm sure I haven't covered all the awesome benefits of writing and using software tests, so please share your thoughts on the matter too!