تصميم الاختبار
تصميم الاختبار (Test Design) هو نشاط الاختبار الذي يحوّل شروط الاختبار (Test Conditions) إلى حالات اختبار وإلى بقية مواد الاختبار (Testware) اللازمة لتنفيذها. فتحليل الاختبار حدّد ماذا نختبر، وتصميم الاختبار يحدد كيف: بأي مدخلات، وفي أي حالة، وبأي نتائج متوقعة، وعلى أي بيانات، وفي أي بيئة.
مثال ذلك: أنتج تحليل برنامج ولاء الشرطَ «يحتاج العضو إلى 500 نقطة على الأقل كي يستبدلها». فيحوّله تصميم الاختبار إلى أربعة عناصر تغطية (Coverage Items) قابلة للعدّ، وإلى حالتي اختبار بنتائج متوقعة دقيقة، وإلى قائمة بالبيانات والبيئة التي تحتاجها هاتان الحالتان.
لماذا يهم
من دون تصميم الاختبار تُرتجَل الاختبارات أثناء التنفيذ: اختبارات كثيرة للقيم المريحة في المنتصف، ولا شيء عند الأطراف، ونتائج متوقعة تُخمَّن في اللحظة، ولا سبيل لمعرفة مقدار ما اختُبر من الشرط. والبيانات والبيئات التي لم يطلبها أحد مسبقاً تتحول إلى أيام معطَّلة.
أما التصميم المسبق فيمنحك رقماً تُبلغ عنه («غُطّيت 4 من 4 عناصر تغطية») بدلاً من انطباع، وحالات اختبار يراجعها الآخرون قبل أن توجد الشيفرة. وكتابة النتائج المتوقعة بدقة تكشف أيضاً الثغرات في أساس الاختبار (Test Basis) ما دام سدّها رخيصاً.
ما يدخل إلى تصميم الاختبار وما يخرج منه
يبدأ تصميم الاختبار من مخرجات تحليل الاختبار: شروط اختبار مرتبة حسب الأولوية ومتتبَّعة إلى أساس الاختبار. وشرط مثل «الحد الأدنى لرصيد النقاط للاستبدال» يقول ماذا نختبر، لكنه لا يحدد بعدُ القيم ولا النتائج المتوقعة.
يصف منهج ISTQB للمستوى التأسيسي (الإصدار 4.0) تصميم الاختبار بأنه تفصيل شروط الاختبار إلى حالات اختبار ومواد اختبار أخرى، وكثيراً ما يتم ذلك بتحديد عناصر التغطية باستخدام تقنية اختبار. ومخرجاته هي:
- عناصر التغطية: عناصر قابلة للعدّ تُشتق من كل شرط اختبار، ويجب أن تغطيها حالات الاختبار.
- حالات الاختبار مرتبة حسب الأولوية: شروط مسبقة ومدخلات وإجراءات ونتائج متوقعة وشروط لاحقة.
- مواثيق الاختبار (Test Charters)، للشروط التي يغطيها الاختبار الاستكشافي بدلاً من حالات اختبار مكتوبة الخطوات: يحدد الميثاق ما يُستكشف ولماذا، من دون خطوات ثابتة.
- متطلبات بيانات الاختبار: ما البيانات التي تحتاجها الاختبارات، وفي أي حالة.
- متطلبات بيئة الاختبار: الإعدادات والأنظمة المتصلة والأدوات والصلاحيات.
عناصر التغطية: الجسر بين الشرط وحالة الاختبار
يعرّف مسرد ISTQB عنصر التغطية بأنه سمة أو مجموعة سمات مشتقة من شرط اختبار واحد أو أكثر باستخدام تقنية اختبار. وبعبارة أبسط: تحوّل التقنية شرطاً عاماً إلى عناصر محددة، يحتاج كلٌّ منها إلى اختبار واحد على الأقل.
وبهذا يصبح التصميم قابلاً للقياس: فالتغطية هي عدد العناصر التي غطّتها حالة اختبار واحدة على الأقل مقسوماً على عدد العناصر المحددة، بنسبة مئوية. ويصبح العمق قراراً صريحاً: الشرط عالي المخاطر يحصل على تقنية أقوى وعناصر أكثر، والشرط منخفض المخاطر قد يكفيه اختبار واحد.
وكل تقنية، ولكلٍّ منها درس خاص في وحدة تقنيات تصميم الاختبار، تنتج عناصر مختلفة:
- تقسيم التكافؤ (Equivalence Partitioning): كل قسم، صالحاً كان أو غير صالح؛ والقسم مجموعة قيم يُفترض أن يعاملها النظام بالطريقة نفسها.
- تحليل القيم الحدّية (Boundary Value Analysis): القيم الحدّية، أي أصغر قيمة وأكبر قيمة في كل قسم مرتب. وفي الصيغة الثنائية (2-value BVA) تقترن كل قيمة حدّية بأقرب جارة لها في القسم المجاور، فالحدّ عند 500 نقطة يعطي 499 و500.
- اختبار جدول القرار (Decision Table Testing): كل عمود ممكن، أي تركيبة من الشروط.
- اختبار انتقالات الحالة (State Transition Testing): الحالات، أو الانتقالات الصالحة، أو كل الانتقالات، بحسب معيار التغطية.
مثال تطبيقي: شرط واحد وأربعة عناصر تغطية وحالتا اختبار
أساس الاختبار هو القصة LOY-9 في تطبيق بقالة: «يستطيع الأعضاء الذين لديهم 500 نقطة على الأقل استبدالها عند الدفع. كل 100 نقطة تخصم 10.00 ريالات من الطلب. تنتهي صلاحية النقاط بعد 12 شهراً من كسبها». وقد صنّف التحليل الشرط TCO-1، أي الحد الأدنى للرصيد، عالي المخاطر: فالعيب فيه يمنح خصومات بلا حق أو يحرم منها أعضاء مستحقين.
يعطي تقسيم التكافؤ وتحليل القيم الحدّية الثنائي أربعة عناصر تغطية. وتكفي حالتا اختبار لتغطيتها جميعاً، لأن كل حالة تصيب قسماً وقيمة حدّية في الوقت نفسه. ويبدأ القسم الأدنى من 0، وهو أصغر رصيد ممكن، فالقيمة 0 قيمة حدّية أيضاً؛ لكن التحليل أفرد للأعضاء الذين لا نقاط لديهم شرطاً مستقلاً، فاقتصر هذا التصميم على حدّ الـ500 نقطة.
- 1شرط الاختبارمُدخل من تحليل الاختبار: ماذا نختبرTCO-1 الحد الأدنى للرصيد لاستبدال النقاط · المخاطر: عالية
- 2تقنيات الاختبارتقسيم التكافؤ وتحليل القيم الحدّية الثنائي، اختيرا وفق المخاطر
- 3أربعة عناصر تغطيةالأقسام: أقل من 500، و500 فأكثر · القيمتان الحدّيتان: 499 و500
- 4حالتا اختبارغُطّيت 4 من 4 عناصر تغطية: 100%TC-11: 499 نقطة، لا استبدال · TC-12: 500 نقطة، خصم 50.00 ريالاًتُصمَّم معها
- 5متطلبات البيانات والبيئةعضوان لديهما 499 و500 نقطة بالضبط؛ خدمة الولاء أو بديل (Stub)
طوال الخطوات 2–4 تصميم الاختبار: كيف نختبر
بعد ذلك:ثم تُنشئ تهيئة الاختبار البيانات وتجهّز البيئة وتجمع إجراءات الاختبار
- متطلبات بيانات الاختبار: عضوان لدى أحدهما 499 نقطة بالضبط ولدى الآخر 500 نقطة بالضبط، كلها مكتسبة خلال آخر 12 شهراً كي لا تتدخل صلاحية النقاط، وسلة إجماليها 120.00 ريالاً.
- متطلبات بيئة الاختبار: خدمة الولاء متصلة، أو بديل (Stub) يعيد رصيداً محدداً، وطريقة لضبط الأرصدة مثل شاشة إدارة أو سكربت لتهيئة البيانات (Seed Script).
- أسئلة أثارها التصميم: عندما يقل الرصيد عن 500، هل يُخفى خيار الاستبدال أم يُعطَّل، وبأي رسالة؟ هل يمكن استبدال 550 نقطة أم مضاعفات 100 فقط؟ وماذا لو تجاوز الخصم إجمالي الطلب؟
TCO-1 الشرط: الحد الأدنى للرصيد لاستبدال النقاط (المخاطر: عالية)
التقنيات: تقسيم التكافؤ + تحليل القيم الحدّية الثنائي
عنصر التغطية، ثم الحالة التي تغطيه، ثم وصفه:
CI-1 TC-11 قسم: رصيد أقل من 500
CI-2 TC-12 قسم: رصيد 500 فأكثر
CI-3 TC-11 قيمة حدّية: 499
CI-4 TC-12 قيمة حدّية: 500
TC-11 عضو لديه 499 نقطة، وإجمالي طلبه 120.00، يفتح صفحة الدفع
المتوقع: لا يمكن استبدال النقاط، ويبقى الإجمالي 120.00
TC-12 عضو لديه 500 نقطة يستبدلها كلها، وإجمالي طلبه 120.00
المتوقع: خصم 50.00 ريالاً، والإجمالي 70.00، وخصم 500 نقطة من الرصيد
التغطية: 4 من 4 عناصر تغطية = 100%جرّبها: المتطلبات ← حالات اختبار جرّبها: مولّد حالات الاختبار
صمّم البيانات والبيئة الآن، وابنِهما لاحقاً
يحدد تصميم الاختبار ما تحتاجه الاختبارات، ويُنشئه النشاط التالي: تهيئة الاختبار (Test Implementation). وتدوين هذه الاحتياجات الآن يسمح بتجهيز البيانات وطلب البيئات في الوقت المناسب، بدلاً من اكتشافها في أول يوم من التنفيذ على هيئة اختبارات معطَّلة.
متطلب بيانات الاختبار يصف السجلات وحالاتها («عضو لديه 499 نقطة بالضبط، كلها مكتسبة خلال آخر 12 شهراً»)، لا رقم مستخدم بعينه. ومتطلب بيئة الاختبار يغطي الاتصالات والإعدادات: بيئات تجربة (Sandbox) أو بدائل للأطراف الخارجية، ومفاتيح الميزات (Feature Flags)، واللغة والمنطقة الزمنية، وحساباً لكل دور، وأدوات تحكم مثل ضبط التاريخ.
ويصف المعيار ISO/IEC/IEEE 29119-2 عملية واحدة مدمجة لتصميم الاختبار وتهيئته. وفي إصداره لعام 2021 تُشتق عناصر تغطية الاختبار من نموذج اختبار (Test Model)، مثل مجموعة أقسام أو مخطط حالات، بدلاً من شروط الاختبار، ثم تُشتق حالات الاختبار وإجراءات الاختبار. أما ISTQB فيفصل النشاطين، وكثير من الفرق تنجزهما في جلسة واحدة.
أخطاء شائعة
- الانتقال من المتطلب إلى حالات الاختبار مباشرةً بلا عناصر تغطية، فلا يستطيع أحد أن يعرف هل المجموعة مكتملة.
- حالات اختبار كثيرة لعنصر التغطية نفسه، مثل خمسة أرصدة بين 600 و2,000 نقطة، بينما لا يوجد اختبار للقيمتين 499 و500.
- نتائج متوقعة مبهمة مثل «يُطبَّق الخصم بشكل صحيح» بدلاً من قيم من أساس الاختبار: خصم 50.00 ريالاً والإجمالي 70.00.
- ترك احتياجات البيانات والبيئة ضمنية حتى يكشف التنفيذ أنه لا يوجد عضو لديه 499 نقطة بالضبط.
- حالات اختبار لا تحمل معرّف شرط الاختبار الذي جاءت منه، فلا يمكن تتبّع أثر تغيير المتطلب على الاختبارات.
- العمق نفسه لكل الشروط، بدلاً من تخصيص أكبر عدد من عناصر التغطية حيث يكون الإخفاق (Failure) أعلى كلفة.
من منظور ضمان الجودة
في الفريق الرشيق (Agile) يجري تصميم الاختبار قصةً بقصة، أثناء تحسين قائمة المهام (Refinement) وفي بداية السبرنت، متى استقرت معايير القبول. ويحسم المختبِر النتائج المتوقعة والأسئلة المفتوحة مع مالك المنتج، والحدود التقنية وطرق ضبط البيانات أو الساعة مع المطورين، ويطلب من مختبِر آخر مراجعة التصميم.
سجّل لكل شرط اختبار التقنيةَ وعناصر التغطية وحالات الاختبار التي تغطيها، مع معرّف الشرط على كل حالة اختبار كي يصمد التتبّع (Traceability) أمام تغيّر المتطلبات. وسلّم متطلبات البيانات والبيئة لمن يجهّزها، واجعل لكل سؤال مفتوح مسؤولاً عنه. ومن هذا السجل تبدأ تهيئة الاختبار.
تمرين عملي
صمّم اختبارات لقواعد مواعيد العيادة
يُكمل هذا التمرين قصة العيادة US-57 من درس تحليل الاختبار. أجاب مالك المنتج عن سؤالَي AC2 وAC5 بالقاعدتين أدناه؛ ولأن الإلغاء المتأخر صار يكلّف المريض مالاً، رُفع تقييم مخاطر الشرط C7 من متوسطة إلى عالية. حدّد عناصر التغطية للشرطين C3 وC7، واكتب أصغر مجموعة من حالات الاختبار تغطيها جميعاً، واكتب ما تحتاجه هذه الاختبارات.
احسب نافذة الحجز بالأيام الكاملة، وقارن الأوقات بدقة الدقيقة. واكتب كل افتراض آخر على هيئة سؤال.
US-57 القصة: حجز موعد في العيادة عبر الإنترنت
إجابات مالك المنتج عن سؤالَي AC2 وAC5:
القاعدة 1: يستطيع المريض أن يحجز موعداً يقع بعد 1 إلى 30 يوماً من اليوم.
القاعدة 2: الإلغاء مجاني حتى 24 ساعة قبل الموعد؛
والإلغاء بعد ذلك عليه رسوم قدرها 50.00 ريالاً.
شروط الاختبار الناتجة عن تحليل الاختبار:
C3 نافذة الحجز: كم يوماً مسبقاً يمكن للمريض أن يحجز (المخاطر: متوسطة)
C7 رسوم الإلغاء تعتمد على الوقت المتبقي قبل بدء الموعد (المخاطر: عالية)- للشرط C3، اكتب أقسام «عدد الأيام المسبقة» والقيم الحدّية للصيغة الثنائية.
- افعل الشيء نفسه للشرط C7 مع «الوقت المتبقي قبل الموعد».
- اكتب الحد الأدنى من حالات الاختبار مع المدخل والنتيجة المتوقعة وعناصر التغطية التي تغطيها كل حالة، ثم احسب التغطية.
- اكتب متطلبات البيانات والبيئة والأسئلة الموجهة إلى مالك المنتج.
إظهار الإجابة النموذجية
الشرط C3، سبعة عناصر تغطية. الأقسام: 0 يوم مسبقاً أو أقل، أي اليوم نفسه أو تاريخ ماضٍ (غير صالح، CI-1)؛ ومن 1 إلى 30 يوماً (صالح، CI-2)؛ و31 فأكثر (غير صالح، CI-3). القيم الحدّية: 0 و1 و30 و31 (من CI-4 إلى CI-7). أربع حالات اختبار: اليوم نفسه، مرفوض (CI-1 وCI-4)؛ الغد، مقبول (CI-2 وCI-5)؛ بعد 30 يوماً، مقبول (CI-2 وCI-6)؛ بعد 31 يوماً، مرفوض (CI-3 وCI-7). التغطية: 7 من 7 = 100%.
الشرط C7، أربعة عناصر تغطية. الأقسام: 24 ساعة أو أكثر قبل البداية، مجاني (CI-8)؛ وأقل من 24 ساعة، برسوم (CI-9). القيم الحدّية: 24:00 و23:59 قبل البداية (CI-10 وCI-11). حالتا اختبار، كلتاهما عالية الأولوية: الإلغاء قبل 24 ساعة بالضبط، بلا رسوم (CI-8 وCI-10)؛ والإلغاء قبل 23 ساعة و59 دقيقة، تُحصَّل رسوم 50.00 ريالاً (CI-9 وCI-11). التغطية: 4 من 4 = 100%. أما الطرف الآخر لقسم الرسوم، أي وقت بدء الموعد نفسه، فيتوقف على جواب السؤال الأخير أدناه.
البيانات: مريض بوسيلة دفع في بيئة تجربة الدفع؛ وطبيب لديه مواعيد شاغرة اليوم وغداً وبعد 30 و31 يوماً (فمن دون موعد شاغر في اليوم 31 لا يثبت الرفض شيئاً)؛ ومواعيد ذات أوقات بداية معروفة. البيئة: المنطقة الزمنية للإنتاج، وساعة يمكن التحكم فيها أو طريقة أخرى لبلوغ حدّ الـ24 ساعة بدقة الدقيقة، وبيئة تجربة الدفع متصلة.
الأسئلة: هل الإلغاء عند 24 ساعة بالضبط مجاني؟ هل يُقارن الوقت بالدقيقة أم بالثانية؟ أي منطقة زمنية تُعتمد؟ هل اليوم هو اليوم 0 في النافذة؟ هل يمكن الإلغاء بعد بدء الموعد، وبأي كلفة؟
أسئلة شائعة
ما الفرق بين تحليل الاختبار وتصميم الاختبار؟
تحليل الاختبار يجيب عن سؤال «ماذا نختبر؟»: يقيّم أساس الاختبار وينتج شروط اختبار مرتبة حسب الأولوية. وتصميم الاختبار يجيب عن سؤال «كيف نختبر؟»: يحوّل هذه الشروط إلى عناصر تغطية وحالات اختبار ومتطلبات للبيانات والبيئة. وفي الفرق الصغيرة كثيراً ما يؤدي شخص واحد النشاطين في جلسة واحدة، لكن الفصل بين السؤالين يساعدك على ملاحظة إغفال أحدهما.
هل عنصر التغطية هو نفسه حالة الاختبار؟
لا. عنصر التغطية شيء يجب أن يُغطّى، وحالة الاختبار هي ما يغطيه. وقد تغطي حالة واحدة عدة عناصر: ففي المثال التطبيقي تغطي الحالة ذات الـ500 نقطة القسم «500 فأكثر» والقيمة الحدّية 500 معاً. والتغطية تعدّ العناصر، لذا فإضافة حالات تصيب العناصر نفسها لا ترفعها.
هل يجب أن أكتب دائماً حالات اختبار مفصلة خطوة بخطوة؟
لا. يتبع مستوى التفصيل السياق المتفق عليه في خطة الاختبار. فالعمل الخاضع للتنظيم والأتمتة والأعضاء الجدد في الفريق يحتاجون حالات اختبار منخفضة المستوى (Low-level) بقيم محددة؛ وقد يكتفي فريق متمرس بحالات عالية المستوى (High-level)، أو يغطي شرطاً بميثاق اختبار استكشافي، وهو أيضاً من مخرجات تصميم الاختبار في منهج ISTQB.
هل تعني تغطية 100% أن الميزة خالية من العيوب؟
لا. معناها أن كل عنصر تغطية حدّدته غطّاه اختبار واحد على الأقل. وقد تبقى العيوب مختبئة في شروط أغفلها التحليل، أو في عناصر لا تنتجها التقنية المختارة، أو في تركيبات لم يصممها أحد. فالتغطية تبيّن ما اختُبر، لا أن البرنامج صحيح.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
- ISO/IEC/IEEE 29119-2:2021 — Software and systems engineering — Software testing — Part 2: Test processesنموذج عمليات الاختبار: العمليات المؤسسية وعمليات إدارة الاختبار وعمليات الاختبار الديناميكي، مع أنشطتها ومخرجاتها.
تدرّب بأدوات متقن
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
اشتق فئات التكافؤ الصالحة وغير الصالحة لكل مدخل واختر قيم اختبار تمثيلية.
نفّذ تحليلاً كاملاً للقيم الحدّية (ثنائي القيم وثلاثي القيم) مع فئات التكافؤ والنتائج المتوقّعة.
ولّد حالات اختبار منظّمة (المعرّف والعنوان والشروط المسبقة والخطوات والنتيجة المتوقّعة والأولوية) من وصف الميزة وقائمة الحقول.
مصنع متكامل لبيانات الاختبار الاصطناعية: مستخدمون وعملاء وشركات وعناوين وأرقام وتواريخ وسلاسل نصية بصيغة JSON أو CSV أو SQL أو XML.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.