عيوب المتطلبات
عيب المتطلبات (Requirement Defect) عيب في المتطلب نفسه: في قصة مستخدم، أو معيار قبول، أو قاعدة عمل، أو مواصفة. والمتطلبات جزء من أساس الاختبار (Test Basis)، ويذكر منهج ISTQB للمستوى التأسيسي عيوبها، مثل عدم الاتساق والغموض والتناقض والإغفال وعدم الدقة والتكرار، ضمن العيوب التي يكشفها الاختبار الساكن (Static Testing) بسهولة أكبر أو بكلفة أقل من الاختبار الديناميكي. ويتناول هذا الدرس الأنواع الأربعة التي يصادفها المختبِر أكثر من غيرها: المتطلبات الغامضة والناقصة والمتناقضة والمفقودة.
وقد تُظهر جملة واحدة الأنواع الأربعة. فالمتطلب «يمكن للعميل إلغاء الطلب خلال 24 ساعة» غامض (من وقت الطلب أم من وقت الدفع؟) وناقص (ماذا يحدث للمبلغ المدفوع؟). ويتناقض مع قاعدة تمنع إلغاء الطلبات المشحونة، لأن الطلب قد يُشحن خلال مهلة الـ24 ساعة. وإذا لم يغطِّ أي متطلب طلباً شُحن جزء منه، فهذا متطلب مفقود.
لماذا يهم
لا يبقى عيب المتطلب داخل المستند. فالمطور يبني وفق قراءة، والمختبِر يفحص وفق قراءة أخرى، ويظهر الفرق متأخراً، حين يتعيّن تغيير التصميم والشيفرة والاختبارات معاً. وحيث يكون المتطلب مفقوداً، يُحسم السلوك بالمصادفة، وقد يكون العميل أول من يراه.
وعلى المختبِر تقع الكلفة مباشرةً: فحالة الاختبار تحتاج إلى نتيجة متوقعة، والمتطلب المعيب لا يعطي أي نتيجة، أو يعطي نتيجتين. بل قد تنجح اختبارات كُتبت من النص نفسه مع أن السلوك خاطئ، لأن الشيفرة والاختبارات تشتركان في سوء الفهم نفسه. وهذا هو مبدأ ISTQB «الاختبار المبكر يوفّر الوقت والمال» في التطبيق: سؤال في المراجعة يكلّف دقائق، والسؤال نفسه بعد الإصدار يكلّف إصلاحاً وإعادة اختبار.
أربعة أنواع من عيوب المتطلبات
سمِّ النوع حين تطرح الملاحظة، لأن كل نوع يُعالَج بطريقة مختلفة. تذكر قائمة ISTQB عدم الاتساق والتناقض مثالين منفصلين، ويعدّهما هذا الدرس معاً تناقضاً. أما هل المتطلب صحيح أصلاً فموضوع درس التحقق من صلاحية المتطلبات.
- الغامض (Ambiguous): يحتمل النص أكثر من قراءة معقولة، فيستطيع شخصان حريصان أن يبنيا سلوكين مختلفين أو يختبراهما وكلاهما ملتزم بالنص. ومن أسبابه الكلمات المبهمة، والمصطلحات غير المعرَّفة، والوحدة غير المذكورة، والشرط الذي قد ينطبق على عنصر واحد في قائمة أو على عناصرها كلها.
- الناقص (Incomplete): المتطلب موجود ومساره الرئيسي واضح، لكن جزءاً من سلوكه غير مذكور، مثل مسار خطأ أو حدّ أو دور أو ما يحدث عند الرفض أو انتهاء المهلة. تستطيع اختبار المسار السعيد (Happy Path)، لا ما سواه.
- المتناقض (Contradictory): عبارتان لا يمكن أن تصدقا معاً في الموقف نفسه، فكل نتيجة ممكنة تخالف إحداهما. وقد يقع التعارض داخل متطلب، أو بين متطلبين، أو مع قاعدة عمل أو تصميم أو عقد واجهة برمجية (API Contract)، أي الوصف المتفق عليه لطلبات الواجهة واستجاباتها.
- المفقود (Missing): سلوك أو قاعدة يحتاجها المنتج غير مكتوبة في أي مكان، فلا توجد جملة تضع عليها علامة. وبخلاف المتطلب الناقص، لا تقع الفجوة داخل متطلب موجود، بل حيث لا يوجد متطلب أصلاً.
أين يختبئ كل نوع وكيف تبحث عنه
لكل نوع طريقة بحث خاصة به:
- الغموض: حاول أن تكتب نتيجتين متوقعتين مختلفتين تلتزمان كلتاهما بالنص. فإن استطعت، فالعبارة غامضة. وافحص كل رقم: ما وحدته، ومن أين يبدأ العدّ، وهل الحدّ نفسه داخل في النطاق؟
- النقص: اسأل عن كل متطلب من يحق له تنفيذه ومن لا يحق له، وماذا يحدث حين تكون المدخلات غير صالحة، أو يُبلَغ حدّ، أو يُرفض الإجراء، أو يتعطل نظام يعتمد عليه.
- التناقض: قارن المتطلبات التي تمسّ الفاعل نفسه أو البيانات نفسها أو القاعدة نفسها، وقارنها بقواعد العمل والتصاميم وعقد الواجهة البرمجية. وجدول القرار (Decision Table)، كما في درس قواعد العمل، يُظهر التركيبات التي تفرض فيها قاعدتان إجراءين مختلفين.
- المتطلبات المفقودة: تتبّع عملية العمل من بدايتها إلى نهايتها، ودورة حياة كل عنصر، مثل الطلب، من إنشائه مروراً بتعديله وإلغائه وانتهاء صلاحيته؛ فكتابة حالاته وأحداثه تكشف أحداثاً لم يحدّدها أحد. ثم راجع كل دور، وخصائص الجودة في ISO/IEC 25010 مثل الأمان والاعتمادية.
مثال تطبيقي: مواصفة طلبات الإجازة
مسودة مواصفة طلبات الإجازة في بوابة للموارد البشرية مقررة لجلسة تحسين قائمة العمل (Backlog Refinement)، والمختبِر يراجعها قبلها. حاول أن تجد عيباً من كل نوع قبل قراءة الملاحظات.
طلبات الإجازة: بوابة الموارد البشرية، الإصدار 3 (مسودة)
LV-1 يطلب الموظف إجازة باختيار نوع الإجازة وتاريخ البداية وتاريخ النهاية.
LV-2 يجب تقديم طلب الإجازة قبل بدء الإجازة بـ 5 أيام على الأقل.
LV-3 يحصل قادة الفرق والموظفون الذين تزيد خدمتهم على سنتين على 30 يوماً من
الإجازة السنوية في العام. ويحصل باقي الموظفين على 21 يوماً.
LV-4 يوافق مدير الموظف على الطلب أو يرفضه. والطلبات التي تزيد مدتها على 10 أيام
تحتاج أيضاً إلى موافقة الموارد البشرية.
LV-5 يمكن طلب الإجازة المرضية في يوم بدئها.
LV-6 تُخصم أيام الإجازة الموافق عليها من رصيد الموظف.الملاحظات والسؤال الذي يُطرح لكل منها
تذكر كل ملاحظة النوع، والحالة التي تكشفه، وسؤالاً لمالك المتطلب، وهو هنا مالك المنتج في الموارد البشرية. والسؤال الجيد يعرض الإجابات الممكنة بدلاً من أن يسأل «ماذا يعني هذا؟»، فتمكن الإجابة عنه في سطر واحد.
- غامض، LV-3: عبارة «الذين تزيد خدمتهم على سنتين» قد تنطبق على الفئتين أو على الموظفين وحدهم، فقائد الفريق الذي خدم سنة واحدة يحصل على 21 يوماً في قراءة وعلى 30 في الأخرى. اسأل: «هل يحصل قائد فريق خدم سنة واحدة على 21 يوماً أم 30؟»
- ناقص، LV-4: يذكر من يوافق، لكن في الطلب الذي تزيد مدته على 10 أيام لا تتضح إلا النتيجة حين يوافق الطرفان معاً. اسأل: «في طلب مدته 12 يوماً، من يقرر أولاً؟ وإذا وافق المدير ورفضت الموارد البشرية، فما الحالة النهائية، وماذا يحدث إذا لم يردّ أحد؟»
- متناقض، LV-2 وLV-5: الإجازة المرضية في يوم بدئها يرفضها LV-2 ويسمح بها LV-5. اسأل: «هل الإجازة المرضية مستثناة من مهلة الأيام الخمسة في LV-2؟» وفي العادة تُضيَّق إحدى العبارتين، ومالك المتطلب يقرر أيهما.
- مفقود: لا شيء يذكر هل يستطيع الموظف إلغاء طلبه؛ يخصم LV-6 الأيام، لكن لا شيء يعيدها. اسأل: «هل يستطيع الموظف إلغاء طلب معلّق أو موافق عليه، وحتى متى، وهل تُعاد الأيام؟ وإن كان ذلك خارج نطاق الإصدار 3، فهل نوثّقه؟»
- ومما يستحق الطرح أيضاً: هل الأيام الخمسة في LV-2 أيام تقويمية أم أيام عمل؟
| النوع | المثال في المواصفة | السؤال الذي يُطرح | ما الذي يعالجه |
|---|---|---|---|
| غامض | LV-3: هل ينطبق شرط «تزيد خدمتهم على سنتين» على قادة الفرق أيضاً؟ | هل يحصل قائد فريق خدم سنة واحدة على 21 يوماً أم 30؟ | يختار مالك المتطلب معنى واحداً وتصرّح به الصياغة |
| ناقص | LV-4: فيما يزيد على 10 أيام لا تتضح إلا النتيجة حين يوافق المدير والموارد البشرية معاً | وافق المدير على طلب مدته 12 يوماً ورفضته الموارد البشرية: فما الحالة النهائية؟ | تُضاف الفروع الناقصة إلى المتطلب نفسه |
| متناقض | LV-2 وLV-5: الإجازة المرضية في يوم بدئها مرفوضة ومسموح بها في آن واحد | هل الإجازة المرضية مستثناة من مهلة الأيام الخمسة في LV-2؟ | يقرر مالك المتطلب أي العبارتين تُعتمد، وتُضيَّق الأخرى |
| مفقود | لا يوجد متطلب يغطي إلغاء طلب الإجازة | هل يستطيع الموظف إلغاء طلبه، وحتى متى، وهل تُعاد الأيام إلى رصيده؟ | يُكتب متطلب جديد، أو تُسجَّل الفجوة على أنها خارج النطاق |
جرّبها: كاشف غموض المتطلبات بالذكاء الاصطناعي جرّبها: محلّل فجوات المتطلبات بالذكاء الاصطناعي
أخطاء شائعة
- كتابة «LV-3 غير واضح» دون حالة محددة أو قراءات ممكنة؛ فلا يجد مالك المتطلب ما يجيب عنه.
- اختيار قراءة بنفسك والاختبار على أساسها. فيصبح اختيارك متطلباً غير مكتوب؛ اسأل بدلاً من ذلك، وأدخل الإجابة في نص المتطلب.
- مراجعة كل متطلب بمعزل عن غيره، مع أن التناقضات تقع بين العبارات وبين المستندات.
- معاملة كل الملاحظات بالطريقة نفسها. فالغموض يحتاج إلى اختيار معنى، والمتطلب الناقص إلى فروع إضافية، والتناقض إلى قرار بأي العبارتين تُعتمد، والمتطلب المفقود إلى متطلب جديد أو ملاحظة صريحة بأنه خارج النطاق.
- الإبلاغ عن سلوك لاحظته أثناء تنفيذ الاختبار على أنه عيب في الشيفرة وهو يوافق إحدى قراءات متطلب غامض؛ فقد يكون العيب في المتطلب، فاسأل مالكه أولاً.
من منظور ضمان الجودة
ابحث عن عيوب المتطلبات بمجرد وجود النص: في جلسات تحسين قائمة العمل، وفي مراجعات المتطلبات، وفي تحليل الاختبار حين لا تستطيع استخراج شرط اختبار. يقرر مالك المنتج أو محلل الأعمال، وأشرك المطورين أيضاً، فكثيراً ما يلاحظون فجوات تقنية مثل الحدود وحالات الإخفاق.
سجّل كل ملاحظة حيث يعيش المتطلب، تعليقاً على القصة أو سطراً في سجل المراجعة: معرّف المتطلب، والنوع، والحالة، والسؤال، ومن يجيب ومتى. ولا تَعُدّ القصة جاهزة ما دام سؤال مفتوح يعطّل أحد معايير قبولها. وتدخل الإجابة في نص المتطلب، وتُتتبَّع حالات الاختبار إلى ذلك النص لا إلى رسالة في محادثة.
تمرين عملي
اكتشف الأنواع الأربعة في مواصفة حجز الحصص
لدى تطبيق لنادٍ رياضي مسودة المتطلبات أدناه لحجز الحصص الجماعية. اعثر على متطلب غامض واحد على الأقل، وآخر ناقص، وآخر متناقض، وآخر مفقود، واكتب السؤال الذي ستطرحه لكل منها.
GB-1 يستطيع العضو حجز مكان في حصة جماعية قبل موعدها بـ 7 أيام كحد أقصى.
GB-2 للحصة 20 مكاناً كحد أقصى.
GB-3 يستطيع العضو إلغاء الحجز مجاناً حتى وقت قصير قبل الحصة.
GB-4 الأعضاء المميزون وأعضاء العائلة ذوو الاشتراك السنوي يستطيعون الحجز قبل
الحصة بـ 14 يوماً.
GB-5 يُفتح الحجز في الحصة قبل بدئها بـ 7 أيام.
GB-6 عندما يلغي العضو حجزه، يُحرَّر المكان.- ضع علامة على كل جزء من متطلب يحتمل قراءتين.
- اسأل عن كل متطلب: ماذا يحدث حين يُبلَغ حدّ أو يُرفض إجراء؟
- قارن المتطلبات التي تتحدث عن الشيء نفسه، مثل نافذة الحجز.
- تتبّع الحجز والحصة حتى نهايتهما، واكتب الأحداث التي لا يغطيها أي متطلب.
إظهار الإجابة النموذجية
غامض: في GB-4 قد تشمل عبارة «ذوو الاشتراك السنوي» أعضاء العائلة وحدهم أو الأعضاء المميزين أيضاً: «هل يستطيع عضو مميز باشتراك شهري أن يحجز قبل 14 يوماً؟» وفي GB-3 عبارة «وقت قصير»: «قبل الحصة بكم ساعة ينتهي الإلغاء المجاني؟»
ناقص: يتجاهل GB-2 العضو الحادي والعشرين: «حين تمتلئ الحصة، هل يرى العضو رسالة خطأ أم ينضم إلى قائمة انتظار؟» وفي GB-6: «يُحرَّر المكان لمن، وهل يُبلَّغ؟»
متناقض: يسمح GB-4 بالحجز قبل 14 يوماً، لكن GB-5 لا يفتح الحجز إلا قبل 7 أيام: «قبل الحصة بـ10 أيام، هل يستطيع العضو المؤهل أن يحجز؟» ويكرر GB-1 وGB-5 القاعدة نفسها أيضاً، وهذا تكرار.
مفقود: لا شيء يغطي إلغاء النادي للحصة ولا العضو الذي لا يحضر: «حين يلغي النادي حصة، كيف يُبلَّغ الأعضاء، وهل يُعوَّضون بشيء؟ وهل توجد قاعدة لعدم الحضور؟»
أسئلة شائعة
ما الفرق بين المتطلب الناقص والمتطلب المفقود؟
موضع الفجوة. المتطلب الناقص موجود لكنه يُغفل جزءاً من سلوكه، مثل مسار خطأ أو حدّ. أما المتطلب المفقود فغير موجود أصلاً: سلوك يحتاجه المنتج، مثل إلغاء الطلب، غير موصوف في أي مكان. تجد الناقص بمساءلة كل متطلب، وتجد المفقود بمقارنة المتطلبات بعملية العمل ودورة حياة كل عنصر وخصائص الجودة.
إذا خمّن المطور المعنى الصحيح، فهل يبقى الغموض عيباً؟
نعم. العيب في المتطلب، وهو أحد منتجات العمل، سواء سبّب إخفاقاً بعد أم لا. فقد يقرؤه المطور التالي أو المختبِر أو من يصون النظام بالمعنى الآخر، ويبقى أساس الاختبار عاجزاً عن إعطاء نتيجة متوقعة واحدة. وتصحيح الصياغة بعد الاتفاق على المعنى قليل الكلفة.
أين أبلّغ عن عيوب المتطلبات؟
حيث يعمل مالك المتطلب: عادةً تعليقاً أو سؤالاً على قصة المستخدم، أو في سجل مراجعة المتطلبات، أو بنداً في جلسة تحسين قائمة العمل. وبعض الفرق تسجلها أيضاً في نظام تتبع العيوب بنوع مثل «متطلب» لتتمكن من عدّها؛ اتبع إجراءات فريقك.
هل تستطيع أدوات الذكاء الاصطناعي اكتشاف هذه العيوب بدلاً مني؟
تستطيع أداتا «كاشف غموض المتطلبات بالذكاء الاصطناعي» و«محلّل فجوات المتطلبات بالذكاء الاصطناعي» من متقن (تتطلبان تسجيل الدخول ولهما حصة يومية) أن تسردا بسرعة حالات غموض وتناقض وفجوات مرشّحة. لكنهما لا تعرفان مستنداتك الأخرى ولا قراراتك ولا مستخدميك، فتفوتهما تعارضات مع قواعد لم تريانها، وتطرحان فجوات أُجيب عنها في مكان آخر. استخدمهما بعد قراءتك الخاصة، وافحص كل اقتراح قبل أن تطرحه.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
- ISO/IEC 25010:2023 — Systems and software Quality Requirements and Evaluation (SQuaRE) — Product quality modelنموذج جودة المنتج: الملاءمة الوظيفية وكفاءة الأداء والتوافق وقابلية التفاعل والموثوقية والأمان وقابلية الصيانة والمرونة.
تدرّب بأدوات متقن
أنشئ جداول القرار من الشروط والإجراءات، وولّد جميع تركيبات القواعد، واختزل المستحيل منها.
عرّف الحالات والأحداث، ثم ولّد جدول الانتقالات واختبارات الانتقالات الصالحة/غير الصالحة وتغطية 0-switch/1-switch.
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
اكتشف العبارات الغامضة أو المبهمة أو المتناقضة في المتطلبات واحصل على أسئلة توضيحية من الذكاء الاصطناعي من متقن.
اعثر على المتطلبات المفقودة — معالجة الأخطاء والصلاحيات والظروف الحدّية والاحتياجات غير الوظيفية — باستخدام الذكاء الاصطناعي من متقن.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.