Legacy code (ofte utestet, svært-at-ændre kode) er udfordrende at teste — det kan have rodet afhængigheder og ingen tests. Tilføjelse af tests sikkert involverer teknikker som karakteriseringstests, seams for at bryde afhængigheder, og trinvis forbedring, hvilket muliggør sikrere ændringer.
Udfordringen med legacy code
Legacy code is often: untested, tightly coupled, hard to understand, risky to change:
→ no tests → changing it is dangerous (you can't tell if you broke something)
→ hard to test → dependencies are tangled (can't isolate units); not designed for testing
→ a chicken-and-egg problem: to change safely you need tests, but it's hard to test.
