مواد الاختبار وأساسه ومرجعه

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

ويكتمل المشهد بمصطلحين آخرين. شرط الاختبار (Test condition) جانبٌ قابل للاختبار نأخذه من أساس الاختبار، أي «ماذا نختبر». ومرجع الاختبار (Test oracle) مصدر النتيجة المتوقعة التي يقارن بها الاختبارُ النتيجةَ الفعلية. ففي قصة «تعرض الفاتورة ضريبة القيمة المضافة بنسبة ⁦15%⁩»، القصة هي أساس الاختبار، وصفحة الفاتورة في البناء ⁦3.8.0⁩ هي موضوع الاختبار، والقاعدة مع حسابك المستقل هي المرجع.

لماذا يهم

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

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

أساس الاختبار وموضوعه ومرجعه

أساس الاختبار (Test basis) هو مجموعة المعارف التي يُبنى عليها تحليل الاختبار وتصميمه: المتطلبات وقصص المستخدم مع معايير القبول، وقواعد العمل، والتصاميم، ومواصفات الواجهات البرمجية، وتحليلات المخاطر، والأنظمة واللوائح، والكود نفسه في اختبارات الصندوق الأبيض.

موضوع الاختبار (Test object) هو مُخرَج العمل الذي نختبره: دالة، أو نقطة نهاية في واجهة برمجية، أو شاشة، أو نظام كامل، أو مستند. حدّده بدقة: المكوّن والبناء والبيئة، لأن النتيجة لا تصدق إلا على ما اختُبر فعلاً. وتقول فرق كثيرة «النظام قيد الاختبار» (System under test, SUT)، وهو في مسرد ISTQB موضوع اختبار يكون نظاماً كاملاً. وقد يؤدي العنصر نفسه الدورين: في مراجعة المتطلبات يكون المتطلب موضوع الاختبار، وعند اختبار الميزة المبنية يصبح أساس الاختبار.

مرجع الاختبار (Test oracle) مصدرٌ لتحديد النتيجة المتوقعة لمقارنتها بالنتيجة الفعلية. وكثيراً ما يكون أساس الاختبار هو المرجع، لكن ليس دائماً:

  • المواصفات: معيار قبول أو قاعدة عمل أو عقد واجهة برمجية ينص على النتيجة.
  • حساب مستقل يدوي أو في جدول بيانات، لا مُخرَج النظام نفسه أبداً.
  • إصدار سابق أو نظام آخر: بعد إعادة هيكلة الكود أو ترحيل البيانات، يكون المُخرَج القديم هو النتيجة المتوقعة.
  • المعايير وقواعد الاتساق: إرشادات WCAG، وصيغة التاريخ المعتمدة في اللغة والمنطقة (Locale)، وإجمالي السلة الذي يجب أن يساوي إجمالي الفاتورة.
  • مرجع جزئي حين يتعذر توقّع النتيجة كاملة، كترتيب نتائج البحث: افحص ما يمكن فحصه (كل نتيجة تحتوي على كلمة البحث) ودوّن ما بقي بلا حكم. وتُسمّى صعوبة معرفة النتيجة الصحيحة عموماً «مشكلة مرجع الاختبار» (Test oracle problem).

جرّبها: مقارنة عقود الاستجابات جرّبها: مقارنة استجابات API

شروط الاختبار: تحديد ماذا نختبر

شرط الاختبار (Test condition) جانبٌ قابل للاختبار من مكوّن أو نظام، يُحدَّد ليكون أساساً للاختبار. وهو يجيب عن سؤال «ماذا نختبر؟»، وكثيراً ما يكون أضيق من المتطلب الذي يأتي منه. ويذكر منهج ISTQB معايير القبول مثالاً على شروط الاختبار؛ أما معيار القبول الذي يغطي عدة سلوكيات فيُقسَّم إلى شرط لكل سلوك.

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

  • يصف نتيجة يمكن ملاحظتها، لا أمنية مثل «الضريبة تعمل بشكل صحيح».
  • يغطي جانباً واحداً ويُتتبَّع إلى عنصر واحد في الأساس، مثل AC2 من القصة QA-214 في المثال التطبيقي أدناه.
  • له أولوية، فتُختبر الشروط الأعلى مخاطرةً أولاً.

مواد الاختبار: ما يُنتجه كل نشاط اختبار

