معايير الدخول والخروج

معايير الدخول (Entry criteria) هي الشروط التي يجب أن تتحقق قبل أن يبدأ نشاط اختبار، ومعايير الخروج (Exit criteria) هي الشروط التي يجب أن تتحقق قبل أن يُعلَن اكتماله. فمثلاً يجوز أن يبدأ اختبار النظام حين يُنشر البناء في بيئة الاختبار، وتنجح اختبارات الدخان (Smoke tests)، وتُحمَّل بيانات الاختبار، ويجوز أن ينتهي حين تنجح كل حالات الاختبار عالية الخطر ولا يبقى عيب حاجب (Blocker) أو حرج (Critical) مفتوحاً.

تُكتب المعايير أثناء تخطيط الاختبار، وتفحص متابعة الاختبار التقدّم مقابلها طوال التنفيذ، ويبدأ إتمام الاختبار بعد تقييم معايير الخروج. وتضيف خطط الاختبار عادةً معايير التعليق (Suspension criteria) التي تحدد متى يتوقف الاختبار مؤقتاً، ومعايير الاستئناف (Resumption criteria) التي تحدد ما يجب أن يتحقق لاستئنافه؛ وخطة الاختبار الموصوفة في ISO/IEC/IEEE ⁦29119-3⁩ فيها موضع للأنواع الأربعة كلها. ويذكر مسرد ISTQB أيضاً «معايير إتمام الاختبار» (Test completion criteria) اسماً آخر لمعايير الخروج.

لماذا يهم

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

ومن دون معايير خروج يُحسم «الانتهاء» بالموعد النهائي أو بمن يُطيل الجدال أكثر من غيره. أما المعايير المتفق عليها مسبقاً فتمنح مالك المنتج حقائق يبني عليها قرار الإصدار، وتمنح المختبِر طريقة محايدة ليقول «ليس بعد».

معايير الدخول: هل النشاط جاهز للبدء؟

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

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

  • البيئة: البناء المرشّح للإصدار (Release candidate) منشور في بيئة الاختبار، وكل فحوص جاهزية الخدمات (Health checks) ناجحة.
  • الجودة الأولية: حزمة اختبارات الدخان تنجح في ⁦25⁩ من ⁦25⁩ اختباراً على هذا البناء.
  • مواد الاختبار والبيانات: حالات الاختبار لكل المتطلبات عالية الخطر مراجَعة من زميل، و⁦50⁩ حساباً تجريبياً للعملاء محمَّلة، منها حسابات بأسماء عربية وأخرى ببطاقات منتهية الصلاحية.

جرّبها: فاحص صحة API

معايير الخروج: هل اكتمل النشاط؟

يصف المنهج نوعين من معايير الخروج. مقاييس الشمول (Measures of thoroughness) تقول كم أُنجز: التغطية المتحققة، والعيوب غير المحلولة، وكثافة العيوب، وحالات الاختبار الفاشلة. والمعايير الثنائية بنعم أو لا (Binary yes/no criteria) تقول هل أُنجز أمر ما: تنفيذ الاختبارات المخططة، وإجراء الاختبار الساكن، والإبلاغ عن كل عيب اكتُشف، وأتمتة اختبارات الانحدار. وقد سمّت الطبعة الأولى من CTFL v4.0 هذا النوع الثاني «معايير الإكمال» (Completion criteria)، ثم غيّرت النسخة v4.0.1 اسمه حتى لا يُخلط بمعايير الخروج كلها.

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

جرّبها: المتطلبات ← حالات اختبار جرّبها: حاسبة النسبة المئوية

معايير التعليق والاستئناف

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

  • علّق الاختبار حين تفشل حزمة الدخان على بناء جديد؛ واستأنفه حين ينجح فيها بناء مُصحَّح.
  • علّق الاختبار حين تتعطل بيئة الاختبار أو بيئة تجريبية مطلوبة (Sandbox) أكثر من ⁦4⁩ ساعات عمل؛ واستأنفه حين تُستعاد وتنجح فحوص جاهزيتها.
  • علّق الاختبار حين يحجب عيب واحد أكثر من ⁦30%⁩ من حالات الاختبار المتبقية؛ واستأنفه حين ينجح إصلاحه في اختبار التأكيد.
  • عند الاستئناف أعد تنفيذ الاختبارات التي كانت جارية، وسجّل الوقت الضائع في تقرير تقدم الاختبار التالي.
