باختصار
اختبار الانحدار (Regression Testing) هو إعادة تشغيل اختبارات البرنامج بعد كل تغيير، للتأكّد من أن ما كان يعمل من قبل ما زال يعمل. وإن تعطّل شيء كان سليمًا، فهذا «انحدار».
بالتفصيل
بحسب Wikipedia، قد يستدعي هذا الاختبار أيّ تغيير: إصلاح خطأ، أو ميزة جديدة، أو تعديل في الإعدادات، بل استبدال قطعة عتاد. والسبب أن ظهور أخطاء جديدة، أو عودة أخطاء قديمة، أمر شائع بعد التعديل. فالإصلاح قد يكون «هشًّا» يعالج الحالة الضيّقة التي ظهر فيها الخطأ فقط، وإصلاح مشكلة في مكان قد يسبّب خطأ في مكان آخر.
ولهذا تنصح الممارسة الجيدة بأن تكتب، كلما أصلحت خطأ، اختبارًا يكشفه، ثم تعيد تشغيله بانتظام. ومع الوقت تكبر مجموعة الاختبارات، فيصبح التشغيل الآلي ضرورة، عبر أنظمة تكامل مستمر تعيد الاختبارات بعد كل بناء، أو كل ليلة، أو كل أسبوع. وأحيانًا يُختار جزء من الاختبارات بتحليل أثر التغيير بدل تشغيلها كلها.
ومع وكلاء البرمجة الذين يعدّلون الكود بسرعة، عاد المصطلح إلى الواجهة. فأدوات مثل Bug0 QA Agent تكتب اختبارات المتصفّح بلغة عادية، وتخزّن الأفعال الناجحة لتعيد تشغيلها بسرعة في كل دورة، كما تشرح InfoQ.
مثال عملي
استدعيت سبّاكًا ليصلح تسريبًا في المطبخ. أصلحه وغادر. في المساء اكتشفت أن ماء الحمّام صار ضعيفًا، لأن الإصلاح غيّر ضغط الأنابيب. لو فتح السبّاك كل الصنابير قبل أن يغادر، لاكتشف المشكلة في دقيقة.
اختبار الانحدار هو فتح كل الصنابير بعد كل إصلاح. عمل مملّ، ولهذا بالضبط نتركه للآلة.
مصطلحات مرتبطة
- Unit Testing — اختبار الوحدات.
- End-to-End Testing — الاختبار الشامل من طرف إلى طرف.
- Continuous Integration — التكامل المستمر.
- Flaky Test — الاختبار المتقلّب.