يصف منهج ISTQB للمستوى التأسيسي (الإصدار ⁦4.0⁩) عملية الاختبار بأنها سبعة أنشطة: تخطيط الاختبار (تحديد أهداف الاختبار ونهجه)، ومتابعة الاختبار والتحكم فيه (تتبّع التقدم مقارنةً بالخطة والتعديل عند الحاجة)، وتحليل الاختبار وتصميمه (ماذا نختبر وكيف، كما سبق)، وتهيئة الاختبار (إعداد السكربتات والبيانات والبيئة اللازمة لتشغيل الاختبارات)، وتنفيذ الاختبار (تشغيل الاختبارات وتسجيل نتائجها)، وإتمام الاختبار (اختتام العمل وأرشفة ما يستحق الحفظ). ولا تسير هذه الأنشطة دائماً في تسلسل صارم، وتتناول وحدة «عملية الاختبار (STLC)» كلاً منها بالتفصيل.

يصنّف منهج ISTQB مواد الاختبار حسب النشاط الذي يُنتجها. وليست كل مادة مستنداً مستقلاً: ففي الفرق الرشيقة (Agile) يُحفظ كثير منها في أداة إدارة الاختبار، أو على القصة، أو في مستودع الكود. وتسمّيها بعض الفرق «مخرجات الاختبار» (Test artefacts)، ويقدّم المعيار ISO/IEC/IEEE ⁦29119-3⁩ قوالب لكثير من هذه المستندات. وتخضع مواد الاختبار لإدارة التهيئة (Configuration management) مثل الكود، فتعرف أيّ نسخة من الاختبار شُغّلت على أيّ نسخة من موضوع الاختبار.

  • تخطيط الاختبار: خطة الاختبار، وجدوله الزمني، وسجل المخاطر، ومعايير الدخول والخروج.
  • متابعة الاختبار والتحكم فيه: تقارير تقدم الاختبار، وتوثيق قرارات التحكم، ومعلومات المخاطر.
  • تحليل الاختبار: شروط الاختبار مرتبةً حسب الأولوية، وتقارير العيوب في أساس الاختبار نفسه.
  • تصميم الاختبار: حالات الاختبار مرتبةً حسب الأولوية، ومواثيق الاختبار (Test charters)، وعناصر التغطية (Coverage items)، ومتطلبات بيانات الاختبار، ومتطلبات بيئة الاختبار.
  • تهيئة الاختبار: إجراءات الاختبار، وسكربتات الاختبار الآلية، وحزم الاختبارات، وبيانات الاختبار، وجدول تنفيذ الاختبار، وعناصر بيئة الاختبار مثل البدائل (Stubs) والمشغّلات (Drivers).
  • تنفيذ الاختبار: سجلات الاختبار (Test logs)، أي ما شُغّل ومتى وعلى أي بناء وبأي نتيجة، وتقارير العيوب.
  • إتمام الاختبار: تقرير إتمام الاختبار، والدروس المستفادة، وإجراءات التحسين، وطلبات التغيير؛ وتُؤرشَف مواد الاختبار التي ستفيد لاحقاً أو تُسلَّم للفرق المعنية.
يترك كل نشاط اختبار مواد اختبار خاصة به: خطة الاختبار، وشروط اختبار من أساس الاختبار، وحالات اختبار بنتائج متوقعة من المرجع، وسكربتات وبيانات، وسجلات اختبار وتقارير عيوب، ثم تقرير الإتمام.
  1. 1تخطيط الاختبارخطة الاختبار وجدوله وسجل المخاطر ومعايير الدخول والخروج
  2. 2تحليل الاختبارماذا نختبر؟ يقرأ أساس الاختبارشروط اختبار مرتبة حسب الأولوية، وتقارير عيوب في أساس الاختبار
  3. 3تصميم الاختباركيف نختبر؟ المرجع يعطي النتائج المتوقعةحالات الاختبار ومواثيقه وعناصر التغطية ومتطلبات بيانات الاختبار وبيئته
  4. 4تهيئة الاختبارإجراءات الاختبار والسكربتات الآلية وحزم الاختبارات وبيانات الاختبار وجدول التنفيذ والبدائل والمشغّلات
  5. 5تنفيذ الاختباريعمل على موضوع الاختبار: الفعلية مقابل المتوقعةسجلات الاختبار وتقارير العيوب
  6. 6إتمام الاختبارتقرير إتمام الاختبار والدروس المستفادة ومواد اختبار مؤرشفة

