لو عندك نظام بيتحرك بين حالات مختلفة (زي آلة بيع أو صفحة تسجيل دخول)، فمهم تختبر كل الحالات والانتقالات اللي بتحصل بينهم، وده بيتقسم لنوعين:
✅ ما هو الـ 0-Switch Coverage؟
🔹 بنسميه كمان:
-
Edge Coverage أو
-
Transition Coverage
🔸 هو ببساطة:
التأكد من إن كل انتقال (Transition) منفرد قد تم اختباره مرة واحدة على الأقل.
بتغطي كل انتقال منفصل بين حالتين بدون التركيز على التتابع. يعني كل سهم في الرسمة بيتجرب مرة واحدة على الأقل.
🎯 يعني: لو عندك transition من A → B، وواحد من B → C
فـ 0-switch بيطلب منك تختبري A → B، و B → C
لكن مش لازم تختبري التسلسل الكامل A → B → C مع بعض
✅ مثال عملي:
تخيل إنك بتختبر ماكينة صراف آلي (ATM) وعندها الحالات دي:
1️⃣ الشاشة الرئيسية
2️⃣ إدخال الكارت
3️⃣ إدخال الرقم السري
4️⃣ اختيار نوع العملية
5️⃣ سحب الفلوس
لو عايز تحقق 0-Switch Coverage، يبقى كل المطلوب منك تزور كل حالة مرة، مش شرط بترتيب معين.
💡 يعني ممكن تدخل على كل شاشة مرة، لكن مش شرط تختبر كل الطرق اللي بتتنقل بيها بينهم.
✅ ما هو الـ 1-Switch Coverage؟
🔹 بنسميه كمان:
-
Transition Pair Coverage
🔸 هو:
التأكد من اختبار كل زوج متتالٍ من الانتقالات (2 connected transitions) على الأقل مرة واحدة.
1-Switch Coverage (تغطية الانتقالات المباشرة بين الحالات)
هنا مش بس تزور كل حالة، لازم كمان تختبر كل انتقال (Transition) بين حالتين متتاليتين.
🎯 يعني: لازم تختبر تسلسلات كاملة مكوّنة من انتقالين:
نفس ATM، علشان تحقق 1-Switch Coverage لازم تختبر كل الانتقالات، زي:
✔ من الشاشة الرئيسية → إدخال الكارت
✔ من إدخال الكارت → إدخال الرقم السري
✔ من إدخال الرقم السري → اختيار نوع العملية
✔ من اختيار نوع العملية → سحب الفلوس
💡 يعني مش بس تشوف كل الشاشات، لازم تتأكد إن كل الطرق اللي بتوصل بيها بينهم شغالة صح.
🧠 مثال عملي للتوضيح:
عندنا State Diagram فيه:
A → B → C
↓
D
الانتقالات:
-
A → B
-
B → C
-
B → D
✅ 0-switch coverage:
-
نغطي كل انتقال مرة:
-
A → B
-
B → C
-
B → D
(ده كافي)
-
✅ 1-switch coverage:
-
نغطي كل زوج من الانتقالات:
-
A → B → C
-
A → B → D
(لازم نغطي الاثنين، عشان كل pair محتمل من التتابعات)
-
🎯 ازاي تستفيد من الكلام ده في شغلك كـ Tester؟
✅ لو حققت 0-Switch Coverage: انت بس ضمنت إن كل شاشة أو حالة موجودة شغالة.
✅ لو حققت 1-Switch Coverage: انت ضمنت إن التنقل بينهم كمان مفيهوش مشاكل، وده اختبار أقوى وأقرب لاستخدام العميل الحقيقي.
💡 تلميحة للـ Interview أو ISTQB:
-
“0-switch بيغطّي كل edge بشكل فردي، 1-switch بيركز على كل path من انتقالين”
-
كل ما الـ switch number يزيد (n-switch)، كل ما التغطية تبقى أعمق وأقرب للـ Real Scenario
-
نصيحة: دايمًا حاول تختبر على الأقل 1-Switch Coverage، علشان تضمن إن كل التنقلات شغالة بدون Bugs! 🐞