أولوية حالات الاختبار

أولوية حالة الاختبار (Test Case Priority) هي أهميتها النسبية: تحدّد أيّ حالات الاختبار تُنفَّذ أولاً، وأيّها يمكن تركه حين يضيق الوقت. ويسمّي منهج ISTQB للمستوى التأسيسي ذلك ترتيب أولويات حالات الاختبار (Test Case Prioritization).

مثال: إصدار يضيف الدفع بالبطاقة إلى تطبيق لحجز مواعيد العيادات. حالة «ادفع العربون واحصل على حجز مؤكَّد» أولويتها P1 وتُنفَّذ في الصباح الأول، أما حالة «روابط صفحة المساعدة تعمل» فأولويتها P3 ولا تُنفَّذ إلا إذا بقي وقت.

لماذا يهم

الاختبار الشامل مستحيل، لذا ينفد الوقت قبل أن تنفد حالات الاختبار. ومن دون أولويات تُنفَّذ الحالات بترتيب كتابتها، وقد تكون الحالات التي تغطي المدفوعات أو البيانات الشخصية ما تزال تنتظر التنفيذ في يوم الإصدار. ومع الأولويات يصبح تقليص النطاق قراراً لا مصادفة: ما يبقى دون اختبار هو الجزء الأقل خطراً، والجميع يعرف ما هو.

والأولوية أداة للتقارير أيضاً: عبارة «نجحت حالات P1 الأربع جميعها؛ ولم تُنفَّذ حالة P3 واحدة» تخبر مالك المنتج في سطر واحد على أي أساس يقوم قرار الإصدار.

ما الذي تحدّده الأولوية وما الذي يشكّل الترتيب

تحدّد الأولوية ترتيب التنفيذ وترتيب الحذف، وتُراجَع في كل دورة، لأن الخطر يتوقف على ما تغيّر في تلك النسخة (Build). وكما مرّ في درس تهيئة الاختبار، يصف منهج ISTQB للمستوى التأسيسي (الإصدار ⁦4.0⁩) ثلاث طرق لترتيب حالات الاختبار في جدول تنفيذ الاختبار، وقيدين يعدّلانها:

  • المبني على المخاطر (Risk-based): تُنفَّذ أولاً الحالات التي تغطي أهم المخاطر. وهذه هي الطريقة التي يستخدمها هذا الدرس.
  • المبني على التغطية (Coverage-based): تُنفَّذ أولاً الحالات التي تحقق أكبر تغطية، أو تضيف كل حالة تالية أكبر تغطية لم تتحقق بعد.
  • المبني على المتطلبات (Requirements-based): يتبع الترتيب الأولويات التي منحها أصحاب المصلحة للمتطلبات التي تُتتبَّع إليها الحالات.
  • الاعتماديات: إذا احتاجت حالة عالية الأولوية إلى حالة أدنى أولوية قبلها، كأن تنشئ بياناتها، فالحالة الأدنى أولوية تُنفَّذ أولاً.
  • الموارد: بيئة أو جهاز أو شخص لا يتاح إلا في نافذة زمنية محددة يقدّم الحالات أو يؤخّرها.

جرّبها: المتطلبات ← حالات اختبار

الأولوية والخطورة والحَرَجية

الخطورة (Severity) صفة للعيوب: يعرّفها مسرد ISTQB بأنها درجة أثر العيب في تطوير مكوّن أو نظام أو في تشغيله. والأولوية (Priority) هي مستوى الأهمية التجارية الممنوح لعنصر ما؛ وفي حالة الاختبار تعني متى يجب تنفيذها وهل يجوز تخطّيها.

