Legacy code (code thường chưa được test, khó thay đổi) là thách thức để test — nó có thể có dependency rối rắm và không có test. Thêm test an toàn liên quan đến các kỹ thuật như characterization test, seam để phá vỡ dependency, và cải thiện dần dần, cho phép thay đổi an toàn hơn.
Thách thức của legacy code
Legacy code thường: chưa test, coupling chặt, khó hiểu, rủi ro khi thay đổi:
→ không có test → thay đổi nó nguy hiểm (bạn không biết mình có làm hỏng gì không)
→ khó test → dependency rối rắm (không cô lập unit được); không thiết kế để test
→ một vấn đề con-gà-quả-trứng: để thay đổi an toàn bạn cần test, nhưng khó để test.
