الاختبار والتحقق وضمان الجودة

مصفوفة تتبع المتطلبات

18 دقيقة الدرس 6 من 10

مصفوفة تتبع المتطلبات

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

يسير التتبع في اتجاهين:

  • التتبع الأمامي — من المتطلبات نزولًا إلى حالات الاختبار والنتائج. يجيب على: "هل كتبنا اختبارات لكل ما طُلب منا بناؤه؟"
  • التتبع العكسي — من حالات الاختبار صعودًا إلى المتطلبات. يجيب على: "هل كل اختبار كتبناه يرتبط بشيء طلبه أصحاب المصلحة فعلًا؟ هل نختبر خارج النطاق المتفق عليه؟"
المصفوفة وثيقة حية. في كل مرة تُضاف أو تتغير أو تُحذف متطلب، يجب تحديث الصف المقابل في المصفوفة. مصفوفة RTM قديمة أسوأ من لا مصفوفة، لأنها تعطي ثقة زائفة بأن كل شيء مُغطى.

تشريح مصفوفة RTM

تحتوي المصفوفة في حدودها الدنيا على هذه الأعمدة:

  1. معرف المتطلب — المعرّف الفريد من وثيقة SRS (مثل FR-012).
  2. وصف المتطلب — عبارة مختصرة تصف ما يقوله المتطلب.
  3. معرفات حالات الاختبار — معرّف (أو أكثر) لحالات الاختبار التي تغطي هذا المتطلب.
  4. نتيجة الاختبار — ناجح أو فاشل أو لم يُنفَّذ بعد (تُحدَّث بعد كل دورة اختبار).

تضيف المصفوفات الأكثر نضجًا أعمدة لأثر التصميم الذي يُجسّد المتطلب (مثل اسم الفئة أو نقطة نهاية API)، والأولوية، والإصدار أو السبرنت المجدوَل فيه. احتفظ بالجدول بقدر ما يحتاجه مشروعك — الهدف الأساسي هو رؤية التغطية، لا البيروقراطية.

المخطط الأول: هيكل مصفوفة RTM لنظام حجز عيادة طبية

تخيّل نظام حجز مواعيد في عيادة طبية. تحتوي وثيقة SRS على ستة متطلبات وظيفية. تُظهر المصفوفة أدناه كيف يرتبط كل منها بحالات الاختبار ونتائجها بعد دورة الاختبار الأولى.

Requirements Traceability Matrix — Clinic Booking System Req ID Requirement Description Test Case IDs Result FR-001 Patient can register with email and password TC-001, TC-002, TC-003 PASS FR-002 Patient can search available appointment slots TC-004, TC-005 PASS FR-003 System sends confirmation email within 2 minutes of booking TC-006, TC-007 FAIL FR-004 Doctor can view their daily appointment schedule TC-008, TC-009 PASS FR-005 Admin can cancel any appointment and notify all parties TC-010, TC-011 NOT RUN FR-006 Patient can view past appointment history — none defined — NOT RUN Legend: PASS FAIL NOT RUN Coverage: 4 of 6 requirements have test cases (66%). FR-006 is a coverage gap — no tests defined. Defect risk: FR-003 (email confirmation) has a failing test — a known defect must be opened and tracked.
مصفوفة تتبع المتطلبات لنظام حجز عيادة طبية: كل صف يربط متطلبًا واحدًا بحالات الاختبار والنتيجة الحالية. FR-006 لا يحمل أي حالات اختبار — وهذه فجوة تغطية يجب معالجتها قبل الإصدار.

قراءة المصفوفة

ثلاثة إشارات تلفت النظر في المصفوفة أعلاه فور تصفّحها:

  • الصفوف الخضراء (PASS) — المتطلب مُغطى بحالة اختبار واحدة على الأقل وجميعها اجتازت الاختبار. الميزة تعمل كما هو محدد.
  • الصف الأحمر (FAIL) — للمتطلب FR-003 حالات اختبار لكنها فشلت. هذه ليست مشكلة تغطية؛ إنها عيب. يجب على المحلل فتح تذكرة عيب وتتبّعها حتى الحل قبل اجتياز بوابة الجودة.
  • الصفوف العنبرية (NOT RUN) — للمتطلب FR-005 حالات اختبار لكن دورة الاختبار لم تصل إليها بعد. أما FR-006 فأسوأ: لا توجد له حالات اختبار على الإطلاق. هذه فجوة تغطية — متطلب قد يصل إلى الإنتاج دون أي دليل على عمله.
فجوة التغطية تُعدّ خطرًا على الإصدار. إذا وصل المتطلب FR-006 إلى الإنتاج بلا تغطية اختبارية، فإن أي عيب في استرجاع سجل المواعيد سيكتشفه المستخدمون الحقيقيون لا المختبِرون. كلما ظهر صف يحمل "none defined" في عمود حالة الاختبار، يجب على المحلل معالجته كعائق أمام دورة الاختبار التالية.

المخطط الثاني: سلسلة التتبع — من المتطلب إلى الدليل

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