لا خطورة لحالة الاختبار، لأن شيئاً لم يفشل بعد. لكن لها حَرَجية (Criticality): مدى سوء الإخفاق في المنطقة التي تغطيها. وبعض الفرق تسمّيها تجاوزاً «الخطورة». أما الأولوية فتجمع هذا الأثر مع احتمال الإخفاق في هذه النسخة، لذا قد يختلف الاثنان:

  • حَرَجية عالية وأولوية أدنى: إعادة تعيين كلمة المرور وظيفة حرجة، لكنها لم تتغيّر ونجح فحصها المؤتمت على هذه النسخة، فيمكن أن تكون الحالة اليدوية P2.
  • حَرَجية منخفضة وأولوية أعلى: الخطأ في رسالة تذكير نصية أُعيدت صياغتها مشكلة ثانوية، لكن القالب جديد ومعرّض للأخطاء، فحالته P2 لا P3.

الترتيب المبني على المخاطر: الأثر × الاحتمال

قيّم كل حالة اختبار، أو الخطر الذي تغطيه، على مقياسين مكتوبين، واضرب التقديرين، ثم حوّل الدرجة إلى أولوية. ثلاثة مستويات تكفي للبداية؛ ودليل الاختبار المبني على المخاطر يستخدم أربعة للميزات كاملة. استخدم مقياساً مكتوباً واحداً في كل مشروع.

الأثر × الاحتمال، وكلٌّ منهما من ⁦1⁩ إلى ⁦3⁩، يعطي حالة الاختبار درجة من ⁦1⁩ إلى ⁦9⁩: الدرجة من ⁦6⁩ إلى ⁦9⁩ تجعلها P1، و⁦3⁩ أو ⁦4⁩ تجعلها P2، و⁦1⁩ أو ⁦2⁩ تجعلها P3.
الاحتمالالأثر
1 منخفض2 متوسط3 عالٍ
3 عالٍP2الدرجة 3P1الدرجة 6P1الدرجة 9
2 متوسطP3الدرجة 2P2الدرجة 4P1الدرجة 6
1 منخفضP3الدرجة 1P3الدرجة 2P2الدرجة 3
  • P1: الدرجة ⁦6–9⁩، تُنفَّذ أولاً في كل دورة
  • P2: الدرجة ⁦3–4⁩، تُنفَّذ في كل دورة كاملة بعد P1
  • P3: الدرجة ⁦1–2⁩، تُنفَّذ إذا سمح الوقت وتُحذف أولاً
الأثر
3 عالٍ — مال أو بيانات شخصية أو تعرّض قانوني أو مسار أساسي معطّل لكثير من المستخدمين
2 متوسط — ميزة متدهورة أو وجود حل بديل
1 منخفض — عيب شكلي أو ميزة نادرة الاستخدام
الاحتمال
3 عالٍ — شيفرة جديدة أو متغيّرة أو منطق معقد أو تكامل جديد أو تاريخ من العيوب
2 متوسط — منطقة يمسّها التغيير بشكل غير مباشر
1 منخفض — منطقة لم تتغير ومستقرة

مقياس توضيحي من ثلاثة مستويات: يكتب كل فريق تعريفاته وشرائحه الخاصة في خطة الاختبار.

  • الأثر (Impact): «عالٍ» يعني مالاً أو بيانات شخصية أو تعرّضاً قانونياً أو مساراً أساسياً معطّلاً لكثير من المستخدمين؛ و«متوسط» ميزة متدهورة أو وجود حل بديل؛ و«منخفض» عيب شكلي أو ميزة نادرة الاستخدام.
  • الاحتمال (Likelihood): «عالٍ» يعني شيفرة جديدة أو متغيّرة أو منطقاً معقداً أو تكاملاً جديداً أو تاريخاً من العيوب؛ و«متوسط» منطقة يمسّها التغيير بشكل غير مباشر؛ و«منخفض» منطقة لم تتغير ومستقرة.
النسخة النصية
Score = impact x likelihood, each rated 1 Low, 2 Medium, 3 High

                                IMPACT
                      1 Low     2 Medium  3 High
LIKELIHOOD  3 High  | 3   P2  | 6   P1  | 9   P1  |
            2 Medium| 2   P3  | 4   P2  | 6   P1  |
            1 Low   | 1   P3  | 2   P3  | 3   P2  |

Score 6-9 -> P1      Score 3-4 -> P2      Score 1-2 -> P3

جرّبها: مولّد الاختبار المبني على المخاطر

