🔹Stub:
أداة مؤقتة بنستخدمها مكان جزء ناقص أو غير مكتمل في النظام علشان نقدر نكمل التست.
📍نستخدم Stub لما يكون الكود اللي بنختبره بيعتمد على جزء لسه مش جاهز، زي قاعدة بيانات أو Web Service.
📍الـ Stub بيرجع بيانات ثابتة أو متوقعة بدل الحقيقي.
🧪 مثال:
لو عندك Function بتحسب الفاتورة، لكنها بتجيب بيانات العميل من قاعدة بيانات لسه مش شغالة.
تقدر تعمل Stub يرجع بيانات وهمية (مثلاً: اسم العميل ورصيده) علشان تقدر تختبر الحساب.
🔹Driver:
هو العكس تمامًا.
بنستخدم Driver لما يكون الجزء اللي عايز تختبره جاهز، بس مفيش حاجة بتستدعيه لأن الجزء اللي بيستخدمه مش متبرمج لسه.
📍الـ Driver بيكون كود مؤقت أو Script بسيط بيشغل الفانكشن أو الموديول.
🧪 مثال:
عندك Function بتنفذ الدفع الإلكتروني جاهزة،
بس مفيش UI أو Backend لسه يبعَت لها البيانات،
فتكتب Driver بنفسك يبعَت لها بيانات وهمية علشان تختبرها.
📍مثال مشترك واقعي (نظام حجز مواعيد في مستشفى):
🔸 Stub:
لو بتختبر جزء حجز المواعيد (اختيار الدكتور والتاريخ)،
بس تأكيد الحجز لسه مش مبرمج،
تحط Stub مؤقت يرجّع: “تم تأكيد الحجز بنجاح”
علشان تقدر تكمّل اختبارك لواجهة الحجز.
🔸 Driver:
لو تأكيد الحجز جاهز لكن مفيش UI أو موديول بيبعت له الطلبات،
تكتب Driver بسيط يبعَت له بيانات حجز (اسم المريض – التاريخ)
علشان تختبر إنه فعلاً بيأكد الحجز ويخزن البيانات.