بحسب أمثلة المعايير في هذا الدرس، ينتقل نشاط الاختبار من «غير جاهز» إلى «قيد الاختبار» حين تتحقق معايير الدخول، وينتظر في «معلّق» حتى يتحقق معيار استئناف، ويكتمل حين تتحقق معايير الخروج.
الانتقالات
#منإلىالمعيار
1غير جاهزالبدايةقيد الاختبارتحققت معايير الدخول: البناء المرشّح للإصدار منشور وفحوص الجاهزية ناجحة، وحزمة الدخان تنجح في ⁦25⁩ من ⁦25⁩، وحالات الاختبار مراجَعة وبيانات الاختبار محمَّلة
2قيد الاختبارمعلّقتحقق معيار تعليق: فشل حزمة الدخان على بناء جديد، أو تعطّل البيئة أو البيئة التجريبية أكثر من ⁦4⁩ ساعات عمل، أو عيب واحد يحجب أكثر من ⁦30%⁩ من الاختبارات المتبقية
3معلّققيد الاختبارتحقق معيار الاستئناف: بناء مُصحَّح ينجح في حزمة الدخان، أو البيئة مستعادة وفحوص جاهزيتها ناجحة، أو الإصلاح ينجح في اختبار التأكيد؛ وتُعاد الاختبارات التي كانت جارية
4قيد الاختبارمكتملالنهايةتحققت كل معايير الخروج على البناء قيد الاختبار
5قيد الاختبارمكتملالنهايةنفد الوقت أو الميزانية: يراجع أصحاب المصلحة المعايير غير المتحققة ويقبلون الخطر، ويُسجَّل هذا القبولمسار بديل

العتبات هي أمثلة هذا الدرس. والاكتمال يعني انتهاء نشاط الاختبار؛ أما قرار الإصدار فيبقى لأصحاب المصلحة.

معايير يحكم عليها شخصان بالطريقة نفسها

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

  • «البناء مستقر» يصبح «حزمة الدخان تنجح في ⁦25⁩ من ⁦25⁩ اختباراً على البناء قيد الاختبار».
  • «الاختبار مكتمل» يصبح «كل حالات الاختبار عالية الخطر ناجحة، ونُفّذ ⁦95%⁩ على الأقل من حالات الاختبار المخططة».
  • «لا أخطاء كبيرة» يصبح «لا عيوب حاجبة أو حرجة مفتوحة، ولكل عيب رئيسي (Major) مفتوح حل بديل مقبول».
  • «تغطية جيدة» يصبح «لكل متطلب ضمن النطاق حالة اختبار ناجحة واحدة على الأقل».
  • «الأداء مقبول» يصبح «مع ⁦200⁩ مستخدم متزامن، تستجيب ⁦95%⁩ من عمليات البحث خلال ⁦2.0⁩ ثانية أو أقل (p95)».

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

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

يضيف الإصدار ⁦3.5⁩ من تطبيق لتوصيل الطعام الطلبات المجدولة. ولخطة اختبار النظام ستة معايير خروج: تنفيذ كل حالات الاختبار عالية الخطر ونجاحها، وتنفيذ ⁦95%⁩ على الأقل من حالات الاختبار المخططة البالغة ⁦150⁩، وعدم وجود عيب حاجب أو حرج مفتوح، و⁦3⁩ عيوب رئيسية مفتوحة كحد أقصى، ونجاح حزمة الانحدار على البناء المرشّح للإصدار، وتغطية كل متطلب ضمن النطاق باختبار ناجح. وفي نهاية اليوم ⁦9⁩ يفحص قائد الاختبار كل معيار مقابل بيانات أداة إدارة الاختبار ومتتبّع العيوب.

فحص معايير الخروج للإصدار ⁦3.5⁩ في نهاية اليوم ⁦9⁩: تحققت أربعة من ستة معايير قابلة للقياس، بينما يُبقي تنفيذُ ⁦94%⁩ مقابل هدف ⁦95%⁩ وعيبٌ حرج مفتوح اختبارَ النظام غير مكتمل.
معيار الخروجالهدفمحدد في خطة الاختبارالفعلينهاية اليوم ⁦9⁩الخطوة التالية
حالات الاختبار عالية الخطر منفّذة وناجحة100%⁦38⁩ من ⁦38⁩نجاحلا إجراء إضافي
حالات الاختبار المخططة المنفّذة⁦95%⁩ على الأقل⁦141⁩ من ⁦150⁩ (⁦94%⁩)فشلتنفيذ الحالات التسع المتبقية منخفضة الخطرأو يقبل مالك المنتج الفجوة كتابياً
العيوب الحاجبة أو الحرجة المفتوحة0⁦1⁩ حرجفشلإصلاح الخصم المزدوجثم اختبار التأكيد للعيب
العيوب الرئيسية المفتوحة⁦3⁩ كحد أقصى2نجاحلا إجراء إضافي
حزمة الانحدار على البناء المرشّح للإصداركلها ناجحة⁦212⁩ من ⁦212⁩نجاحإعادة التشغيل على البناء الذي يحتوي الإصلاح
متطلبات النطاق التي لها اختبار ناجح100%⁦27⁩ من ⁦27⁩نجاحلا إجراء إضافي

