تخيل معي إنك تريد أن تختبر خاصية في موقع مثل Carrefour Jordan أو Amazon - مثلاً نظام الخصومات. عندك كود خصم بشتغل لكن للطلبات التي قيمتها أكثر من 50 دينار.
السؤال: كم حالة اختبار لازم تعمل؟
هل تختبر كل مبلغ ممكن؟ 1 دينار، 2 دينار، 3 دينار... لحد لا توصل 1000 دينار؟ طبعاً لأ! هذه مش practical ولا efficient.
هون بيجي دور تقسيم الفئات المتكافئة - أداة ذكية تساعدك تقلل عدد الحالات الاختبارية وبنفس الوقت تحافظ على تغطية فعّالة.
بنهاية هذا الدرس، راح تكون قادراً على:
الفكرة الأساسية: كل المدخلات في نفس الفئة المتكافئة تتصرف بنفس الطريقة في النظام - يعني إذا واحدة منهم شتغلت صح، الباقي أيضاً راح يشتغل صح (نظرياً على الأقل).
بدل لا تختبر كل قيمة ممكنة، تقسم المدخلات لمجموعات (فئات) وتختار ممثل واحد من كل مجموعة.
خلينا ناخد مثال واقعي من مواقع التسوق:
القاعدة:
| الفئة | النوع | مثال على القيمة | السلوك المتوقع |
|---|---|---|---|
| أقل من 50 | Valid | 25 دينار | لا يوجد خصم |
| من 50 إلى 99.99 | Valid | 75 دينار | خصم 10% |
| 100 فأكثر | Valid | 150 دينار | خصم 20% |
| قيمة سالبة | Invalid | -10 دينار | رسالة خطأ |
| صفر | Invalid/Edge | 0 دينار | رسالة خطأ |
| حروف | Invalid | "ABC" | رسالة خطأ |
بدلاً من أن نختبر مئات القيم، نختار ممثل واحد من كل فئة:
حالات الاختبار:
من مئات أو آلاف الاحتمالات، وصلنا ل 6 حالات بس!
تخيل إنك تختبر نظام التحقق من العمر في Netflix للمحتوى +18.
القاعدة: العمر المسموح من 1 إلى 120 سنة، والمحتوى +18 محجوب للأعمار أقل من 18.
| الفئة | النوع | مثال | السلوك المتوقع |
|---|---|---|---|
| أقل من 1 | Invalid | 0, -5 | رسالة خطأ |
| من 1 إلى 17 | Valid (Minor) | 10, 15 | محتوى محدود |
| من 18 إلى 120 | Valid (Adult) | 25, 50 | كل المحتوى متاح |
| أكثر من 120 | Invalid | 150 | رسالة خطأ |
| غير رقمي | Invalid | "عشرين" | رسالة خطأ |
حالات الاختبار:
خلينا نكون صريحين - ECP أداة مفيدة، لكن مش سحر!
الفكرة الأساسية في ECP مبنية على افتراض: "كل القيم في نفس الفئة تتصرف بنفس الطريقة"
لكن هذا الافتراض مش دايم صحيح في الواقع!
Heuristic يعني "قاعدة إبهامية" - أداة تساعدك تفكر، مش قانون مطلق.
المشكلة: كثير testers ياخدوا ECP وكأنه formula رياضية - "قسّم الفئات، اختار ممثل، وخلص!"
الواقع: البرمجيات معقدة، والـ bugs مش دايم تتبع منطق المواصفات.
تخيل معي هذه القصة من موقع تسوق:
السيناريو:
المفروض: الخصم يرجع 10% اللي صار: الخصم ضل 20%! 🐛
هذا Bug مش راح تلاقيه بـ ECP التقليدي!
ليش؟ لأنك اختبرت القيم الثابتة، لكن ما اختبرت التغييرات في الحالة (State Changes).
هذا النوع من الأخطاء نسميه Standing-State Failure - عندما الحالة السابقة تأثر على السلوك الحالي.
ECP أداة قوية، بس:
أسئلة لازم تسألها:
✅ ECP تقنية قوية لتقليل عدد حالات الاختبار مع الحفاظ على تغطية جيدة
✅ الفكرة الأساسية: قسّم المدخلات لفئات متكافئة، واختر ممثل من كل فئة
✅ استخدمها مع تقنيات أخرى مثل BVA للحصول على نتائج أفضل
✅ لكن تذكّر: ECP هو heuristic، مش formula سحرية
✅ المواصفات مش الواقع - الـ bugs الحقيقية تظهر في السياقات المعقدة
✅ اختبر الفروقات الكبيرة أولاً قبل لا تضيع وقت على التفاصيل الصغيرة
✅ استخدم models متعددة - كل model يكشف bugs مختلفة
✅ كن متشككاً - فكّر بشكل نقدي، واستكشف، ولا تعتمد على أي تقنية بشكل أعمى