نطاق الاختبار
نطاق الاختبار (Test Scope) هو الحدّ المتفق عليه للاختبار في مشروع أو إصدار أو سبرنت واحد: أيّ عناصر الاختبار تُختبر (التطبيقات والخدمات وإصداراتها)، وأيّ الميزات وخصائص الجودة، وعلى أيّ مستويات اختبار، وعلى أيّ منصات وبأيّ لغات، ثم بالوضوح نفسه: ما الذي لن يُختبر. ويذكر منهج ISTQB للمستوى التأسيسي (الإصدار 4.0) النطاق ضمن سياق الاختبار في خطة الاختبار، إلى جانب أهداف الاختبار وأساس الاختبار.
مثال ذلك: الإصدار 4.2 من «بستان ماركت»، السوق الإلكتروني الخيالي الوارد في دليل استراتيجية الاختبار، يضيف الدفع بالتقسيط عبر مزوّد خارجي. ضمن النطاق (In Scope): خيار الدفع الجديد على الموقع والتطبيقين بالعربية والإنجليزية، وقواعد الأهلية، والاسترداد، واختبار انحدار طرق الدفع التي تشترك معه في الشيفرة. وخارج النطاق (Out of Scope): قرار الائتمان الخاص بالمزوّد، الذي يختبره المزوّد نفسه.
لماذا يهم
النطاق غير الواضح يضرّ من جهتين. تظهر الثغرات حين يفترض الجميع أن غيرهم يختبر جزءاً ما، مثل الاسترداد أو الإيصال العربي أو الإصدار القديم من التطبيق الذي ما زال العملاء يستخدمونه، فيكون أول اختبار له في بيئة الإنتاج. ويظهر الهدر حين يقضي الفريق أياماً في أجزاء لم تتغيّر أو يملكها فريق آخر.
والنطاق أيضاً مُدخل للتقدير والجدول الزمني والبيئات ومعايير الخروج. وحين يكبر النطاق دون أن يعدّلها أحد، إما أن يفوّت الفريق الموعد أو يُصدر المنتج وقد تُركت اختبارات دون إعلان. وبالنسبة إلى المختبِر، فالنطاق المكتوب والمتفق عليه حماية وواجب في آن واحد: العيب الذي يظهر في جزء استُبعد لسبب قبِله مالك المنتج يقود إلى نقاش حول ذلك القرار لا إلى تبادل اللوم، ويُنتظر منك أن تبيّن الخطر الذي ينطوي عليه كل استبعاد.
ما الذي يحدّده نطاق الاختبار
بيان النطاق المفيد محدد بما يكفي لأن يعطي شخصان الإجابة نفسها عن سؤال «هل هذا مُختبَر؟»: فهو يسمّي العناصر بمعرّفاتها وإصداراتها لا بكلمات مثل «الدفع» أو «التطبيق». ابدأ من النطاق الافتراضي في استراتيجية الاختبار وطبّقه على ما تغيّر، عبر هذه الأبعاد:
- عناصر الاختبار (Test Items): أجزاء موضوع الاختبار (Test Object) التي ستُختبر، كالتطبيقات والخدمات، كلٌّ بإصداره، مثل الموقع 4.2 وتطبيقي iOS وAndroid 4.2 وواجهة الدفع البرمجية v3.
- الميزات والتغييرات: القصص أو المتطلبات أو طلبات التغيير بمعرّفاتها، والميزات الحالية التي يؤثر فيها التغيير.
- خصائص الجودة وأنواع الاختبار: الوظيفي والأداء والأمان وإمكانية الوصول والتوافق، وأيّها ينطبق هذه المرة.
- مستويات الاختبار: مثل اختبار النظام واختبار تكامل الأنظمة على يد فريق الجودة، واختبار المكونات على يد المطورين في خط التكامل المستمر (CI).
- المنصات والمتصفحات والأجهزة واللغات والمناطق التي ستُستخدم فعلاً.
- الواجهات: أين يتوقف اختبارنا، مثل «جانبنا من التكامل مع مزوّد الدفع، في بيئة التجربة (Sandbox) الخاصة به».
- العمق: «ضمن النطاق» ليس علامة نعم أو لا. ففي منهج ISTQB يحدّد تحليل مخاطر المنتج نطاق الاختبار ودرجة تعمّقه معاً: لكل عنصر مستوى خطر وعمق اختبار ينتج عنه.
خارج النطاق: قرار له سبب
قائمة «خارج النطاق» قائمة قرارات، لا قائمة بما نسيته. كل استبعاد يسجّل العنصر والسبب ومن يغطيه بدلاً منك ومن وافق عليه؛ وإن ترك خطراً، يقبله صراحةً صاحب قرار الإصدار، وهو عادةً مالك المنتج. ومعيار توثيق الاختبار ISO/IEC/IEEE 29119-3 يطلب جوهر ذلك في قسم نطاق الاختبار من خطة الاختبار: الميزات المستبعدة من الاختبار ومبرر استبعادها.
يُتفق على الاستبعاد صراحةً: عند الاتفاق على النطاق قبل بدء الاختبار، أو لاحقاً بوصفه تغييراً مسجّلاً في النطاق. أما الاختبار المخطط الذي لم يُنفَّذ، لبيئة معطّلة أو لنفاد الوقت، فليس «خارج النطاق»: إنه فجوة في التغطية يجب أن تُظهرها تقارير التقدم وإتمام الاختبار بوصفها مخاطر متبقية.
أسباب تصمد عادةً في مراجعة النطاق:
- لم يتغيّر ولا يتأثر بالتغيير؛ وتغطيه حزمة الانحدار.
- يملكه فريق آخر أو مورّد: هو من يختبره، وأنت تختبر جانبك من الواجهة وتطلب أدلته.
- ليس جزءاً من هذا الإصدار.
- لا يمكن اختباره في البيئات المتاحة: اذكر البديل، مثل ردود محاكاة (Mocked Responses) أو فحص بعد النشر.
- خطره منخفض ومقبول صراحةً من مالك المنتج.
ضمن النطاق
يُختبر في هذا الإصدار وبعمق متفق عليه
- يسجّل كل بند:
- معرّف العنصر وإصداره ومستوى خطره وعمق اختباره
- السبب المعتاد:
- جديد أو متغيّر، أو يتأثر بالتغيير
- مثال: «بستان ماركت» 4.2:
- خيار التقسيط عند الدفع، على الموقع والتطبيقين، بالعربية والإنجليزية
- من يقرر:
- فريق الجودة يقترح، ويوافق مالك المنتج وقائد التطوير
- إذا تغيّر:
- حذفه أو تقليل عمقه تغيير في النطاق يحتاج إلى قرار
- عند إتمام الاختبار:
- تُذكر التغطية والنتائج والعيوب المفتوحة
خارج النطاق
لا يختبره هذا الفريق في هذا الإصدار، عن قصد
- يسجّل كل بند:
- السبب، ومن يغطيه بدلاً منا، ومن وافق
- السبب المعتاد:
- لم يتغيّر، أو يملكه فريق آخر أو مورّد، أو ليس في هذا الإصدار
- مثال: «بستان ماركت» 4.2:
- قرار الائتمان لدى المزوّد: يختبره المزوّد، ونختبر جانبنا في بيئة التجربة لديه
- من يقرر:
- فريق الجودة يقترح، ومالك المنتج يقبل الخطر المتبقي
- إذا تغيّر:
- إدخاله يحتاج إلى تقدير للأثر وقرار
- عند إتمام الاختبار:
- يُذكر مرة أخرى بوصفه غير مُختبَر، مع الخطر المقبول
كيف تتفق على النطاق وتوثّقه
يقترح فريق الاختبار النطاق، ويتفق عليه من يملكون المنتج والإصدار، وغالباً في مراجعة نطاق قصيرة.
- اجمع الأساس: ملاحظات الإصدار، والقصص ومعايير قبولها، وقائمة التغييرات، والنطاق الافتراضي في الاستراتيجية.
- حدّد ما يمسّه التغيير: اسأل المطورين أيّ المكونات والبيانات والتكاملات تتأثر؛ والتتبّع (Traceability) يُظهر المتطلبات والاختبارات المرتبطة بها.
- اكتب القائمتين، ضمن النطاق مع المعرّف والخطر والعمق، وخارج النطاق مع السبب والمسؤول، وسجّل الأسئلة المفتوحة بدلاً من التخمين.
- راجعهما مع مالك المنتج وقائد فريق التطوير وكل من يغطي عنصراً مستبعداً. اقرأ قائمة «خارج النطاق» بصوت مسموع، فهناك يظهر سوء الفهم.
- سجّل النتيجة في قسم النطاق من خطة الاختبار أو في خطة اختبار السبرنت ذات الصفحة الواحدة، مع رقم النسخة والتاريخ والمعتمِد.
- اتفق على قاعدة التغيير: من يحق له طلب التغيير، ومن يقدّر أثره، ومن يقرر.
مثال تطبيقي: نطاق إصدار الدفع بالتقسيط
البيان التالي هو النطاق المتفق عليه لإصدار «بستان ماركت» 4.2 بعد مراجعة استغرقت 30 دقيقة. لكل سطر خارج النطاق سبب ومسؤول، والحدّ مع المزوّد محدد بدقة، والخطر الوحيد المقبول مكتوب.
يحوّل عمود العمق (Depth) كل مستوى خطر إلى اختبارات محددة: فالبند BUS-902 يذكر قيم الحدود لمدى المبالغ المؤهلة وفق تحليل القيم الحدّية الثنائي، وسطر الانحدار يُدخل طرق الدفع التي لم تتغيّر ضمن النطاق لأنها تشترك في شيفرة الدفع التي تغيّرت.
TEST SCOPE - Bustan Market 4.2 "Pay in instalments" (fictional) v1.0
Basis: BUS-901..905, test strategy v1.2 Agreed: PO, dev lead, QA lead (day 1)
IN SCOPE Risk Depth
BUS-901 Instalment option at checkout, High boundaries, negative,
web + iOS + Android, ar/en exploratory, auto API
BUS-902 Eligibility: total 200.00 to 5,000.00 High 199.99 / 200.00 /
SAR, signed-in customers only 5,000.00 / 5,000.01
BUS-903 Instalment schedule in "My orders" Medium dates, amounts, ar/en
BUS-904 Refund, partial refund, cancellation High before and after the
of instalment orders first instalment
BUS-905 Our handling of provider webhooks Medium approved, declined,
(approved, declined, expired) expired, duplicate
Regr. Card, mada, Apple Pay, cash on delivery Medium automated checkout
(they share the checkout code) suite + 2 devices
OUT OF SCOPE Reason Covered by
Provider credit decision provider-owned service provider; we test our
and the provider app side in its sandbox
Seller portal unchanged in 4.2 nightly regression suite
Load test of provider API not ours to load-test provider SLA (PO agreed)
Accepted risk provider outage tested with mocked responses only (PO, day 1)
Assumptions provider sandbox from day 1; synthetic customers only
Changes request to PO -> QA impact note -> PO decides -> scope v1.1, v1.2زحف النطاق: كيف تكتشفه وتتحكم فيه
زحف النطاق (Scope Creep) هو نموّ النطاق بعد الاتفاق عليه دون تغيير مقابل في الوقت أو الأشخاص أو معايير الخروج. ونادراً ما يصل في صورة طلب رسمي، بل يبدو هكذا: «وبما أنك تختبر، هل يمكنك أيضاً أن تتحقق من…»، أو معايير قبول أُعيدت كتابتها بعد تصميم الاختبار (قارن النص القديم بالجديد لترى ما تغيّر بالضبط)، أو تغيير متأخر دُمج في فرع الإصدار.
التغيير في حد ذاته أمر طبيعي. فدليل Scrum لعام 2020 ينص على أن النطاق أثناء السبرنت يمكن توضيحه وإعادة التفاوض عليه مع مالك المنتج كلما عُرف المزيد، وعلى أنه لا تُجرى تغييرات تعرّض هدف السبرنت للخطر. المشكلة في التغيير الذي يتجاوز الاتفاق.
في الأسبوع الثاني من إصدار «بستان ماركت» تصل رسالة: «هل يمكن أن يعمل التقسيط أيضاً مع طلبات بطاقات الهدايا؟ تغيير صغير». فيرد المختبِر بمذكرة أثر (قاعدة استرداد مختلفة، وانحدار مسار الدفع ببطاقات الهدايا، ونحو ثلاثة أيام عمل إضافية لمختبِر) وبثلاثة خيارات: تمديد الاختبار، أو نقله إلى الإصدار 4.3، أو تقليل الاختبار الاستكشافي لخيار التقسيط (BUS-901) مع قبول ذلك الخطر. فيختار مالك المنتج الإصدار 4.3، وتسجّله النسخة v1.1 من النطاق.
- قيّم: الاختبارات الجديدة، والانحدار، والجهد، والخطر.
- اعرض الخيارات: وقت إضافي، أو تأجيل التغيير، أو تقليل شيء آخر مع قبول خطره.
- قرّر وسجّل: صاحب القرار يختار، ثم تُحدَّث نسخة النطاق والتقدير ومعايير الخروج.
- راقب الاتجاه المعاكس: ترك اختبارات مخططة في النهاية لنفاد الوقت يغيّر النطاق المتفق عليه أيضاً؛ فهو يحتاج إلى القرار نفسه، ويُبلَّغ عنه بوصفه مخاطر متبقية، ولا يُعاد تصنيفه على أنه «خارج النطاق».
جرّبها: مولّد سيناريوهات الانحدار جرّبها: مقارنة النصوص (Diff)
أخطاء شائعة
- كتابة قائمة «ضمن النطاق» وحدها، فيفترض كل صاحب مصلحة أن الجزء الذي يهمه مغطّى.
- استبعاد عناصر بلا سبب أو مسؤول؛ فعبارة «لم يُختبر» ليست قراراً.
- وصف النطاق بكلمات عامة («الدفع»، «التطبيق») بدلاً من المعرّفات والإصدارات والمنصات واللغات.
- منح كل ما هو ضمن النطاق الجهد نفسه، فتحصل قاعدة دفع عالية الخطر وتغيير تسمية على المرور السريع نفسه.
- استيعاب الإضافات «الصغيرة» دون تقييم أثرها، ثم تفويت الموعد أو حذف اختبارات بصمت.
- اتخاذ قرار الاستبعاد منفرداً؛ فقبول الخطر نيابةً عن الشركة قرار مالك المنتج.
من منظور ضمان الجودة
في الفريق الحقيقي تُكتب مسودة النطاق أثناء تخطيط الاختبار، بعد تخطيط الإصدار أو السبرنت مباشرةً، وتُراجَع عند كل تغيير. تحسم مع مالك المنتج ما يهم، ومع المطورين ما يمسّه التغيير، ومع المورّدين ومالكي المكونات المشتركة من يختبر ماذا عند كل واجهة. وأكثر الأسئلة فائدة: «ما الذي تغيّر، وما الذي يعتمد عليه؟» و«من يختبر هذا غيرنا، وبأيّ أدلة؟» و«ماذا يحدث إن لم نختبر هذا؟».
احفظ بيان النطاق بأرقام نسخ، واجعله مرجع تقاريرك: تقارير الحالة تُظهر تغطية النطاق المتفق عليه، وتقرير إتمام الاختبار يعيد ذكر الاستبعادات والمخاطر المتبقية المقبولة، حتى يُتخذ قرار الإصدار بناءً على صورة كاملة. ومنهج ISTQB يعدّ زحف النطاق من مخاطر المشروع: فإذا تكرّر، فسجّله في سجل المخاطر.
تمرين عملي
حدّد نطاق إصدار لتطبيق حجز عيادات وتعامل مع طلب تغيير
الإصدار 3.1 من «عيادات شفاء»، وهو تطبيق حجز خيالي على الويب وAndroid وiOS بالعربية والإنجليزية، يتضمن: (1) حجز استشارات الفيديو والدفع لها بالبطاقة؛ (2) رابط إلغاء في رسالة التذكير النصية التي تُرسل قبل الموعد بـ24 ساعة؛ (3) عرضاً أسبوعياً لجدول الأطباء في بوابة الإدارة.
السياق: مكالمة الفيديو تعمل عبر خدمة خارجية مدمجة في التطبيق ويختبرها مورّدها. والسجلات الطبية ونتائج المختبر لم تتغيّر. وبوابة الرسائل النصية مشتركة مع تطبيق الصيدلية ويملكها فريق آخر. لديك مختبِران وعشرة أيام عمل. اكتب بيان النطاق. وفي اليوم السادس يكتب مالك المنتج في المحادثة: «هل يمكنك أيضاً التحقق من الدفع بالتأمين لاستشارات الفيديو؟ تغيير صغير».
- ضع كل عنصر تغيّر، مع ما يمسّه، ضمن النطاق (مع ملاحظة عن العمق) أو خارج النطاق (مع السبب والمسؤول).
- اكتب ثلاثة أسئلة على الأقل يجب حسمها قبل الاتفاق على النطاق.
- تعامل مع طلب اليوم السادس بوصفه تغييراً في النطاق.
إظهار الإجابة النموذجية
ضمن النطاق: حجز الفيديو والدفع بالبطاقة على كل المنصات وباللغتين، عالي الخطر (المواعيد، والمناطق الزمنية، وفشل الدفع، والحجز المزدوج، والاسترداد)؛ وجانبنا من التكامل مع خدمة الفيديو (بدء المكالمة، ورفض إذن الكاميرا، وتعطّل الخدمة)؛ ورابط الإلغاء في الرسالة النصية (رابط صالح، ومنتهي الصلاحية، ومُستخدَم من قبل؛ والنص بالعربية والإنجليزية) والعرض الأسبوعي (بداية الأسبوع ونهايته، والمواعيد التي تعبر منتصف الليل)، متوسطا الخطر؛ واختبار انحدار حجز المواعيد الحضورية والدفع الحالي، لأنهما يشتركان في الشيفرة.
خارج النطاق، وكل بند بموافقة مالك المنتج: خدمة الفيديو وجودة المكالمة (يملكها المورّد؛ اطلب أدلته)، والسجلات الطبية ونتائج المختبر (لم تتغيّر؛ تغطيها حزمة الانحدار الحالية)، وتسليم الرسائل عبر البوابة (فريق الرسائل؛ نتحقق من نصّنا ورابطنا فقط).
أسئلة: أيّ إصدارات التطبيق القديمة يجب أن تعمل مع واجهة الحجز البرمجية الجديدة؟ هل تُسترد الاستشارة المدفوعة تلقائياً حين تُلغى عبر رابط الرسالة؟ هل سيشاركنا مورّد الفيديو نتائج اختباراته أو بيئة تجربة؟
اليوم السادس: لا تبدأ بصمت. قدّر الأثر (مسار دفع جديد، وقواعد أهلية، وتكامل مع شركة التأمين، واسترداد: نحو ثلاثة إلى أربعة أيام عمل لمختبِر إضافة إلى انحدار الدفع)، واعرض الخيارات: وقت إضافي، أو التأجيل إلى 3.2، أو عمق أقل في مكان آخر مع قبول الخطر. واطلب قصة لها معايير قبول، وسجّل القرار في النسخة v1.1 من النطاق، وحدّث التقدير ومعايير الخروج.
أسئلة شائعة
ما الفرق بين نطاق الاختبار ونطاق المشروع؟
نطاق المشروع هو العمل الذي يجب أن ينجزه المشروع ليسلّم ميزات منتجه ومخرجاته الأخرى. ونطاق الاختبار هو ما يغطيه الاختبار. يتداخلان لكنهما غير متطابقين: قد تكون الميزة جزءاً من الإصدار ويقع جزء منها خارج نطاق الاختبار (مكوّن يملكه مورّد)، وقد يمتد نطاق الاختبار إلى ما لا يغيّره الإصدار: انحدار الأجزاء غير المتغيّرة التي تعتمد على التغيير، وكل منصة مدعومة.
من يقرر ما هو خارج النطاق؟
يقترحه المختبِر أو قائد فريق الجودة، ويوافق عليه صاحب خطر الإصدار، وهو عادةً مالك المنتج أو مدير المشروع، ويؤكد قائد فريق التطوير ومالكو المكونات المستبعدة من يغطيها. ولا يحذف المختبِر عناصر منفرداً، ولا يقبل الخطر نيابةً عن الشركة.
هل كل تغيير في النطاق زحفٌ للنطاق؟
لا. التغيير متوقع، خصوصاً في الفرق الرشيقة (Agile)؛ ودليل Scrum لعام 2020 يسمح بتوضيح النطاق وإعادة التفاوض عليه مع مالك المنتج أثناء السبرنت. ويصبح زحفاً حين يتجاوز الاتفاق: يُضاف دون تقييم أثره ودون تعديل الوقت أو الأشخاص أو المعايير.
أين أوثّق النطاق في فريق رشيق؟
في خطة اختبار من صفحة واحدة للسبرنت أو الإصدار، أو في قسم النطاق من خطة الاختبار. قصص قائمة مهام السبرنت (Sprint Backlog) مع معايير قبولها هي جوهر قائمة «ضمن النطاق»؛ أضف إليها مناطق الانحدار والمنصات التي تمسّها، واكتب الاستبعادات في الصفحة نفسها مع أسبابها، واربط ذلك كله من لوحة الفريق.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISO/IEC/IEEE 29119-3:2021 — Software and systems engineering — Software testing — Part 3: Test documentationنماذج ومحتوى وثائق الاختبار — سياسة الاختبار واستراتيجيته وخطته وتقارير الحالة والإنجاز وتقارير الحوادث.
- The 2020 Scrum Guideتعريف Scrum: مسؤولياته وأحداثه ومخرجاته، بما فيها تعريف الإنجاز (Definition of Done) الذي يساعد الاختبار على تحقيقه.
تدرّب بأدوات متقن
قيّم الميزات حسب الاحتمالية والأثر، ثم ولّد خطة اختبار مبنية على المخاطر ومرتّبة حسب الأولوية.
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
ولّد سيناريوهات اختبار الانحدار من وصف التغيير وقائمة الوحدات المتأثرة والمرتبطة.
قارن نصّين سطراً بسطر أو كلمةً بكلمة مع إبراز الاختلافات.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.