Traceability Chain: SRS Requirement to Test Evidence SRS Design Artefact Test Cases Test Results FR-021 Customer views real-time parcel tracking status TrackingController GET /api/parcels/ {id}/status TC-041: Valid parcel ID TC-042: Invalid parcel ID TC-043: Expired parcel ID PASS PASS NOT RUN Forward Traceability Backward Traceability FR-021 coverage: 3 test cases defined, 2 passed, 1 not yet run. Requirement cannot be signed off until TC-043 is executed and passes.
سلسلة التتبع لمتطلب تتبع الطرود في شركة لوجستية: يربط التتبع الأمامي FR-021 بالتصميم ثم حالات الاختبار والنتائج؛ ويؤكد التتبع العكسي أن كل اختبار يرتبط بمتطلب حقيقي.

بناء مصفوفة RTM عمليًا

يبني المحللون عادةً المصفوفة ويصونون تحديثها في جدول بيانات (Excel أو Google Sheets) أو داخل أداة إدارة المتطلبات المتخصصة (مثل Jira أو Confluence أو Helix ALM). تسير العملية عبر هذه الخطوات:

  1. زرع الصفوف. صدِّر كل معرّف متطلب ووصفه من وثيقة SRS. كل منها يحصل على صف. في هذه المرحلة تكون أعمدة حالة الاختبار والنتيجة فارغة.
  2. تعيين حالات الاختبار. بينما يكتب فريق الاختبار حالاته، يُوسم كل منها بمعرّف المتطلب الذي يغطيه. تُحدَّث المصفوفة بهذه المعرّفات. متطلب واحد قد تكون له حالات اختبار متعددة؛ وحالة اختبار واحدة قد تغطي متطلبات متعددة (رغم أن تغطية الكثير في حالة واحدة علامة على ضرورة تقسيمها).
  3. فحص الفجوات. بعد الجولة الأولى، أي صف بلا معرّف حالة اختبار هو فجوة تغطية. يرفع المحلل الأمر إلى مسؤول الاختبار — إما يُكتب اختبار أو يُتخذ قرار رسمي بقبول الخطر (موثّق كتابيًا).
  4. التحديث بعد كل دورة اختبار. حين تنتهي جولة الاختبار، تُسجَّل النتائج (ناجح/فاشل/محجوب) في عمود النتيجة. الصفوف الفاشلة تُولّد تذاكر عيوب ترتبط بمعرّف المتطلب.
  5. استخدامها عند بوابات الجودة. قبل الإصدار لقبول المستخدم أو الإنتاج، تُراجَع المصفوفة. يجب استيفاء العتبة المتفق عليها (مثلًا: 100% من المتطلبات لها حالات اختبار، و95% منها ناجحة). أي متطلب فاشل إما يُصحَّح أو يُؤجَّل رسميًا.
التتبع يُؤتي ثماره مضاعفةً. حين يتغير متطلب في مرحلة متأخرة من المشروع، تُخبرك المصفوفة فورًا بحالات الاختبار التي باتت غير صالحة وتحتاج إلى تحديث. بدونها، يقضي المحللون والمختبِرون أيامًا في تحديد أثر التغيير. معها، الجواب على بُعد فلترة واحدة.

أنماط فاشلة في تطبيق مصفوفة RTM

المصفوفة مفيدة فقط إذا ظلّت دقيقة. تجنّب هذه الأخطاء الشائعة في المشاريع الحقيقية:

  • حالة الاختبار اليتيمة. حالة اختبار لا ترتبط بأي متطلب إما تختبر شيئًا لم يطلبه أحد (تمدد النطاق) أو المتطلب حُذف ولم تُنظَّف الاختبارات تبعًا لذلك. كلاهما يُهدر وقت المختبِرين.
  • معدل النجاح الوهمي. وضع علامة "ناجح" على اختبار نُفِّذ جزئيًا فقط. هذا يُضخّم نسبة التغطية ويُضلّل أصحاب المصلحة عند بوابات الجودة.
  • حالة اختبار واحدة لكل متطلب. حالة اختبار واحدة نادرًا ما تغطي جميع حالات الحدود في متطلب. المتطلب FR-003 ("بريد التأكيد خلال دقيقتين") يحتاج على الأقل ثلاث حالات: المسار الطبيعي، والنظام تحت ضغط عالٍ، وعدم توفر خدمة البريد. الاكتفاء بحالة واحدة يُخلّف مخاطر خفية.
  • المصفوفة المكتوبة بأثر رجعي. حين يملأ المحللون المصفوفة بعد الاختبار لا قبله، يربطون اللاوعي حالات الاختبار بمتطلبات تبدو مطابقة — عوضًا عن تحديد التغطية المفقودة استباقيًا قبل فوات الأوان لكتابة اختبارات جديدة.

في الدرس التالي نتناول إدارة العيوب — كيف تُرفع العيوب المكتشفة من خلال اختبار مدفوع بمصفوفة RTM وتُصنَّف وتُرتَّب أولوياتها وتُحلّ ضمن سير عمل المشروع.