طوال الخطوات 1–6 متابعة الاختبار والتحكم فيه طوال المسار: تقارير تقدم الاختبار وتوثيق قرارات التحكم ومعلومات المخاطر.

بعد ذلك:إلى الدورة التالية: يُعاد استخدام حالات الاختبار والسكربتات المؤرشفة، مثلاً كاختبارات انحدار

ترتيب منطقي لا جدول زمني: تتداخل الأنشطة وتتكرر، ومدى رسمية توثيق كل مادة يعتمد على الفريق والمخاطر.

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

مثال تطبيقي: قصة واحدة من أساس الاختبار إلى سجل الاختبار

متجر إلكتروني يضيف ضريبة القيمة المضافة إلى فواتيره. القصة أدناه هي أساس الاختبار، وموضوع الاختبار صفحة الفاتورة، البناء ⁦3.8.0⁩، في بيئة Staging.

  • شروط الاختبار: الضريبة ⁦15%⁩ من المجموع الفرعي (AC1)؛ ومبلغ الضريبة الذي منزلته العشرية الثالثة ⁦5⁩ يُقرَّب للأعلى (AC2)؛ والإجمالي يجمع الضريبة بعد تقريبها (AC3).
  • المرجع: AC1 وAC2 مع حساب يدوي قبل التشغيل. لمجموع فرعي قدره ⁦10.30⁩: ⁦10.30 × 0.15 = 1.545⁩، فالضريبة المتوقعة ⁦1.55⁩ والإجمالي ⁦11.85⁩. ولمجموع فرعي قدره ⁦100.00⁩ تكون الضريبة المتوقعة ⁦15.00⁩ والإجمالي ⁦115.00⁩.
  • مواد الاختبار: حالة اختبار لكل شرط بهذه القيم المتوقعة، وبيانات اختبار بمجموعين فرعيين ⁦10.30⁩ و⁦100.00⁩، وسجل الاختبار للتشغيل.
  • النتيجة: على البناء ⁦3.8.0⁩ فشلت حالة التقريب، والضريبة المعروضة ⁦1.54⁩. يستشهد تقرير العيب بالمعيار AC2 وبالبناء وبالقيمتين المتوقعة والفعلية، ويتتبّع المطور السبب إلى تقريب النصف نحو الرقم الزوجي (Round half to even)، المعروف بتقريب المصرفيين (Banker’s rounding). بدت ⁦1.54⁩ معقولة على الشاشة؛ والمرجع وحده كشف الإخفاق.
QA-214  الفاتورة تعرض ضريبة القيمة المضافة
بصفتي عميلاً، أريد أن تعرض فاتورتي ضريبة القيمة المضافة
حتى أعرف مقدار الضريبة الذي دفعته.

AC1  تعرض الفاتورة المجموع الفرعي والضريبة بنسبة 15% والإجمالي.
AC2  تُقرَّب الضريبة إلى منزلتين عشريتين، والنصف يُقرَّب للأعلى.
AC3  الإجمالي = المجموع الفرعي + الضريبة كما تظهر في الفاتورة.

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

أخطاء شائعة

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

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

في بداية كل قصة اسأل ثلاثة أسئلة: ما أساس الاختبار (أي نسخة من القصة، وأي تصاميم)؟ وما موضوع الاختبار بالضبط (أي بناء، وأي بيئة)؟ وما المرجع لكل فحص؟ وما لا يجيب عنه الأساس يذهب إلى مالك المنتج، وتُكتب الإجابة في الأساس لا في المحادثة.

احفظ مواد الاختبار حيث يجدها الفريق، في أداة إدارة الاختبار أو المستودع أو على القصة، واربط بينها: الشرط بمعيار القبول، وحالة الاختبار بالشرط، والنتيجة بالبناء، والعيب بحالة الاختبار. عندها تستغرق الإجابة عن «هل اختُبر AC2؟» و«ماذا نعيد تشغيله بعد هذا التغيير؟» دقائق.

تمرين عملي

راجِع جلسة اختبار لميزة رموز الخصم

المطلوب

اقرأ القصة والملاحظات التي كتبها مختبِر بعد جلسة أولى. سمِّ أساس الاختبار وموضوعه ومرجعه، واستخرج شروط الاختبار، واذكر مواد الاختبار الموجودة والناقصة، وحدّد ما الذي سار على نحو خاطئ.

