الكود القديم (غالباً ما يكون بدون اختبارات، صعب التغيير) هو تحدٍ للاختبار — قد يحتوي على تبعيات معقدة وبدون اختبارات. إضافة الاختبارات بأمان تتضمن تقنيات مثل اختبارات التوصيف، الفواصل (Seams) لكسر التبعيات، والتحسين التدريجي، مما يتيح تغييرات أكثر أماناً.
تحدي الكود القديم
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.