القيم مثال من الدرس. وبعد الإصلاح تُفحص المعايير الستة كلها من جديد على البناء المرشّح الجديد للإصدار.

  • متحقق: نجحت ⁦38⁩ من ⁦38⁩ حالة عالية الخطر، والعيوب الرئيسية المفتوحة ⁦2⁩، ونجحت حزمة الانحدار في ⁦212⁩ من ⁦212⁩، ولكل متطلب من المتطلبات الـ⁦27⁩ اختبار ناجح.
  • غير متحقق: تنفيذ ⁦141⁩ من ⁦150⁩ يساوي ⁦94%⁩. والحالات التسع المتبقية فحوص منخفضة الخطر لسجل الطلبات، فإما أن ينفّذها الفريق في يوم إضافي، أو يقبل مالك المنتج الفجوة كتابياً.
  • غير متحقق: كشفت جلسة اختبار استكشافي في اليوم ⁦8⁩ أن تغيير الفترة الزمنية لطلب مجدول يخصم المبلغ من البطاقة مرتين. ولن يقبل مالك المنتج عيباً حرجاً يخصم من العملاء مرتين، فالإصلاح يأتي أولاً.
  • ينتج عن الإصلاح بناء مرشّح جديد للإصدار. فينفّذ المختبِر اختبار التأكيد للعيب، ويعيد تشغيل حزمة الانحدار، ويعيد فحص المعايير الستة على هذا البناء، ويسجّل النتيجة في تقرير إتمام الاختبار.
النسخة النصية
Release 3.5, system testing: exit criteria at the end of day 9

Criterion                                   Target      Actual           Met
High-risk test cases executed and passed    100%        38/38 (100%)     yes
Planned test cases executed                 >= 95%      141/150 (94%)    no
Open Blocker or Critical defects            0           1 Critical       no
Open Major defects                          <= 3        2                yes
Regression suite on the release candidate   all pass    212/212          yes
In-scope requirements with a passed test    100%        27/27            yes

أخطاء شائعة

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

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

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

أثناء التنفيذ اعرض حالة المعايير في كل تقرير تقدم («معايير الخروج: تحقق ⁦4⁩ من ⁦6⁩») حتى لا يحمل يوم الإصدار مفاجآت، وسجّل كل تعليق بسببه وبنائه ووقته. ويسرد تقرير إتمام الاختبار كل معيار بقيمته الفعلية ومن قبِل أي انحراف عنه. المختبِر يقدّم الحقائق، وقرار الإصدار لأصحاب المصلحة.

تمرين عملي

اكتب معايير ميزة إعادة تعيين كلمة المرور وافحصها

المطلوب

يضيف تطبيق مصرفي على الهاتف ميزة إعادة تعيين كلمة المرور برمز يُرسَل لمرة واحدة عبر SMS. لاختبار النظام دورة واحدة مدتها أسبوعان و⁦60⁩ حالة اختبار مخططة، منها ⁦15⁩ حالة عالية الخطر، تغطي ⁦8⁩ معايير قبول. ويعتمد الاختبار على بيئة تجريبية لبوابة الرسائل النصية (SMS gateway sandbox).

الحالة في نهاية اليوم ⁦10⁩: نُفّذت ⁦57⁩ من ⁦60⁩ حالة ونجحت ⁦54⁩؛ ونُفّذت ⁦15⁩ من ⁦15⁩ حالة عالية الخطر ونجحت ⁦14⁩؛ والعيوب المفتوحة: ⁦1⁩ حرج و⁦2⁩ ثانوي (Minor). وتعطلت البيئة التجريبية ⁦6⁩ ساعات عمل في اليوم ⁦7⁩، واستمر الاختبار. اكتب المعايير لهذا المستوى من الاختبار، ثم قرّر هل اكتمل الاختبار.

