Unit tests transform refactoring from a high-wire act into a routine operation. Tech debt is inevitable. Environmental assumptions shift, undisciplined changes accumulate, software gets co-opted for uses it wasn’t designed for. Eventually you must rewrite internals while preserving all existing behavior, and without a diligent test suite you’re reduced to gingerly making incremental changes and validating in production.
With sufficient path coverage, refactoring becomes tractable. The tests don’t just verify correctness during the rewrite; they define what “correct” means: the behavioral contract that survives the refactoring. As long as the unit tests pass, every iteration of your refactor is most likely correct.