✅ أولًا: ما هو Test Pyramid؟ 🧱
هو concept بيشرح توزيع أنواع الـ tests حسب السرعة والتكلفة وعددها، بيساعدك تخطط عدد وأنواع التستات في المشروع.
اقترحه Mike Cohn.
📌 الفكرة الأساسية:
كل ما نطلع لفوق في الهرم:
-
التست بقى أبطأ ✅
-
أغلى في التنفيذ ⏳
🔺 الشكل:
🔼 UI Tests (Slowest + Costly)
🔼 Service/Integration Tests
🔼 Unit Tests (Fast + Cheap)
تخيله كأنك بتبني بيت:
-
الأساس = Unit Testing
-
أسرع وأكبر عدد من التستات
-
بيغطي أجزاء صغيرة جدًا من الكود (Functions / Methods)
-
زيه زي الطوب الصغير اللي بيبني الأساس
-
-
الوسط = Integration Testing
-
بيتأكد إن المكونات المختلفة بتشتغل سوا كويس
-
زي الحيطان اللي بتجمع الغرف
-
-
القمة = UI Testing (End-to-End)
-
اختبارات واجهة المستخدم والسيناريوهات الكاملة
-
بطيئة ومكلفة
-
زي التشطيبات اللي بتظهر للمستخدم
-
🎯 القاعدة عريضة وسريعة – القمة أقل وأبطأ.
✅ ثانيًا: ما هو Test Quadrants؟ 🔲
مفهوم أوسع من الهرم، قدمته Brian Marick ووضحته Lisa Crispin & Janet Gregory في Agile Testing.
بتوضح “زوايا التستنج” حسب الهدف والجمهور (Business / Technical + دعم أو نقد).
📌 بيوضح علاقة أنواع التستنج بـ:
-
هل هي موجهة للمبرمجين ولا للبيزنس؟
-
هل هي Automated ولا Manual؟
-
هل هي Functional ولا Non-Functional؟
💡 تخيلهم كأنهم أربعة أصدقاء:
🔹الاول Technology, support the team
ودا فيه أنواع زي ال Unit و ال Unit integration، اللي بتساعد ال developers يتأكدوا ان الكود شغال فل الفل.
🔹التاني Business, support the team
ودا فيه أنواع زي ال Functional وال System وال Acceptance، الي بيتأكدوا ان ال system كامل شغال تمام و كمان زي ما العميل عايزه.
🔹التالت Business, critique the product
ودا يشمل أنواع زي ال Usability وال Exploratory، الي بتدور علي مشاكل مش مألوفه وممكن تظهر للمستخدم بعدين.
🔹الرابع Technology, critique the product
ودا بيشمل أنواع ال Non-Functional زي ال performance، والي بيكتشف ال system هيتعامل ازاي تحت ضغط و ظروف صعبه.
🎯 الـ Quadrants مش ترتيب، بل زوايا رؤية:
-
هل التست لدعم الفريق؟ ولا لاكتشاف مشاكل؟
-
هل التست موجه للـ Business ولا للـ Technology؟
🔔 ملخص سريع :
✅ Test Pyramid = كمية وترتيب التستات (ابدأ بإيه وكم مرة) عشان نضمن الكفاءة
✅ Test Quadrants = زاوية الرؤية لكل نوع من التست (بتساعدك تجاوب: ليه؟ لمين؟) ، إزاي نغطي التستينج بشكل متوازن من كل الزوايا (Dev + Business + UX + Performance)