Characterization Tests: A Safety Net Before You Refactor Legacy Code
You want to refactor a class and the tests you were counting on are not there. Or they are there, but they aim somewhere else and none of them would notice if you got this particular piece wrong. The code works, presumably, since it has been in production for years. You just have no way to prove that it still works once you have touched it.
Characterization tests are for this situation. You write tests that describe what the code does right now, and then you refactor with those tests watching your back.