أعراف P1 وP2 وP3

لا يوجد معيار يحدّد هذه التسميات: فالفرق والأدوات تستخدم من P1 إلى P3، أو من P0 إلى P3، أو حرج وعالٍ ومتوسط ومنخفض. المهم تعريف مكتوب في خطة الاختبار. ومن الأعراف الشائعة:

  • P1، يجب تنفيذها: المسارات التجارية الأساسية والتغييرات عالية المخاطر. تُنفَّذ أولاً في كل دورة، وفشلها يوقف الإصدار عادةً.
  • P2، ينبغي تنفيذها: وظائف مهمة بمخاطر متوسطة. تُنفَّذ في كل دورة كاملة بعد P1، ولا تُتخطّى إلا بموافقة مالك المنتج.
  • P3، يمكن تنفيذها: مناطق منخفضة المخاطر أو مستقرة أو شكلية. تُنفَّذ إذا سمح الوقت أو بالتناوب، وتُحذف أولاً، ويُسجَّل الحذف في تقرير الاختبار.
  • تضيف بعض الفرق P0 لفحوص اختبار الدخان القليلة التي تقرّر هل النسخة قابلة للاختبار أصلاً.
  • حالة الاختبار P1 ليست عيباً P1: التسمية على العيب تعني مدى سرعة إصلاحه، وعلى حالة الاختبار مدى سرعة تنفيذها.

جرّبها: مولّد حالات الاختبار جرّبها: مولّد سيناريوهات الانحدار

مثال تطبيقي: إصدار لتطبيق حجز العيادات

الإصدار ⁦3.2⁩ من تطبيق ويب لحجز مواعيد العيادات يضيف عربوناً يُدفع بالبطاقة عند الحجز، ويعيد تصميم شاشة تغيير الموعد، ويعيد كتابة قالب رسالة التذكير النصية بالعربية؛ ولم يتغيّر شيء آخر. ويعرض الجدول في نهاية هذا القسم حالات الاختبار الثماني بعد تقييمها، مرتبةً بترتيب التنفيذ.

  • بيئة الدفع التجريبية (Sandbox) مشتركة ومتاحة فقط من ⁦09:00⁩ إلى ⁦13:00⁩، لذا تُنفَّذ حالتا الدفع أولاً.
  • تحجز TC-BOOK-02 موعداً لا يتطلب عربوناً. منطقها نفسه لم يتغير، لكنها تمر بمسار الحجز الذي مسّه تغيير العربون: احتمال متوسط، ومع الأثر العالي تبقى P1.
  • أثر TC-SCH-01 عالٍ لكنها لم تتغير: P2 لا P1. وأثر TC-SMS-02 منخفض لكنها جديدة: P2 لا P3.
  • تحتاج TC-SMS-02 إلى رقم الهاتف الذي تُعِدّه TC-PRO-05، لذا تُنفَّذ TC-PRO-05 قبلها مباشرةً وتبقى P3: القيد يغيّر الترتيب لا التسمية.
  • إذا قُلّصت الدورة من يومين إلى يوم واحد، تُحذف TC-HLP-01 ويُبلَّغ عنها على أنها لم تُنفَّذ، بموافقة مالك المنتج.
الإصدار 3.2: حالات الاختبار بترتيب التنفيذ
كل سطر: الحالة، ثم الأثر × الاحتمال = الدرجة، ثم الأولوية

1. دفع العربون، والحجز مؤكَّد (TC-PAY-01): عالٍ × عالٍ = 9، P1
2. رفض البطاقة: لا حجز ولا خصم أي مبلغ (TC-PAY-04): عالٍ × عالٍ = 9، P1
3. حجز لا يتطلب عربوناً، والتغيير غير مباشر (TC-BOOK-02): عالٍ × متوسط = 6، P1
4. تغيير الموعد على الشاشة الجديدة (TC-RES-03): متوسط × عالٍ = 6، P1
5. عرض المواعيد المتاحة لدى الطبيب (TC-SCH-01): عالٍ × منخفض = 3، P2
6. تحديث رقم الهاتف في الملف الشخصي (TC-PRO-05): متوسط × منخفض = 2، P3
7. رسالة التذكير النصية بالقالب العربي الجديد (TC-SMS-02): منخفض × عالٍ = 3، P2
8. روابط صفحة المساعدة تعمل (TC-HLP-01): منخفض × منخفض = 1، P3