الخطوات
  1. اكتب ثلاثة معايير دخول: واحداً لكلٍّ من الموارد ومواد الاختبار والجودة الأولية للبناء.
  2. اكتب أربعة معايير خروج قابلة للقياس.
  3. اكتب معياري تعليق، لكلٍّ منهما معيار استئناف مطابق.
  4. قيّم حالة اليوم ⁦10⁩ مقابل معايير الخروج التي كتبتها.
إظهار الإجابة النموذجية
الإجابة النموذجية

الدخول (أمثلة): البيئة التجريبية تُوصل رمزاً إلى رقم تجريبي خلال ⁦60⁩ ثانية؛ وحالات الاختبار الـ⁦60⁩ مراجَعة ومرتبطة بمعايير القبول الثمانية؛ وحزمة الدخان تنجح في ⁦10⁩ من ⁦10⁩ على البناء.

الخروج (أمثلة): الحالات عالية الخطر الـ⁦15⁩ كلها نُفّذت ونجحت؛ ونُفّذ ⁦95%⁩ على الأقل من الحالات المخططة؛ ولا عيب حاجب أو حرج مفتوح؛ وكل معيار قبول تغطيه حالة اختبار ناجحة.

التعليق والاستئناف: علّق حين يفشل اختبار الدخان على بناء جديد، واستأنف حين ينجح فيه بناء مُصحَّح؛ وعلّق حين تتعطل البيئة التجريبية أكثر من ⁦4⁩ ساعات عمل، واستأنف حين تُستعاد وتُوصل رمزاً.

التقييم: ⁦57⁩ من ⁦60⁩ تساوي ⁦95%⁩، فمعيار التنفيذ متحقق. لكن ⁦14⁩ فقط من ⁦15⁩ حالة عالية الخطر نجحت، وهناك عيب حرج مفتوح، فلم يكتمل الاختبار: يحتاج العيب إلى إصلاح واختبار تأكيد وتشغيل انحدار لمسار إعادة التعيين قبل فحص المعايير من جديد. أما العيبان الثانويان فلا يخالفان أياً من هذه المعايير. ولا يمكن الحكم على تغطية معايير القبول الثمانية من هذه الحالة، فاطلب بيانات التتبع قبل أن تجيب بنعم أو لا. وقد تجاوز التعطل الذي دام ⁦6⁩ ساعات عتبة الساعات الأربع، فكان يجب تعليق الاختبارات التي تحتاج إلى البيئة التجريبية. فأعد تنفيذ كل اختبار احتاج إلى رمز SMS أثناء التعطل، وتحقّق هل فشلت أيٌّ من الحالات الثلاث الفاشلة بسبب التعطل لا بسبب عيب.

أسئلة شائعة

من يضع معايير الدخول والخروج؟

يقترحها عادةً قائد الاختبار أو المختبِر أثناء تخطيط الاختبار، ويتفق عليها أصحاب المصلحة (مالك المنتج وقائد التطوير ومدير المشروع) قبل بدء الاختبار، وتُكتب في خطة الاختبار. أما قرار الاستمرار أو الإصدار مع معيار غير متحقق فهو لأصحاب المصلحة، لا للمختبِر وحده.

هل معايير الخروج هي معايير القبول نفسها؟

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

ما علاقتها بتعريف الجاهزية وتعريف الإنجاز؟

يذكر منهج ISTQB أن معايير الخروج في التطوير الرشيق (Agile) تُسمّى غالباً تعريف الإنجاز (Definition of Done)، وأن معايير الدخول التي يجب أن تستوفيها قصة المستخدم قبل بدء التطوير أو الاختبار تُسمّى تعريف الجاهزية (Definition of Ready). ويتناول درس تعريف الجاهزية وتعريف الإنجاز المفهومين كليهما.

هل يمكن إصدار المنتج مع معيار خروج غير متحقق؟

يمكن ذلك إذا راجع أصحاب المصلحة المعايير غير المتحققة وقبلوا الخطر المتبقي، مثل ⁦9⁩ حالات اختبار منخفضة الخطر لم تُنفَّذ. سجّل في تقرير إتمام الاختبار أي المعايير لم تتحقق ولماذا ومن قبِل الخطر. فمعايير الخروج تُرشد قرار الإصدار ولا تتخذه.

المراجع

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

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

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

حساب النسب المئوية ونسبة التغيّر والزيادة/النقصان وكم تمثّل X من Y بالنسبة المئوية.

أدوات مساعدة

افحص عدة نقاط نهاية لصحة API دفعة واحدة واحصل على الحالة وزمن الاستجابة وملخّص نجاح/فشل.

اختبار واجهات API

للتعمّق أكثر

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

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