سيناريوهات الاختبار
سيناريو الاختبار (Test Scenario) عبارة من سطر واحد تصف موقفاً يجب أن يتعامل معه النظام: من يفعل ماذا، وتحت أي شرط، وما النتيجة التي تهمّ. فعبارة «عميل يلغي طلباً مدفوعاً بالبطاقة قبل خروجه للتوصيل ويستردّ المبلغ كاملاً» سيناريو. وهو يقول ماذا سنختبر لا كيف: فلا خطوات ولا بيانات محددة ولا تفاصيل شاشات.
ويتوسّع كل سيناريو عادةً في مرحلة لاحقة إلى حالة اختبار واحدة أو أكثر. وتأتي السيناريوهات أولاً لأن الفريق كله يستطيع مراجعة قائمة قصيرة من المواقف، كلٌّ منها في سطر واحد، في دقائق.
لماذا يهم
أغلى الثغرات هي المواقف التي لم يفكّر فيها أحد، وكومة حالات الاختبار التفصيلية تخفيها. فالفرق التي تقفز من القصة إلى حالات الاختبار كثيراً ما تكتب حالات كثيرة للمسار الرئيسي، ولا حالة واحدة للاسترداد الذي يفشل أو المستخدم الذي يغيّر رأيه. وقائمة السيناريوهات تعرض النطاق بمستوى تبرز فيه هذه الثغرات.
والسيناريوهات أيضاً أرخص طريقة للاتفاق على النطاق: يراجعها مالك المنتج والمطورون قبل أن يكتب أحد خطوة، والسيناريو الذي لا يستطيع أحد تحديد نتيجته المتوقعة سؤالٌ عن المتطلب اكتُشف قبل البرمجة.
ما سيناريو الاختبار، وما الذي لا يُعدّ سيناريو
السيناريو الجيد يسمّي فاعلاً وموقفاً والنتيجة التي تهمّ، ويُتتبَّع إلى مصدره: قصة مستخدم، أو معيار قبول، أو خطوة في مسار عمل، أو خطر. ولا يعتمد على الشاشات ولا على بيانات محددة، فيصمد أمام إعادة التصميم.
ليس «سيناريو الاختبار» من المصطلحات الأساسية في منهج ISTQB للمستوى التأسيسي، والفرق تستخدمه بطرق مختلفة. وأقرب مصطلحات ISTQB إليه شرط الاختبار (Test Condition)، أي جانب قابل للاختبار من مكوّن أو نظام يُحدَّد أساساً للاختبار، وإجراء الاختبار (Test Procedure)، أي سلسلة من حالات الاختبار بترتيب تنفيذها. وكثيراً ما يجمع السيناريو عدة شروط اختبار في موقف واحد يمرّ به المستخدم من البداية إلى النهاية. أما الفرق التي تستخدم الكلمة لسلسلة مرتّبة من حالات الاختبار فتقصد شيئاً قريباً من إجراء الاختبار.
- جيد: «عميل يحاول إلغاء طلب خرج للتوصيل فعلاً».
- غامض جداً: «اختبار إلغاء الطلب». يسمّي ميزة لا موقفاً.
- مفصّل جداً: «افتح الطلب 1042 واضغط إلغاء ثم نعم وتحقق من الرسالة». هذه حالة اختبار.
السيناريو مقابل حالة الاختبار
يجيب السيناريو عن سؤال «أي موقف نختبر؟»، وتجيب حالة الاختبار عن سؤال «كيف بالضبط، وبأي بيانات، وما النتيجة؟». ويتوسّع السيناريو الواحد عادةً إلى عدة حالات اختبار، حالة لكل تنويع في البيانات أو الحالة أو الدور أو الحدود، وتُتتبَّع كل حالة إلى سيناريوها ومن خلاله إلى المتطلب.
- التفصيل: السيناريو سطر واحد، وحالة الاختبار فيها الشروط المسبقة والبيانات والخطوات والنتيجة المتوقعة.
- الغرض: السيناريوهات للاتفاق على النطاق وكشف الثغرات، وحالات الاختبار لجعل التنفيذ قابلاً للتكرار.
- القرّاء: يراجع مالكو المنتجات السيناريوهات، أما حالات الاختبار فهي لمن ينفّذها، شخصاً كان أو أداة.
- التغيير: إعادة تصميم شاشة تغيّر حالات الاختبار، بينما تبقى السيناريوهات عادةً كما هي.
سيناريو الاختبارسطر واحد
أي موقف نختبر؟
- ما يحتويه:
- الفاعل والموقف والنتيجة التي تهمّ والمصدر
- الغرض:
- الاتفاق على النطاق وكشف المواقف الناقصة
- من يراجعه:
- مالك المنتج والمطورون والمختبِرون
- بعد إعادة تصميم شاشة:
- يبقى عادةً كما هو
- TS-04 عميل يحاول إلغاء طلب خرج للتوصيل
حالات الاختبارحالة لكل تنويع
كيف بالضبط، وبأي بيانات، وما النتيجة؟
- ما يحتويه:
- الشروط المسبقة وبيانات الاختبار والخطوات والنتيجة المتوقعة
- الغرض:
- تنفيذ قابل للتكرار ونتائج لا لبس فيها
- من يراجعه:
- المختبِرون ومن ينفّذ الاختبارات، شخصاً كان أو أداة
- بعد إعادة تصميم شاشة:
- قد تحتاج الخطوات والفحوص إلى تحديث
- TC-04.1 خرج للتوصيل، مدفوع بالبطاقة: رفض مع السبب ورابط الدعم
- TC-04.2 خرج للتوصيل، الدفع عند الاستلام: رفض بالرسالة نفسها
- TC-04.3 تم التوصيل، مدفوع بالبطاقة: رفض، ولا يتغيّر شيء
TS-04 عميل يحاول إلغاء طلب خرج للتوصيل
TC-04.1 الطلب «خرج للتوصيل»، مدفوع بالبطاقة
المتوقع: رفض الإلغاء؛ يذكر التطبيق السبب ويعرض رابطاً للدعم؛
حالة الطلب والدفع دون تغيير
TC-04.2 الطلب «خرج للتوصيل»، الدفع عند الاستلام
المتوقع: الرفض بالرسالة نفسها كما في TC-04.1؛ الحالة دون تغيير
TC-04.3 الطلب «تم التوصيل»، مدفوع بالبطاقة
المتوقع: الرفض؛ حالة الطلب والدفع دون تغييراستخراج السيناريوهات من القصص ومساراتها
تسمّي قصة المستخدم هدفاً واحداً، وتنصّ معايير القبول على القواعد. تتبّع المسار الذي يسلكه المستخدم إلى ذلك الهدف، مستعيناً بالقصة وبأي مخطط تدفق وبالحالات التي يمرّ بها الكائن الرئيسي، واسأل عند كل خطوة: ماذا يمكن أن يحدث أيضاً؟
ابحث عن ثلاثة أنواع من المسارات. المسار الرئيسي (Main Flow)، ويسمّى كثيراً المسار السعيد (Happy Path)، هو الطريق المعتاد إلى الهدف. والمسار البديل (Alternative Flow) طريق صالح آخر لا خطأ فيه: طريقة دفع أخرى، أو مستخدم يغيّر رأيه ويتوقف. ومسار الاستثناء (Exception Flow) هو ما يحدث حين يسوء أمر ما: قاعدة ترفض الإجراء، أو تتعطّل تبعيةٌ مثل مزوّد الدفع، أو تتغيّر البيانات أثناء تصرّف المستخدم. وينتهي معظم مسارات الاستثناء دون بلوغ الهدف، لكن بعضها يتعافى ويعود إلى المسار الرئيسي.
- اكتب المسار الرئيسي في خطوات قليلة قصيرة من وجهة نظر المستخدم.
- اسأل عند كل خطوة: أي اختيار أو بيانات أو حالة أو دور آخر ممكن، وما الذي قد يسوء؟ وكل إجابة تغيّر النتيجة سيناريو مرشّح.
- تأكّد من أن لكل معيار قبول سيناريو.
- أعطِ كل سيناريو معرّفاً ونوع مسار ومصدراً. وإن لم تستطع تحديد نتيجته المتوقعة، فاكتب سؤالاً لمالك المنتج.
مثال تطبيقي: إلغاء طلب بقالة
القصة أدناه من تطبيق لتوصيل البقالة. ومسارها الرئيسي: يفتح العميل الطلب ويضغط «إلغاء» ثم يؤكد، فتصبح حالة الطلب «ملغى»، ويُستردّ المبلغ المدفوع بالبطاقة، ويصل تأكيد. وتتبّع هذا المسار يعطي السيناريوهات الستة المدرجة تحت القصة: واحد رئيسي، واثنان بديلان، وثلاثة استثناءات.
ليس لـTS-05 وTS-06 نتيجة متوقعة في المعايير: فلا شيء يذكر ما يحدث حين يفشل الاسترداد، ولا أي لحظة تُحتسب في الإلغاء المتأخر، فتح النافذة أم التأكيد. فصار كلاهما سؤالاً لمالك المنتج قبل أن يكتب أحد حالة اختبار.
GRO-31 إلغاء طلب
بصفتي عميلاً، أريد إلغاء طلب قدّمته،
كي لا أدفع ثمن شيء لم أعد أحتاج إليه.
AC1 يمكن إلغاء الطلب إلى أن يخرج للتوصيل.
AC2 الإلغاء يردّ المبلغ المدفوع كاملاً إلى البطاقة التي دُفع بها؛
ولا يحتاج طلب الدفع عند الاستلام إلى استرداد.
AC3 لا يمكن إلغاء طلب خرج للتوصيل: يذكر التطبيق السبب
ويعرض رابطاً للدعم.
AC4 بعد الإلغاء يتلقى العميل تأكيداً في التطبيق وبرسالة SMS.
حالات الطلب: جديد > مجهَّز > خرج للتوصيل > تم التوصيل، أو ملغى
السيناريوهات
TS-01 رئيسي AC1, AC2, AC4
إلغاء طلب مدفوع بالبطاقة قبل خروجه للتوصيل: يُلغى الطلب،
ويعود المبلغ كاملاً إلى البطاقة، ويصل التأكيد في التطبيق وبرسالة SMS
TS-02 بديل AC1, AC2, AC4
إلغاء طلب بالدفع عند الاستلام: يُلغى الطلب، بلا استرداد، ويصل التأكيد
TS-03 بديل بلا معيار (خطوة التأكيد في المسار)
فتح نافذة الإلغاء ثم الإبقاء على الطلب: يبقى الطلب كما كان
TS-04 استثناء AC1, AC3
محاولة إلغاء طلب خرج للتوصيل: يُرفض مع ذكر السبب ورابط للدعم
TS-05 استثناء بلا معيار
فشل ردّ المبلغ إلى البطاقة لدى مزوّد الدفع: النتيجة المتوقعة؟ Q1
TS-06 استثناء AC1, AC3
يخرج الطلب للتوصيل بينما نافذة الإلغاء مفتوحة:
أي لحظة تُحتسب، فتح النافذة أم التأكيد؟ Q2تغطية السيناريوهات: هل ينقصنا شيء؟
تسأل تغطية السيناريوهات هل يمارس سيناريو واحد على الأقل كل بند من بنود أساس الاختبار (Test Basis) الذي اخترته، مثل معايير القبول والمسارات والحالات والأدوار والمخاطر. اربط السيناريوهات ببنودها في جدول فيه صف لكل سيناريو وعمود لكل بند، وهو مصفوفة تتبّع (Traceability Matrix) بسيطة. فالبند الذي لا سيناريو له ثغرة في اختباراتك، والسيناريو الذي لا بند له ثغرة في المتطلب أو عمل خارج القصة، ويستحق سؤالاً.
| السيناريو | AC1الإلغاء حتى الخروج للتوصيل | AC2استرداد كامل إلى البطاقة | AC3رفض الإلغاء المتأخر | AC4تأكيد في التطبيق وبرسالة SMS | النتيجة المتوقعة |
|---|---|---|---|---|---|
TS-01رئيسي · إلغاء طلب مدفوع بالبطاقة | يمارسه | يمارسه | لا يمارسه | يمارسه | منصوص عليها في المعايير |
TS-02بديل · الدفع عند الاستلام | يمارسه | يمارسه | لا يمارسه | يمارسه | منصوص عليها في المعايير |
TS-03بديل · يُبقي على الطلب | لا يمارسه | لا يمارسه | لا يمارسه | لا يمارسه | بديهية: الطلب دون تغيير |
TS-04استثناء · خرج للتوصيل | يمارسه | لا يمارسه | يمارسه | لا يمارسه | منصوص عليها في المعايير |
TS-05استثناء · فشل الاسترداد | لا يمارسه | لا يمارسه | لا يمارسه | لا يمارسه | مفتوحة: السؤال Q1 |
TS-06استثناء · يخرج أثناء نافذة الإلغاء | يمارسه | لا يمارسه | يمارسه | لا يمارسه | مفتوحة: السؤال Q2 |
- السيناريو يمارس المعيار
- النتيجة المتوقعة غير محسومة: سؤال لمالك المنتج
هذه تغطية على الورق: لا يُمارَس المعيار فعلاً إلا حين تُنفَّذ حالات الاختبار المشتقة من هذه السيناريوهات، ولا يثبت تحقّقه إلا حين تنجح.
- تغطية المعايير: 4 من 4. فالمعيار AC1 تمارسه أربعة سيناريوهات، وكلٌّ من AC2 وAC3 وAC4 يمارسه سيناريوهان.
- تغطية المسارات: 6 من 6، لكن للمسارات التي في القائمة فقط؛ فالمسار الذي لم يفكّر فيه أحد ليس في المقام.
- التغطية تعدّ البنود لا العمق: الفحوص الأساسية في AC2، أي المبلغ بالضبط والبطاقة نفسها، مكانها حالات اختباره.
- وتبقى هذه تغطية على الورق: فلا تُمارَس المعايير فعلاً إلا حين تُنفَّذ حالات الاختبار المشتقة من السيناريوهات، ولا يثبت تحقّقها إلا حين تنجح تلك الاختبارات.
جرّبها: المتطلبات ← سيناريوهات اختبار جرّبها: المتطلبات ← حالات اختبار
أخطاء شائعة
- كتابة سيناريوهات مليئة بالنقرات والبيانات، فتطول القائمة حتى تتعذّر مراجعتها وتنكسر مع كل إعادة تصميم.
- كتابة سيناريوهات عامة جداً، مثل «اختبار الدفع»، لا يرى منها أحد ما الناقص.
- استخراج السيناريوهات من المسار الرئيسي والمعايير المكتوبة فقط، ونسيان المسارات البديلة ومسارات الاستثناء.
- إغفال مصدر كل سيناريو، فتتعذّر مراجعة التغطية ولا يمكن تتبّع التغييرات.
- تخمين نتيجة متوقعة لا يذكرها المتطلب، بدلاً من السؤال عنها.
- اعتبار تغطية السيناريوهات بنسبة 100% دليلاً على اكتمال الاختبار.
من منظور ضمان الجودة
اكتب مسودة السيناريوهات حين تصبح القصة جاهزة للتنقيح (Refinement)، واقرأها بصوت عالٍ مع مالك المنتج ومطوّر: يصحّح ممثلو الأعمال السيناريو الخاطئ في ثوانٍ، ويضيف المطورون مسارات استثناء يعرفون أن الشيفرة تتعامل معها، مثل انتهاء المهلة وإعادة المحاولة. واحفظ القائمة في القصة أو في أداة إدارة الاختبار.
حوّل السيناريوهات الأعلى خطراً إلى حالات اختبار أولاً، واجعل لكل سؤال مفتوح مسؤولاً عنه. وحين يتغيّر معيار، يبيّن التتبّع من المعيار إلى السيناريو إلى حالة الاختبار أي الاختبارات يجب تحديثها. واعرض النتائج في التقارير لكل سيناريو، فأصحاب المصلحة يفهمون المواقف أفضل من أعداد الخطوات.
تمرين عملي
استخرج سيناريوهات قصة تغيير موعد التوصيل
اكتب المسار الرئيسي للقصة أدناه، واستخرج سيناريوهات مساراتها الرئيسية والبديلة والاستثنائية، وتحقق من أن كل معيار قبول يمارسه سيناريو. وحوّل كل نتيجة متوقعة لا تستطيع تحديدها إلى سؤال لمالك المنتج.
ثم قارن قائمتك بالقائمة التي تستخرجها أداة «User Story → Test Scenarios».
GRO-40 تغيير موعد التوصيل
بصفتي عميلاً، أريد نقل التوصيل إلى فترة زمنية أخرى،
كي يكون أحد في المنزل عند وصوله.
AC1 يمكن تغيير موعد التوصيل حتى ساعتين قبل بداية فترته.
AC2 لا تُعرض إلا الفترات خلال الأيام السبعة القادمة التي ما زالت فيها سعة متاحة.
AC3 التغيير الأول مجاني، والثاني رسومه 5.00 ريال.
AC4 تظهر الفترة الجديدة في الطلب ويُرسل تأكيدها برسالة SMS.- اكتب المسار الرئيسي في أربع إلى ست خطوات قصيرة.
- دوّن عند كل خطوة الاختيارات الأخرى وما قد يسوء.
- اكتب كل سيناريو في سطر واحد مع معرّف ونوع مسار ومصادر.
- اربط السيناريوهات بالمعايير من AC1 إلى AC4، ثم اكتب الأسئلة المفتوحة.
إظهار الإجابة النموذجية
المسار الرئيسي: يفتح العميل الطلب، ويختار «تغيير الموعد»، ويختار فترة متاحة، ويؤكد ويدفع أي رسوم، ويرى الفترة الجديدة، ويتلقى رسالة SMS.
السيناريوهات: TS-01 (رئيسي) أول تغيير قبل أكثر من ساعتين: مجاني، وتظهر الفترة الجديدة، وتُرسل الرسالة (من AC1 إلى AC4). TS-02 (بديل) التغيير الثاني: تُخصم 5.00 ريال (AC3 وAC4). TS-03 (بديل) يخرج العميل دون اختيار. TS-04 (استثناء) قبل أقل من ساعتين من بداية الفترة: مرفوض (AC1). TS-05 (استثناء) لا فترة متاحة خلال الأيام السبعة القادمة (AC2). TS-06 (استثناء) تمتلئ الفترة المختارة قبل التأكيد. TS-07 (استثناء) يفشل دفع الرسوم. TS-08 (يتحدد نوع مساره بإجابة Q5) تغيير ثالث للموعد (AC3).
التغطية: AC1 عبر TS-01 وTS-04، وAC2 عبر TS-01 وTS-05، وAC3 عبر TS-01 وTS-02 وTS-08، وAC4 عبر TS-01 وTS-02، أي 4 من 4. أما TS-03 وTS-06 وTS-07 فترتبط بالمسار فقط.
الأسئلة: Q1 هل يُسمح بالتغيير قبل ساعتين بالضبط من بداية الفترة، وبأي منطقة زمنية؟ Q2 ماذا يرى العميل حين لا توجد فترة متاحة؟ Q3 ماذا يحدث إذا امتلأت الفترة بين الاختيار والتأكيد؟ Q4 إذا فشل دفع الرسوم، هل تبقى الفترة القديمة؟ Q5 يتوقف AC3 عند التغيير الثاني: هل يُسمح بتغيير ثالث، وكم يكلّف؟
أسئلة شائعة
هل سيناريو الاختبار هو نفسه السيناريو في Gherkin؟
ليس تماماً. في Gherkin تقدّم الكلمة المفتاحية Scenario مثالاً محدداً واحداً مكتوباً بخطوات Given/When/Then وببيانات معيّنة، وهو قريب من حالة الاختبار وكثيراً ما يُؤتمت. أما السيناريوهات في هذا الدرس فعبارات من سطر واحد تقول ماذا نختبر، وقد توضّح الواحدَ منها عدةُ سيناريوهات Gherkin.
كم سيناريو تحتاج قصة المستخدم؟
لا يوجد عدد ثابت. اجعل لكل معيار قبول سيناريو واحداً على الأقل، وكذلك لكل مسار بديل أو مسار استثناء يغيّر النتيجة. قد تكفي ثلاثة سيناريوهات لقصة صغيرة، أما القصة التي تحرّك المال أو تغيّر الحالات فتحتاج أكثر. وإذا ظلت القائمة تطول، فتحقق هل ينبغي تقسيم القصة.
لا تحتوي أداة إدارة الاختبار لدينا على حقل للسيناريوهات. هل ما زلت أحتاج إليها؟
نعم، بشكل ما. كثيراً ما تستخدم الفرق مجلداً أو عنصراً أباً أو عنوان مجموعة للسيناريو وتضع حالات اختباره تحته. والمهم ليس الوثيقة بل المراجعة: قائمة قصيرة يفحصها الفريق بحثاً عن المواقف الناقصة قبل كتابة الحالات التفصيلية.
هل يمكنني تنفيذ سيناريو دون كتابة حالات اختبار؟
نعم. يستطيع المختبِر الخبير استخدام السيناريو دليلاً للاختبار الاستكشافي، ويسجّل البيانات والنتائج أثناء الاختبار. وهذا يناسب المناطق منخفضة المخاطر والتغذية الراجعة السريعة. أما لاختبار الانحدار والتدقيق والقواعد عالية المخاطر، فاكتب حالات اختبار حتى يكون كل تشغيل قابلاً للتكرار.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
- Gherkin Reference — Cucumberصياغة Gherkin للمواصفات القابلة للتنفيذ: Feature وRule وScenario، وخطوات Given/When/Then، وBackground وScenario Outline وExamples.
تدرّب بأدوات متقن
اشتق سيناريوهات اختبار شاملة (end-to-end) من قصة مستخدم، بما فيها التدفقات البديلة والاستثنائية.
اشتق سيناريوهات اختبار من المتطلبات الوظيفية مع خريطة للتغطية.
ولّد سيناريوهات اختبار عالية المستوى تغطي الجوانب الوظيفية والسلبية والأمنية وسهولة الاستخدام والتوافق لأي ميزة.
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
حوّل قصة مستخدم (As a / I want / So that) إلى حالات اختبار منظّمة باستخدام القوالب والقواعد الاستدلالية.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.