شرح المفهوم
التركيز على الاختبار يعني التحقق من السلوك عن قصد بدلاً من افتراض أن البرنامج صحيح لأنه تم تجميعه مرة واحدة. في هذا الدرس، ستستخدم مثال C++ صغيرًا لترى كيف يمكن لتأكيد مباشر (direct assertion) أن يحمي دالة أساسية من الأخطاء الصامتة. الهدف ليس بناء مجموعة اختبار كبيرة بعد. الهدف هو التدرب على التفكير بالنتائج المتوقعة: بالنظر إلى هذا المدخل، ماذا يجب أن يحدث، وكيف يمكنني التحقق من ذلك فورًا؟
أين تضع الكود
- ابدأ بالمتغيرات والمدخلات. اجعل `includes` والدالة `main` وأنواع البيانات صريحة.
- أضف منطق المعالجة في القسم الأوسط.
- اختتم بالمخرج والتحقق السريع.
مرجع الأوامر
- اذكر المخرج المتوقع لكل حالة اختبار قبل تشغيل البرنامج.
- أضف تأكيدًا آخر يتحقق من نمط إدخال مختلف ولكنه صالح.
- اجعل الدالة المختبرة بسيطة بحيث يكون الغرض من كل فحص سهل الفهم.
- استخدم مخرج البرنامج للتأكيد عندما تكون جميع التأكيدات قد نجحت.
دليل خطوة بخطوة
- شغّل المثال مرة واحدة وتأكد من اكتمال كلا الفحصين دون فشل.
- اقرأ كل تأكيد (assertion) واشرح السلوك الذي يحميه.
- أضف حالة اختبار أخرى لشرط حافة صغير مثل إضافة صفر.
- اكسر تأكيدًا واحدًا عن قصد، شغّل الكود، ولاحظ كيف يتم الإبلاغ عن الفشل.
- أعد التوقع الصحيح وتحقق من أن البرنامج يعمل بنجاح مرة أخرى.
تمارين تطبيقية
- اكتب اختبارًا مشابهًا لدالة طرح (subtract function) بمدخلين مختلفين.
- أضف حالة اختبار تتحقق من القيم المتكررة مثل `add(4, 4)`.
- أنشئ رسالة تقرير صغيرة تُطبع فقط بعد نجاح جميع الفحوصات.
تحديات برمجية
- صمّم ثلاثة اختبارات صغيرة يمكنها اكتشاف خطأ بسرعة في دالة مساعدة حسابية أساسية.
- قارن الاختبار باستخدام `assert` بالاختبار عن طريق طباعة القيم فقط، واشرح أيهما يوفر ملاحظات أسرع هنا.
مهام تمرين صغيرة
- أعد تسمية معلمة واحدة لجعل الدالة أكثر وضوحًا.
- أضف تأكيدًا ناجحًا واحدًا وأعد تشغيل البرنامج.
- اكتب جملة واحدة تصف ما تضمنه الاختبارات.
خطأ شائع
Skipping input validation or mixing logic/output in one unstructured block.
تحدٍ مصغّر من الواقع
Build a small real-life example for this lesson topic using 3 clear steps: input, process, output.