أخطاء شائعة

  • منح الأولوية P1 لكل شيء تقريباً، فلا تعود التسمية تخبر بما يُنفَّذ أولاً أو بما يُحذف.
  • نسخ خطورة عيب أو أولويته إلى حالة اختبار لتصبح أولويتها.
  • تقييم الأثر وحده: منطقة حرجة لكنها مستقرة ولم تتغير يمكن أن تنتظر بعد منطقة متوسطة الأثر أُعيدت كتابتها للتو.
  • تحديد الأولويات مرة واحدة وعدم مراجعتها، مع أن الخطر يتحرك مع كل تغيير.
  • تجاهل الاعتماديات ونوافذ البيئات، فلا يمكن تنفيذ حالة P1 حين يأتي دورها.
  • حذف حالات P3 بصمت بدلاً من تسجيل ما لم يُنفَّذ ومن وافق على ذلك.

من منظور ضمان الجودة

عادةً يقترح المختبِر الأولويات: يقدّم مالك المنتج أو محلل الأعمال الأثر، ويخبر المطورون بما تغيّر، ويملك قائد الاختبار التعريفات في خطة الاختبار. سجّل الأثر والاحتمال بجانب التسمية، ليرى أي شخص لماذا الحالة P2 ويعيد تقييمها في الدورة التالية.

أثناء التنفيذ، أبلغ عن التقدم حسب الأولوية، مثل «P1: نُفّذت ⁦4⁩ من ⁦4⁩، وفشلت واحدة». وأعد التقييم حين تتغير الوقائع: تجمّع العيوب في شاشة واحدة يرفع احتمال الإخفاق لكل حالة تمسّها.

تمرين عملي

رتّب أولويات إصدار لمتجر بقالة

المطلوب

الإصدار ⁦2.8⁩ من متجر بقالة على الويب يضيف حقلاً لرمز الخصم عند إتمام الشراء، ولم يتغير شيء آخر. قيّم كل حالة اختبار في المادة، وامنحها P1 أو P2 أو P3 باستخدام مصفوفة هذا الدرس، ثم اكتب ترتيب التنفيذ.

بعد ذلك قرّر ما الذي ستحذفه إذا قُلّصت الدورة إلى النصف، وكيف ستبلّغ عن ذلك.

المادة
الإصدار 2.8: حقل جديد لرمز الخصم عند إتمام الشراء. لم يتغير شيء آخر.

TC-01  رمز خصم صالح يخفّض إجمالي الطلب بشكل صحيح
TC-02  رمز خصم منتهي الصلاحية يُرفض ويبقى الإجمالي كما هو
TC-03  تقديم طلب والدفع بالبطاقة (الدفع لم يتغير، لكنه يمر بإتمام الشراء المتغيّر)
TC-04  سجل الطلبات يعرض سطر الخصم
TC-05  حفظ عنوان توصيل جديد (لم يتغير)
TC-06  البحث عن المنتجات بالاسم (لم يتغير)

القيود
- بيئة الدفع التجريبية متاحة في الصباح فقط.
- تحتاج TC-03 إلى عنوان توصيل محفوظ تُنشئه TC-05.
الخطوات
  1. قيّم أثر كل حالة واحتمالها.
  2. اضرب التقديرين وحوّل كل درجة إلى P1 أو P2 أو P3.
  3. رتّب الحالات حول الاعتمادية ونافذة بيئة الدفع التجريبية، من دون تغيير أي تسمية.
  4. حدّد ما ستحذفه أولاً، واكتب سطراً واحداً لتقرير الاختبار.
إظهار الإجابة النموذجية
الإجابة النموذجية

