تتبّع المتطلبات
تتبّع المتطلبات (Requirements Traceability) يعني ربط كل متطلب بمواد الاختبار (Testware) المشتقة منه، أي شروط الاختبار وحالات الاختبار ونتائج التنفيذ والعيوب التي تكشفها، والحفاظ على هذه الروابط محدّثة. ويصف مسرد ISTQB التتبّع بأنه الدرجة التي يمكن بها إقامة علاقة بين ناتجَي عمل أو أكثر، وأهم علاقة عند المختبِر هي التي تربط أساس الاختبار بالاختبارات.
مثال ملموس: المتطلب REQ-2 في ميزة قسائم الخصم بمتجر إلكتروني ينص على رفض القسيمة المنتهية الصلاحية برسالة واضحة. وحالة الاختبار TC-03 تسجّل في حقل «يُتتبَّع إلى» القيمة REQ-2. بهذا الرابط الواحد تجيب في ثوانٍ عن سؤالين: أيّ الاختبارات تتحقق من REQ-2؟ ولماذا توجد TC-03؟ وإذا جمعت كل هذه الروابط في جدول واحد حصلت على مصفوفة تتبّع المتطلبات (Requirements Traceability Matrix).
لماذا يهم
بلا روابط تصبح التغطية تخميناً. فتقرير الإصدار الذي يقول «نجح 212 اختباراً» لا يخبر مالك المنتج هل اختُبرت قواعد الاسترداد أصلاً. أما مع التتبّع فيستطيع التقرير أن يذكر متطلباً متطلباً: أيّها له اختبارات ناجحة، وأيّها له اختبارات فاشلة، وأيّها بلا اختبار. ويعدّد منهج ISTQB للمستوى التأسيسي ما يتيحه التتبّع الجيد: تقييم التغطية، وتحديد أثر التغييرات، وتسهيل عمليات التدقيق (Audits)، والمساعدة على استيفاء معايير حوكمة تقنية المعلومات، وجعل تقارير الاختبار مفهومة لأصحاب المصلحة.
وهو للمختبِر حماية أيضاً. فحين يتغيّر متطلب قبل الإصدار بيومين، يحوّل التتبّع سؤال «ماذا نعيد اختباره؟» من نقاش إلى بحث سريع في الروابط. وحين يتسرّب عيب إلى بيئة الإنتاج، تبيّن الروابط هل كان المتطلب بلا اختبار أصلاً، أم كان مختبَراً لكن الاختبار لم يكشف الخلل؛ وهما درسان مختلفان تماماً للفريق.
ما الذي يربطه التتبّع، وعمّ يجيب كل رابط
يسير التتبّع على سلسلة نواتج العمل في عملية الاختبار: متطلب أو معيار قبول في أساس الاختبار، ثم شروط الاختبار المشتقة منه، ثم حالات الاختبار التي تغطيها، ثم نتائجها على بناء معيّن، ثم العيوب المُبلَّغ عنها من الإخفاقات. ويحتاج كل عنصر إلى معرّف فريد ثابت، ويُسجَّل كل رابط في العنصر نفسه: حالة الاختبار تذكر المتطلب الذي تغطيه، وتقرير العيب يذكر حالة الاختبار والمتطلب. ويعدّ المنهج المخاطرَ أيضاً من مواد الاختبار التي تُربط: فتتبّع نتائج الاختبار إلى المخاطر التي تعالجها يبيّن مقدار الخطر المتبقي.
والروابط من نوع «متعدد إلى متعدد»: فالمتطلب الواحد يحتاج عادةً إلى عدة حالات اختبار، وحالة اختبار شاملة (End-to-End) واحدة قد تغطي عدة متطلبات. والرابط يعني «هذا الاختبار يتحقق من هذا المتطلب»، لا «هذا الاختبار يمرّ بهذه الشاشة».
- المتطلب ← حالات الاختبار: هل اختُبر هذا المتطلب أصلاً، وبأيّ الاختبارات؟
- حالة الاختبار ← النتيجة: هل نجحت هذه الاختبارات على البناء الذي ننوي إصداره؟
- النتيجة ← العيب: ما العيوب المفتوحة التي تقف بين هذا المتطلب واكتماله؟
- حالة الاختبار ← المتطلب: لماذا يوجد هذا الاختبار، ومن يقرّر نتيجته المتوقعة؟
ربط المتطلبات بالاختبارات: مصفوفة التتبّع
تجمع مصفوفة تتبّع المتطلبات (RTM) الروابط في جدول واحد: صف لكل متطلب، وعمود لكل حالة اختبار، وعلامة حيث يغطي اختبارٌ متطلباً. وكثيراً ما تضيف الفرق آخر نتيجة والعيوب المفتوحة، أو تحفظ الروابط في أداة لإدارة الاختبار وتستخرج المصفوفة تقريراً منها. ويكفي جدول بيانات للبداية؛ فالمهم أن يُسجَّل كل رابط عند كتابة الاختبار، لا أن يُعاد بناؤه من الذاكرة قبل الإصدار.
المثال الذي يرافق هذا الدرس هو ميزة قسائم الخصم في متجر إلكتروني، بأربعة متطلبات وخمس حالات اختبار. وحقل «يُتتبَّع إلى» في كل حالة اختبار هو المصدر، ومنه تُبنى المصفوفة.
- تتبّع على المستوى الذي تختبر به: المتطلبات الفردية أو معايير القبول، لا الميزات أو الملاحم (Epics) كاملة.
- اكتب معرّف المتطلب في كل حالة اختبار أثناء تصميمها، وفي أسماء الاختبارات المؤتمتة أو وسومها.
المتطلبات
REQ-1 قسيمة خصم واحدة لكل طلب
REQ-2 تُرفض القسيمة المنتهية برسالة «انتهت صلاحية هذه القسيمة»
REQ-3 الخصم بالنسبة المئوية يُطبَّق على مجموع المنتجات لا على التوصيل
REQ-4 تعرض فاتورة البريد الإلكتروني الخصم في سطر مستقل
حالات الاختبار، ولكل منها حقل [يُتتبَّع إلى]
TC-01 [REQ-1, REQ-3] تطبيق قسيمة صالحة بخصم 10% على سلة قيمتها 200.00 ريال
TC-02 [REQ-1] تطبيق قسيمة ثانية على الطلب نفسه
TC-03 [REQ-2] تطبيق قسيمة انتهت صلاحيتها أمس
TC-04 [REQ-3] تطبيق قسيمة 10% على سلة بـ 100.00 ريال ورسوم توصيل 15.00 ريالاً
TC-05 [لا شيء] إدخال رمز القسيمة بأحرف صغيرة
المصفوفة المبنية من هذه الحقول
RTM TC-01 TC-02 TC-03 TC-04 TC-05
REQ-1 x x
REQ-2 x
REQ-3 x x
REQ-4جرّبها: المتطلبات ← حالات اختبار جرّبها: المتطلبات ← سيناريوهات اختبار
التتبّع الأمامي والتتبّع العكسي
التتبّع الأمامي (Forward Traceability) يتبع كل متطلب إلى اختباراته، ثم إلى نتائجها وعيوبها. وفي المصفوفة تقرأ على امتداد الصف، والسؤال هو: «هل اختبرنا كل ما وعدنا به؟». وفي مثال القسائم صفّ REQ-4 فارغ: لا أحد يختبر فاتورة البريد الإلكتروني، فلا يستطيع أي تقرير أن يدّعي أن REQ-4 يعمل.
والتتبّع العكسي (Backward Traceability) يتبع كل حالة اختبار أو عيب رجوعاً إلى المتطلب الذي جاء منه. وفي المصفوفة تقرأ نزولاً في العمود، والسؤال هو: «لماذا يوجد هذا الاختبار؟». وعمود TC-05 فارغ: اختبار لرموز القسائم بالأحرف الصغيرة لا يطلبه أي متطلب. والحفاظ على روابط يمكن اتباعها في الاتجاهين يُسمّى التتبّع ثنائي الاتجاه (Bidirectional Traceability)، والمصفوفة تعطيك القراءتين من العلامات نفسها. ولا يسمّي منهج ISTQB هذين الاتجاهين؛ فـ«الأمامي» و«العكسي» و«ثنائي الاتجاه» مصطلحات شائعة في الصناعة.
وكل فجوة سؤال للفريق، لا إصلاح تلقائي:
| المتطلب / حالة الاختبار | TC-01قسيمة 10% صالحة | TC-02قسيمة ثانية | TC-03انتهت أمس | TC-04التوصيل بلا خصم | TC-05رمز بأحرف صغيرة | أمامياً: تختبرهاقرأ الصف |
|---|---|---|---|---|---|---|
REQ-1قسيمة واحدة لكل طلب | مرتبط | مرتبط | لا رابط | لا رابط | لا رابط | اختباران |
REQ-2رفض القسيمة المنتهية | لا رابط | لا رابط | مرتبط | لا رابط | لا رابط | اختبار واحد |
REQ-3الخصم على المنتجات لا التوصيل | مرتبط | لا رابط | لا رابط | مرتبط | لا رابط | اختباران |
REQ-4سطر الخصم في فاتورة البريد | لا رابط | لا رابط | لا رابط | لا رابط | لا رابط | لا اختبار |
| عكسياً: يُتتبَّع إلىاقرأ العمود | REQ-1, REQ-3 | REQ-1 | REQ-2 | REQ-3 | لا متطلب | فجوتان للسؤال عنهما |
- مرتبط: الاختبار يتحقق من هذا المتطلب
- فجوة: سؤال للفريق، لا إصلاح تلقائي
كل علامة مأخوذة من حقل «يُتتبَّع إلى» في حالة الاختبار؛ والعمود الأخير والصف الأخير هما القراءتان، لا بيانات إضافية.
- متطلب بلا اختبار (REQ-4): صمّم له اختباراً، أو سجّل سبب عدم اختباره هنا: خارج النطاق، أو مغطّى في مستوى اختبار آخر، أو خطر يقبله مالك المنتج.
- اختبار بلا متطلب (TC-05): إمّا أن متطلباً لم يُكتب بعد، فقبول الرموز دون تمييز حالة الأحرف قد يكون ما يريده العمل تماماً، فاسأل واطلب توثيقه؛ وإمّا أن الاختبار يفحص شيئاً لا يحتاجه أحد فيُستبعد.
- عيب لا يُتتبَّع إلى أي متطلب: غالباً توقّع غير مكتوب؛ اطرحه في فرز العيوب (Triage) كي يُضاف المتطلب أو يُوضَّح.
مثال تطبيقي: تحليل أثر تغيّر متطلب
تحليل الأثر (Impact Analysis) يعني تحديد ما سيتأثر بالتغيير قبل تنفيذه وإصداره؛ وإذا أُجري مبكراً فقد يساعد حتى على تقرير هل يُنفَّذ التغيير أصلاً. والتتبّع يجعل الجزء الخاص بالاختبار منه سريعاً وقابلاً للتفسير. بعد شهر من إطلاق ميزة القسائم، يرفع مالك المنتج طلب التغيير CR-12: «يكون الحد الأقصى لخصم القسيمة 50.00 ريالاً لكل طلب». وهذا يعدّل REQ-3.
قارن أولاً الصياغة القديمة بالجديدة لترى بالضبط ما الذي تغيّر. ثم اتبع المتطلب المتغيّر أمامياً، واقرأ كل اختبار متأثر عكسياً لترى ما الذي يغطيه أيضاً، وقرّر هل يبقى كل اختبار أو يتغيّر أو تُضاف بجانبه اختبارات جديدة، ثم اسأل عمّا لا تستطيع المصفوفة إظهاره.
- حصرت المصفوفة العمل في متطلب واحد، واختبارين قائمين يحتفظان بنتيجتيهما المتوقعتين، وثلاثة اختبارات جديدة، بدلاً من «أعد اختبار القسائم».
- أما الأثر على REQ-4 فلم تكن المصفوفة لتُظهره: فهي تحفظ الروابط المسجّلة، لا كل موضع يُستخدم فيه الخصم. اسأل المطور أيّ الشيفرات والشاشات تقرأ قيمة الخصم.
CR-12: الحد الأقصى لخصم القسيمة 50.00 ريالاً لكل طلب (يعدّل REQ-3)
1. أمامياً من REQ-3: TC-01 وTC-04
2. عكسياً من هذين الاختبارين: TC-01 يغطي REQ-1 أيضاً، فأيّ تعديل عليه يحتفظ بهذا التحقق
3. المراجعة: TC-01 يعطي خصماً قدره 20.00 وTC-04 خصماً قدره 10.00، وكلاهما أقل من الحد.
النتيجتان المتوقعتان لا تتغيّران.
4. اختبارات جديدة للمتطلب REQ-3:
TC-06 10% من 400.00: الخصم 40.00 (أقل من الحد)
TC-07 10% من 500.00: الخصم 50.00 (عند الحد)
TC-08 10% من 800.00: الخصم 50.00 لا 80.00 (فوق الحد)
5. خارج المصفوفة: REQ-4 (فاتورة البريد) يجب أن تعرض الخصم بعد الحد، وما زال
بلا اختبار، فأضف TC-09. واسأل المطور أيّ شيفرة أخرى تقرأ قيمة الخصم.
6. نفّذ TC-01 وTC-04 ومن TC-06 إلى TC-09 على البناء الجديد، مع اختبارات الانحدار التي
يختارها الفريق، وأضف الروابط الجديدة إلى المصفوفة.جرّبها: مقارنة النصوص (Diff) جرّبها: مولّد سيناريوهات الانحدار
أخطاء شائعة
- بناء المصفوفة في النهاية من أجل تدقيق أو تقرير، بدلاً من تسجيل كل رابط عند كتابة حالة الاختبار؛ فالمصفوفة المبنية من الذاكرة تخمين.
- التتبّع إلى ميزة كاملة أو ملحمة (Epic): فيجعل اختبار واحد للمسار السعيد (Happy Path) ميزة «القسائم» كلها مغطاة، بينما ثلاث من قواعدها الأربع بلا اختبار.
- اعتبار الرابط دليلاً على كفاية الاختبار؛ فالخلية المملوءة تقول إن اختباراً موجود، لا إنه يفحص القيم الصحيحة ولا إنه نجح على هذا البناء.
- حذف الاختبارات التي بلا متطلب دون سؤال، أو تجاهلها؛ فكل منها إمّا متطلب لم يُكتب وإمّا اختبار متقادم، ومالك المنتج هو من يحدد أيّهما.
- ترك الروابط تتقادم: تُقسَّم المتطلبات أو يُعاد ترقيمها أو تُحذف، وتظل المصفوفة تشير إلى المعرّفات القديمة، فيعطي تحليل الأثر إجابة خاطئة.
من منظور ضمان الجودة
التتبّع في الفريق الحقيقي عادةٌ أكثر منه وثيقة: يوضع معرّف المتطلب أو معيار القبول على كل شرط اختبار وكل حالة اختبار، وفي أسماء الاختبارات المؤتمتة أو وسومها (Tags)، وعلى كل تقرير عيب. واتفق مع الفريق على مكان الروابط، سواء أكان أداة إدارة الاختبار أم متتبّع المهام أم جدولاً مشتركاً، كي يكون لها مصدر واحد يقرؤه المطورون ومالك المنتج أيضاً.
واستخدم الروابط حين تهمّ. في جلسات التنقيح (Refinement) اطلب معرّفات ومعايير قبول تستطيع الاختبارات الإشارة إليها. وقبل الإصدار أبلغ بحسب المتطلب: «REQ-3: خمسة اختبارات مرتبطة نجحت كلها على البناء 58؛ REQ-2: اختباره الوحيد فشل والعيب D-41 مفتوح». وحين يصل طلب تغيير، أجرِ الفحص الأمامي والعكسي قبل تقدير جهد إعادة الاختبار. ولا تجعل المصفوفة أكثر تفصيلاً مما سيحافظ عليه الفريق.
تمرين عملي
تتبّع ميزة حجز الحصص وحلّل أثر تغيير
في تطبيق نادٍ رياضي أربعة متطلبات وست حالات اختبار تجدها أدناه، وبين القوسين متطلب كل اختبار. ابنِ مصفوفة التتبّع، واقرأها أمامياً وعكسياً، واكتب كل فجوة مع الإجراء أو السؤال الذي تستدعيه.
ثم يرفع مالك المنتج طلب التغيير CR-4: ينتهي الإلغاء المجاني قبل الحصة بـ12 ساعة بدلاً من 24. استخدم المصفوفة لتحدد الاختبارات التي تراجعها، والتي تضيفها، وما الذي تسأل عنه.
REQ-1 يحجز العضو حصتين في اليوم كحد أقصى
REQ-2 يُغلق الحجز قبل بدء الحصة بساعة
REQ-3 الإلغاء مجاني حتى 24 ساعة قبل الحصة، وبعدها تُفرض رسوم
REQ-4 الحصة الممتلئة تعرض مكاناً في قائمة الانتظار
TC-01 [REQ-1, REQ-2] حجز حصتين في اليوم نفسه، كل منهما قبل موعدها بـ 3 ساعات
TC-02 [REQ-1] محاولة حجز حصة ثالثة في اليوم نفسه
TC-03 [REQ-2] محاولة الحجز قبل بدء الحصة بـ 30 دقيقة
TC-04 [REQ-3] الإلغاء قبل الحصة بـ 30 ساعة: بلا رسوم
TC-05 [REQ-3] الإلغاء قبل الحصة بساعتين: تُفرض رسوم
TC-06 [لا شيء] صفحة الحصة تعرض صورة المدرّب- ارسم المصفوفة: صف لكل متطلب، وعمود لكل حالة اختبار، وعلامة لكل رابط.
- اقرأ كل صف (أمامياً) وكل عمود (عكسياً)؛ واكتب الفجوات.
- في CR-4، اتبع REQ-3 أمامياً، وتحقق مما تغطيه هذه الاختبارات أيضاً، وصنّف كل اختبار: بلا تغيير، أو للتحديث، أو جديد.
- دوّن ما لا تستطيع المصفوفة إخبارك به، ومن ستسأل.
إظهار الإجابة النموذجية
المصفوفة: REQ-1 ← TC-01 وTC-02؛ REQ-2 ← TC-01 وTC-03؛ REQ-3 ← TC-04 وTC-05؛ REQ-4 ← بلا اختبار. والعمود TC-06 ← بلا متطلب.
الفجوة الأمامية: REQ-4 بلا اختبار. صمّم له اختباراً (عضو ينضم إلى قائمة انتظار حصة ممتلئة ويحصل على المكان حين يلغي أحدهم)، أو سجّل سبب عدم اختباره هنا. الفجوة العكسية: TC-06 لا يُتتبَّع إلى شيء. اسأل مالك المنتج هل هناك متطلب عن صور المدرّبين لم يُكتب أم يُستبعد الاختبار.
أثر CR-4: يقود REQ-3 إلى TC-04 وTC-05، ولا يغطي أيّ منهما شيئاً آخر. والنتيجتان المتوقعتان لا تتغيّران (الإلغاء قبل 30 ساعة ما زال مجانياً، وقبل ساعتين ما زال برسوم)، فراجعهما دون إعادة كتابة. أضف اختباراً يلغي قبل 20 ساعة، وهو مجاني الآن بعد أن كان برسوم، واختبارات حول حد الـ12 ساعة بعد أن يؤكد مالك المنتج هل الإلغاء قبل 12 ساعة بالضبط ما زال مجانياً.
وخارج المصفوفة اسأل: هل يذكر تأكيد الحجز أو رسائل التذكير أو صفحة الشروط «24 ساعة»؟ وهل تبقى الحصص المحجوزة قبل التغيير على القاعدة القديمة؟ ثم نفّذ اختبارات REQ-3 على البناء الجديد وأضف معرّفات الاختبارات الجديدة إلى المصفوفة.
أسئلة شائعة
هل ما زالت الفرق الرشيقة تحتاج إلى مصفوفة تتبّع؟
تحتاج إلى التتبّع، لا بالضرورة إلى جدول منفصل. فربط حالات الاختبار والاختبارات المؤتمتة والعيوب بقصص المستخدم ومعايير قبولها في أدوات الفريق يعطي الإجابات نفسها، وتصبح المصفوفة تقريراً يُستخرج من هذه الروابط. وينبغي أن يتناسب حجمها ومستوى رسميتها مع مخاطر المنتج وأي متطلبات تنظيمية.
ما الفرق بين التتبّع وتغطية الاختبار؟
التتبّع هو مجموعة الروابط بين نواتج العمل. أما تغطية المتطلبات فمقياس يُحسب من هذه الروابط: نسبة المتطلبات التي نُفّذت اختباراتها على بناء معيّن، ونسبة التي نجحت اختباراتها. فبلا تتبّع لا يمكنك حساب تغطية المتطلبات، ومع التتبّع يبقى عليك أن تحكم هل الاختبارات المرتبطة كافية.
ما التتبّع ثنائي الاتجاه؟
روابط يمكن اتباعها في الاتجاهين: من كل متطلب إلى اختباراته (أمامياً)، ومن كل اختبار أو عيب إلى متطلبه (عكسياً). وهو ليس وثيقة منفصلة: فإذا سجّلت كل حالة اختبار المتطلب الذي تغطيه، أجابت الروابط نفسها عن السؤالين.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
- ISO/IEC/IEEE 29119-3:2021 — Software and systems engineering — Software testing — Part 3: Test documentationنماذج ومحتوى وثائق الاختبار — سياسة الاختبار واستراتيجيته وخطته وتقارير الحالة والإنجاز وتقارير الحوادث.
تدرّب بأدوات متقن
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
اشتق سيناريوهات اختبار من المتطلبات الوظيفية مع خريطة للتغطية.
قارن نصّين سطراً بسطر أو كلمةً بكلمة مع إبراز الاختلافات.
ولّد سيناريوهات اختبار الانحدار من وصف التغيير وقائمة الوحدات المتأثرة والمرتبطة.
قارن المتطلبات أو قصة مستخدم بحالات الاختبار الموجودة للعثور على المجالات غير المختبَرة، باستخدام الذكاء الاصطناعي من متقن.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.