بدلاً من فتح البرنامج وتجربته يدوياً في كل مرة، تكتب بضعة أسطر من الشيفرة تستدعي الدالة وتقارن النتيجة بالقيمة الصحيحة. هذا هو اختبار الوحدة.
مثال#
افترض أن لديك دالة تحسب الخصم:
def discount(price, percent):
return price - price * percent / 100
def test_discount():
assert discount(200, 10) == 180
assert discount(100, 0) == 100كلما غيّرت الشيفرة شغّلتَ الاختبار. وإذا اختلفت النتيجة عرفتَ في اللحظة نفسها.
المزايا#
- يكتشف الخطأ مبكراً: قبل وصوله إلى المستخدم.
- يمنح الجرأة على التغيير: مع الاختبارات تستطيع إعادة هيكلة الشيفرة دون خوف.
- توثيق حي: تُظهر الاختبارات ما يُفترض أن تفعله الدالة.
- رخيص: تشغيل عشرات الاختبارات في ثوانٍ.
اختبار وحدة جيد#
- سريع ومستقل.
- يفحص سلوكاً واحداً.
- لا يعتمد على الإنترنت ولا على قاعدة بيانات حقيقية.
- يجرّب الحالات الحدّية أيضاً: القيمة صفر، والنص الفارغ، والرقم السالب.
موقعه بين الاختبارات الأخرى#
اختبار الوحدة هو قاعدة هرم الاختبار. وفوقه اختبار التكامل (عدة أجزاء معاً) والاختبار الشامل (End-to-End، مثل سلوك المستخدم في المتصفح) وهما أبطأ وأكثر كلفة.
الذكاء الاصطناعي#
يمكن أن تطلب من مساعد ذكاء اصطناعي اقتراح اختبارات، لكن تأكد أن الاختبارات تقيس السلوك الصحيح فعلاً، لا مجرد ما تُرجعه الشيفرة الحالية.