المادة
القصة SHOP-88  رموز الخصم
AC1  الرمز الصالح يخصم 10% من المجموع الفرعي للسلة.
AC2  يستطيع كل عميل استخدام الرمز مرة واحدة فقط.
AC3  الرمز المنتهي يعرض «انتهت صلاحية هذا الرمز».

ملاحظات المختبِر، الثلاثاء، بيئة Staging
1. الرمز SAVE10 على سلة بقيمة 200.00: الشاشة عرضت 180.00،
   إذن النتيجة المتوقعة = 180.00. تم تقديم الطلب. ناجح.
2. استخدمت SAVE10 مرة ثانية بالحساب نفسه: قُبل مجدداً.
   لست متأكداً إن كان هذا عيباً.
3. الرمز المنتهي: لا يتوفر رمز منتهٍ. تم التخطي.
الخطوات
  1. حدّد أساس الاختبار وموضوعه ومرجعه. ما الذي ينقص لتحديد موضوع الاختبار؟
  2. اكتب أربعة شروط اختبار على الأقل، واربط كلاً منها بمعيار قبول.
  3. اذكر مواد الاختبار التي أنتجتها الجلسة، والمواد التي ما زالت تحتاج إليها.
  4. لكل ملاحظة مرقّمة، بيّن الخطأ وما كان على المختبِر أن يفعله.
إظهار الإجابة النموذجية
الإجابة النموذجية

أساس الاختبار: القصة SHOP-88 بمعاييرها من AC1 إلى AC3. موضوع الاختبار: وظيفة رموز الخصم على بيئة Staging، لكن الملاحظات لا تذكر البناء، فلا يمكن ربط النتيجة بإصدار. المرجع: معايير القبول مع حساب: ⁦10%⁩ من ⁦200.00⁩ تساوي ⁦20.00⁩، فالمتوقع ⁦180.00⁩.

شروط الاختبار: الرمز الصالح يخصم ⁦10%⁩ من المجموع الفرعي (AC1)؛ والاستخدام الثاني من العميل نفسه يُرفض (AC2)؛ وعميل آخر ما زال يستطيع استخدام الرمز (AC2)؛ والرمز المنتهي يعرض «انتهت صلاحية هذا الرمز» بنصها (AC3). واسأل مالك المنتج: ماذا يعرض رمز غير معروف؟ وهل يُطبَّق الخصم قبل الضريبة أم بعدها؟

ما أُنتج: الملاحظات، وهي سجل اختبار غير رسمي. وما ينقص: حالات اختبار بنتائج متوقعة مكتوبة قبل التشغيل، وبيانات اختبار (رمز منتهٍ وحساب عميل ثانٍ)، ورقم البناء، وتقرير عيب للملاحظة ⁦2⁩.

الملاحظة ⁦1⁩ أخذت النتيجة المتوقعة من الشاشة؛ طابقت المرجع مصادفةً، وكانت الطريقة ستقبل قيمة خاطئة أيضاً. والملاحظة ⁦2⁩ إخفاق مقابل AC2 لا سؤال مفتوح: أبلغ عنه مع البناء والنتيجتين المتوقعة والفعلية. والملاحظة ⁦3⁩ تنقصها بيانات اختبار: احصل على رمز منتهٍ، وسجّل الاختبار «لم يُنفَّذ»، لا «ناجح» أبداً.

أسئلة شائعة

هل أساس الاختبار هو نفسه مرجع الاختبار؟

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

هل ما زالت الفرق الرشيقة تُنتج مواد اختبار؟

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

هل سكربتات الاختبار الآلية من مواد الاختبار؟

نعم. يذكر منهج ISTQB سكربتات الاختبار الآلية ضمن مُخرَجات تهيئة الاختبار. وهي تحتاج إلى إدارة إصدارات ومراجعة وصيانة مثل أي كود آخر، وسجلات تشغيلها هي سجلات اختبار.

المراجع

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

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

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

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

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

مصنع متكامل لبيانات الاختبار الاصطناعية: مستخدمون وعملاء وشركات وعناوين وأرقام وتواريخ وسلاسل نصية بصيغة JSON أو CSV أو SQL أو XML.

بيانات الاختبار

مقارنة استجابة API فعلية بعقد متوقَّع (مثال أو مخطط) والإبلاغ عن الفروق الكاسرة وغير الكاسرة.

التحقق

قارن استجابتي API (مثل بيئة التجريب مقابل الإنتاج) واحصل على قائمة بكل فرق بنيوي أو في القيم.

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

للتعمّق أكثر

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

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