التدفقات البديلة وتدفقات الاستثناء
التدفقات البديلة وتدفقات الاستثناء
سيناريو حالة الاستخدام الذي يصف المسار المثالي فقط — الخطوات التي تُنفَّذ حين يسير كل شيء على ما يرام — سيناريو منقوص. يجب على الأنظمة الحقيقية التعامل مع الاختيارات والانعطافات والأعطال. توفر كتابة حالات الاستخدام آليتين منظمتين لهذا الغرض: التدفقات البديلة (المسارات الصحيحة غير الافتراضية) وتدفقات الاستثناء (مسارات الخطأ أو الفشل). إتقان هاتين الآليتين يُحوّل السيناريو السطحي إلى مواصفة قابلة للتصميم والاختبار.
المسارات الثلاثة عبر حالة الاستخدام
يضم كل سيناريو حالة استخدام ثلاث فئات من التدفقات:
- التدفق الرئيسي (الأساسي) — سيناريو النجاح الأساسي؛ المسار الذي يُتّبع حين تتحقق جميع الشروط المسبقة ولا يقع أي خطأ.
- التدفقات البديلة — تباينات صحيحة ومقصودة. يختار الفاعل أو النظام مساراً مختلفاً، لكن النتيجة لا تزال مقبولة. مثال: الدفع ببطاقة ائتمانية مقابل الدفع من رصيد المحفظة.
- تدفقات الاستثناء — شيء يسوء. يجب على النظام اكتشاف الحالة والاستجابة باحترافية. مثال: انتهاء مهلة بوابة الدفع، أو تحذير تفاعل دوائي عند إدخال وصفة طبية.
اصطلاحات التدوين
تُكتب التدفقات البديلة وتدفقات الاستثناء داخل وثيقة حالة الاستخدام ذاتها التي تحتوي على التدفق الرئيسي. ترقَّم بمعرّف فرع وإزاحة خطوة:
A1— أول تدفق بديل؛ خطواتهA1.1،A1.2، …E1— أول تدفق استثناء؛ خطواتهE1.1،E1.2، …- يُحدد رأس كل تدفق: نقطة التفرع (مثلاً "عند الخطوة 4 من التدفق الرئيسي") وشرط الإطلاق.
- ينتهي كل تدفق بأحد الخيارات: الاستئناف من الخطوة N في التدفق الرئيسي، أو تنتهي حالة الاستخدام بنجاح، أو تنتهي حالة الاستخدام بفشل.
مثال تطبيقي: حجز موعد في عيادة إلكترونية
حالة الاستخدام: حجز موعد. الفاعل: المريض. النظام: بوابة العيادة.
التدفق الرئيسي
- يختار المريض الطبيب والتاريخ المفضل.
- يعرض النظام المواعيد المتاحة.
- يختار المريض موعداً ويؤكده.
- يعالج النظام رسوم الحجز عبر وسيلة الدفع المحفوظة.
- يرسل النظام رسالة تأكيد بالبريد الإلكتروني. تنتهي حالة الاستخدام بنجاح.
التدفق البديل A1 — لا توجد وسيلة دفع محفوظة (يُطلق عند الخطوة 4)
- يكتشف النظام عدم وجود وسيلة دفع محفوظة في حساب المريض.
- يطلب النظام من المريض إدخال بيانات البطاقة.
- يُدخل المريض البيانات ويرسلها.
- الاستئناف من الخطوة 4 في التدفق الرئيسي.
التدفق البديل A2 — يطلب المريض موعداً مختلفاً (يُطلق عند الخطوة 3)
- يختار المريض "عرض مزيد من المواعيد" بدلاً من التأكيد.
- يعرض النظام الأسبوع التالي المتاح.
- الاستئناف من الخطوة 3 في التدفق الرئيسي.
تدفق الاستثناء E1 — انتهاء مهلة بوابة الدفع (يُطلق عند الخطوة 4)
- لا يتلقى النظام أي استجابة من بوابة الدفع خلال 10 ثوانٍ.
- يلغي النظام حجز الموعد المؤقت.
- يعرض النظام: "تعذّر معالجة الدفع. يُرجى المحاولة مجدداً أو التواصل مع الدعم."
- تنتهي حالة الاستخدام بفشل.
تدفق الاستثناء E2 — حجز الموعد من قِبَل مريض آخر (يُطلق عند الخطوة 3)
- يكتشف النظام أن الموعد حُجز بالتزامن من قِبَل مريض آخر.
- يعرض النظام رسالة "الموعد لم يعد متاحاً" ويُحدّث القائمة.
- الاستئناف من الخطوة 3 في التدفق الرئيسي.
تمثيل التدفقات بمخطط نشاط
يرسم المخطط التالي حالة "حجز الموعد" ذاتها على شكل تدفق نشاط، مُوضّحاً نقاط التفرع التي تنشأ عندها التدفقات البديلة وتدفقات الاستثناء وكيف تعود إلى المسار الرئيسي (أو تنتهي). تمثّل معيّنات القرار شروط الإطلاق الموضحة في نص السيناريو.
كتابة التدفقات في وثيقة حالة الاستخدام
يوضح القالب المنظم أدناه كيفية ظهور هذه التدفقات في وثيقة حالة استخدام رسمية. لاحظ أن كل تدفق بديل أو استثنائي يستشهد برقم الخطوة المحددة في التدفق الرئيسي — هذه الدقة هي ما يجعل الوثيقة لا لبس فيها لدى المطورين والمختبرين.
تقنيات عملية للكشف عن جميع التدفقات
يجد المحللون أحياناً صعوبة في استقصاء جميع التدفقات البديلة وتدفقات الاستثناء. استخدم هذه المحفزات المنهجية للكشف عنها:
- "ماذا لو غيّر الفاعل رأيه؟" — يقود إلى تدفقات بديلة (إلغاء، عودة للخلف، اختيار خيار مختلف).
- "ماذا لو كانت البيانات غير صحيحة؟" — يقود إلى تدفقات استثناء (بريد إلكتروني غير صالح، تاريخ في الماضي، حقل مفقود).
- "ماذا لو فشل نظام خارجي؟" — يقود إلى تدفقات استثناء (بوابة دفع، خدمة بريد، API طرف ثالث).
- "ماذا لو تصرف مستخدمان في آنٍ واحد؟" — يقود إلى تدفقات استثناء تزامنية (تعارض على موارد مشتركة).
- "ماذا لو كانت الصلاحيات غير كافية؟" — يقود إلى تدفقات استثناء (وصول غير مصرح، جلسة منتهية الصلاحية).
الأخطاء الشائعة
- تصنيف كل شيء على أنه استثناء: اختيار الفاعل لمسار بديل صحيح (الدفع بالفاتورة بدلاً من البطاقة) هو تدفق بديل، وليس استثناءً.
- إغفال النتيجة: يجب أن ينتهي كل تدفق بـ"الاستئناف من الخطوة N"، أو "ينتهي بنجاح"، أو "ينتهي بفشل".
- شرط إطلاق غامض: الكتابة "عند فشل الدفع" دون الإشارة إلى رقم الخطوة تجعل الوثيقة أصعب تتبعاً واختباراً.
- غياب نقطة العودة: يجب أن يحدد التدفق البديل الذي يعود إلى المسار الرئيسي الخطوةَ التي يعود إليها بدقة.
مع التوثيق الكامل للتدفقات البديلة وتدفقات الاستثناء، تُصبح حالة الاستخدام عقداً قابلاً للاختبار. كل تدفق يُعيَّن مباشرةً إلى حالة اختبار واحدة على الأقل — وهو الارتباط الذي ستستكشفه في الدرس التاسع.