طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 301 · من الفكرة إلى المنتج (١): تطبيق ويب متكامل
الدرس 7 · الوحدة 3: التأمين وضمان الجودة

المحطّة ٧: خطة الاختبار وضمان الجودة

أثبِت أنّ منتجك يعمل: خطة اختبارٍ تغطّي الوظائف والحدود والأمن. ⏱ نحو 22 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تصمّم خطة اختبارٍ تغطّي الوظائف والحدود والأمن وسهولة الاستخدام.
  • تكتب حالات اختبارٍ قابلةً للتكرار بناتجٍ متوقَّعٍ مسبق.
  • تتتبّع العيوب وتمنع عودتها.
  • تربط الاختبار اليدويّ بالأتمتة التي تعلّمتها في 245.

١«يعمل عندي» ليست شهادة جودة

تعلّمت في مقرّر 245 أنّ البرنامج لا يُسلَّم لأنه «اشتغل مرّةً عندك»، بل بعد أن يصمد أمام حالاتٍ مقصودة صمّمتها لتكسره. الاختبار هنا ليس محطّةً أخيرة بل طريقة تفكير: لكل قصّة مستخدمٍ، ما الذي يثبت أنها تعمل؟ وما الذي قد يكسرها؟

المشروع الطلّابيّ الذي يُسلَّم بخطة اختبارٍ مكتوبة يتفوّق على من يسلّم كودًا أكثر بلا دليلٍ على أنه يعمل. الخطة دليلُك أمام المقيّم.

٢أنواع الاختبار التي تهمّ مشروعنا

النوعيسألمثالٌ من المشروع
وظيفيّهل تؤدّي الميزة غرضها؟إضافة مهمّةٍ تظهر في القائمة.
حدّيّ (Boundary)ماذا عند الأطراف؟عنوانٌ فارغ، عنوانٌ طويلٌ جدًّا، قائمةٌ فارغة.
أمنيّهل يصمد أمام العبث؟حقن ' OR '1'='1، ومحاولة حذف مهمّة مستخدمٍ آخر.
سهولة الاستخدامهل يفهمه مستخدمٌ جديد؟هل رسائل الخطأ واضحة؟ هل الأزرار مفهومة؟

٣حالة الاختبار: وصفةٌ قابلةٌ للتكرار

كل حالة اختبارٍ صفٌّ يصف: ماذا تفعل، وبأيّ مدخل، وما الناتج المتوقَّع، وما النتيجة الفعليّة. مثالٌ من مشروعنا:

#الحالةالمدخلالمتوقَّعنجح؟
1دخولٌ صحيحsarah / sarah123يدخل ويرى مهامّه☐
2دخولٌ خاطئsarah / خطأرسالة «بيانات غير صحيحة»☐
3إضافةٌ فارغةعنوانٌ فارغرفضٌ ولا تُضاف☐
4عزل البياناتali يفتح مهامّهلا يرى مهامّ sarah☐
5منع حذف الغيرali يحذف مهمّة sarahيفشل، تبقى المهمّة☐
6هروب XSSعنوان فيه <script>يُعرَض نصًّا لا يُنفَّذ☐

٤تتبّع العيوب

حين تفشل حالة، لا تصلحها بصمتٍ فحسب؛ سجّلها: ما العيب، وخطوات إعادته، وشدّته، وحالته (مفتوح/أُصلح). هذا سجلٌّ يثبت جودة عملك ويمنع عودة العيب نفسه.

توقّع وتحقّق

ما الاختبار الذي يجرّب العنوان الفارغ والطويل جدًّا؟

متى نكتب «الناتج المتوقَّع»؟

لئلّا نخدع أنفسنا.

«ali يحاول حذف مهمّة sarah» حالةُ اختبارٍ من نوع:

بعد إصلاح عيبٍ، ما الأفضل؟

الخلاصة

تحدٍّ تصميمي: خطة اختبار «مفكّرة مهامّي»

تصميمي

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

المطلوب:
  • جدول حالات اختبارٍ (الحالة، المدخل، المتوقَّع، النتيجة).
  • تغطية كل قصّة مستخدمٍ بحالةٍ واحدةٍ على الأقلّ.
  • حالاتٌ حدّيّةٌ وأمنيّة (فارغ، عزل البيانات، حقن، XSS).
  • سجلّ عيوبٍ لما فشل.
☑ راجع عملك قبل التسليم:
💡 تلميح 1
ابدأ من قصص المحطّة 1: كل قصّةٍ تولّد حالةً «تعمل» وحالةً «تُكسَر».
💡 تلميح 2
الحالات الأمنيّة من المحطّة 6 جاهزة: اجعلها صفوفًا في خطّتك.

🐞 لاحظت خطأً في هذا الدرس؟ أبلغني بالبريد

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس