So you’ve got an old piece of software that’s misbehaving and you don’t know your way around the code. What do you do?
Don’t panic, for a start. Eyeballing the offending stuff is probably next worse. It’s unlikely that you’ll spot a bug in a mature program that everyone else in the company has trawled through at some stage. Hassling those very same people with dumb questions will also likely be fruitless.
One approach could be to treat the software like a black box (or a sort of dirty grey box with weird linkages to the rest of the universe). If you feed something into it what do you expect to come out? Or what do you expect to change somewhere else in the universe? This sounds like a unit test.
This sounds like TDD but TDD with more focus than comprehensive testing. The bug must occur under some conditions and the testing code will build towards creating that scenario, but incrementally in true Agile style. Take baby steps. During the process the inner workings of the program should become clearer, even without the benefit of being able to see the code (which hopefully you can).
And if you can’t find the solution? Well, at least you’ve got the makings of a test suite in place. The effort is not wasted.