Automating the Debug Process
I’m currently listening to Software Engineering Radio podcast. At episode 101 there’s a very good interview with
Andreas Zeller on debugging software.
The podcast present the problem that debugging manually (the most common debug strategy) is highly inefficient.
Part of the interview is a description of Andreas "Delta Debugging" – By iterative elimination of irrelevant information at the input of the failed test Delta Debugging is able to find and isolates the reason the test failed.
It seems to me that the conclusion from the podcast is that we should aspire for two things in our tests and during debug – automation and understanding of problems when tests fail. And then it hit me – that is exactly what we try to do by using TDD!
In TDD instead of taking a big test and eliminate parts of it until we find the cause of the bug we write small isolated unit tests. When a bug introduced to our code we can find and fix it quickly.
And so Mocks and unit tests we can improve (if not solve completely) on the time it take us to find and fix bug in our code.