TC-01: أثر عالٍ (الإجماليات الخاطئة تكلّف مالاً) × احتمال عالٍ (شيفرة جديدة) = ⁦9⁩، أي P1. وTC-02: عالٍ × عالٍ = ⁦9⁩، أي P1؛ فقبول رمز منتهي الصلاحية خصم غير مصرّح به. وTC-03: عالٍ × متوسط (شيفرة الدفع لم تتغير، والطلب يمر فقط بإتمام الشراء المتغيّر) = ⁦6⁩، أي P1. وتقدير احتمالها «عالٍ» يعطي ⁦9⁩ والأولوية P1 نفسها.

TC-04: متوسط × متوسط (تقرأ بيانات الطلب المتغيّرة) = ⁦4⁩، أي P2. وTC-05: عالٍ × منخفض = ⁦3⁩، أي P2؛ لم تتغير، لكن لا طلب من دون عنوان. وTC-06: متوسط (يستطيع العملاء تصفّح المتجر من دون البحث) × منخفض = ⁦2⁩، أي P3.

الترتيب: TC-05 للتهيئة، ثم TC-03 في نافذة بيئة الدفع الصباحية، ثم TC-01 وTC-02 وTC-04 وTC-06. تُنفَّذ TC-05 مبكراً فقط لأن TC-03 تحتاج إليها، وتبقى P2.

بنصف الوقت، احذف TC-06 أولاً ثم TC-04 عند الحاجة، ولا تحذف حالة P1 أبداً، وأبلغ عن ذلك: «لم تُنفَّذ الحالة TC-06 ذات الأولوية P3؛ وقبل مالك المنتج الخطر».

أسئلة شائعة

من يحدّد أولوية حالة الاختبار؟

يقترحها المختبِر عادةً لأنه يعرف حالات الاختبار. أما المدخلات فتأتي من غيره: مالك المنتج أو محلل الأعمال للأثر، والمطورون لما تغيّر. ويملك قائد الاختبار أو مدير الاختبار التعريفات في خطة الاختبار ويحسم الخلافات.

هل أولوية حالة الاختبار هي نفسها أولوية العيب؟

لا. كلتاهما تعبّر عن أهمية تجارية، لكن لشيئين مختلفين. أولوية العيب تقول متى يجب إصلاح عيب معروف، وأولوية حالة الاختبار تقول متى يجب تنفيذ الحالة وهل يمكن تخطّيها في هذه الدورة. وقد تكشف حالة P1 فاشلة عيباً بأي أولوية.

هل أستخدم «مولّد الاختبار المبني على المخاطر» للتقييم؟

نعم. فهو يقيّم الميزات بالاحتمال والأثر على مقياس من ⁦1⁩ إلى ⁦5⁩ بمستوياته الخاصة: حرج وعالٍ ومتوسط ومنخفض، وينتج خطة مرتبة. قيّم على مقياسه بدلاً من نسخ درجات ⁦1⁩ إلى ⁦3⁩ من هذا الدرس، ثم اربط مستوياته بتعريفات P1 إلى P3 لدى فريقك.

هل يجب حذف حالات الاختبار ذات الأولوية P3؟

ليس لأنها P3. فحالة P3 قد تصبح P1 حين تتغير منطقتها. احذف حالة أو ادمجها فقط حين تصبح متقادمة أو تكرّر حالة أخرى؛ ويتناول الدرس التالي، عن حالات الاختبار القابلة لإعادة الاستخدام وحالات الانحدار، هذه الصيانة.

المراجع

  • ISTQB Certified Tester Foundation Level (CTFL) v4.0ISTQB · 2023المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
  • ISTQB GlossaryISTQBالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.

تدرّب بأدوات متقن

حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.

تصميم الاختبارات

ولّد حالات اختبار منظّمة (المعرّف والعنوان والشروط المسبقة والخطوات والنتيجة المتوقّعة والأولوية) من وصف الميزة وقائمة الحقول.

تصميم الاختبارات

للتعمّق أكثر

تقدّمك في هذا الموضوع

جزء من مسار تعلم ضمان الجودة