المتطلبات الوظيفية وغير الوظيفية
المتطلب الوظيفي (Functional Requirement) يحدد ما يجب أن يفعله النظام: سلوكاً يمكنك تشغيله وملاحظته، مثل: «عندما يقدّم العميل طلباً، يعرض النظام رقم الطلب ويرسل بريداً إلكترونياً للتأكيد». أما المتطلب غير الوظيفي (Non-Functional Requirement) فيحدد مدى جودة أدائه لذلك، وتحت أي ظروف: «تظهر صفحة التأكيد خلال ثانيتين في 95% من الطلبات بينما يُتمّ 500 عميل الشراء في الوقت نفسه».
يوازي هذا التقسيم الاختبار الوظيفي وغير الوظيفي من وحدة أساسيات الاختبار. وتسمّي بعض الفرق المتطلبات غير الوظيفية متطلبات الجودة (Quality Requirements)، أو تختصرها إلى NFR.
لماذا يهم
المتطلبات غير الوظيفية هي الأكثر إغفالاً، أو تُكتب صفةً واحدة: «سريع» أو «آمن» أو «سهل الاستخدام». وقد تفعل الميزة بالضبط ما تقوله متطلباتها الوظيفية ثم تخذل مستخدميها لأنها تستغرق 40 ثانية، أو تعرض لعميل بيانات عميل آخر، أو لا يمكن استخدامها بقارئ الشاشة. وهذه المشكلات تظهر غالباً في وقت متأخر، حين قد يعني إصلاحها تغيير البنية المعمارية.
بالنسبة إلى المختبِر، لا يصلح المتطلب أساساً للاختبار (Test Basis) إلا إذا أمكن أن تُستخرج منه نتيجة متوقعة. وعبارة «يجب أن تكون الصفحة سريعة» لا تعطي أي نتيجة. والحصول على المتطلبات غير الوظيفية مكتوبة بأرقام قبل بدء التطوير هو ما يجعلها قابلة للاختبار.
المتطلبات الوظيفية: ماذا يفعل النظام
يصف المتطلب الوظيفي سلوكاً يستطيع المستخدم أو نظام آخر ملاحظته: ما الذي يدخل، وأي القواعد تنطبق، وما الذي يخرج أو يتغيّر. فإذا أمكنك فحصه بتنفيذ إجراء ومقارنة النتيجة بنتيجة متوقعة، فهو على الأرجح متطلب وظيفي. وعادةً ينتمي كل متطلب وظيفي إلى ميزة أو قصة واحدة. في متجر إلكتروني:
- التحقق من المدخلات: حقل الرمز البريدي لا يقبل إلا صيغ دول التوصيل.
- قواعد العمل: الطلبات بقيمة 300 ريال فأكثر توصيلها مجاني (ويتناول الدرس التالي قواعد العمل).
- سير العمل: ينتقل الطلب من «مدفوع» إلى «تم الشحن» عندما يمسح المستودع الطرد.
- المخرجات والتكامل: رسائل التأكيد، والفواتير، واستدعاء مزوّد الدفع.
- الصلاحيات والأخطاء: لا يرى سجل الطلبات إلا صاحب الحساب، والدفع المرفوض يُبقي السلة كما هي.
جرّبها: المتطلبات ← حالات اختبار جرّبها: المتطلبات ← سيناريوهات اختبار
المتطلبات غير الوظيفية: مدى جودة ما يفعله
المتطلب غير الوظيفي لا يضيف سلوكاً، بل يحدد مستوى الجودة الذي يجب أن يبلغه السلوك. وبمصطلحات ISO/IEC 25010:2023 التي مرّت في درس جودة البرمجيات، تنتمي المتطلبات الوظيفية إلى الملاءمة الوظيفية (Functional Suitability)، وغير الوظيفية إلى الخصائص الثماني الأخرى. وتُدرج بعض الفرق القيود (Constraints) منفصلة، مثل قاعدة بيانات مفروضة أو لائحة تنظيمية.
وكثير من المتطلبات غير الوظيفية يشمل ميزات عديدة: فهدف زمن الاستجابة أو المطابقة لمعيار WCAG ينطبق على كل صفحة، لذا مكانه قائمة مشتركة لمتطلبات الجودة أو «تعريف الإنجاز» (Definition of Done)، لا قصة واحدة. وهي تُفحص بقياس قيمة تحت ظروف محددة، وغالباً باختبارات وأدوات متخصصة؛ وبعضها، مثل التوافر الشهري، لا يُؤكَّد إلا بالمراقبة في بيئة الإنتاج. أمثلة من المتجر نفسه:
- كفاءة الأداء (Performance Efficiency): يجيب البحث خلال 1.5 ثانية عند المئين 95 (95th percentile) مع 200 مستخدم متزامن.
- الأمان (Security): تنتهي الجلسة بعد 15 دقيقة دون نشاط.
- الموثوقية (Reliability): يكون إتمام الشراء متاحاً 99.9% من كل شهر، باستثناء الصيانة المُعلن عنها.
- قابلية التفاعل (Interaction Capability): تطابق صفحات إتمام الشراء معيار WCAG 2.2 بالمستوى AA.
- التوافق (Compatibility)، ويضعه ISO/IEC 25010 تحت المرونة (Flexibility): يعمل المتجر في آخر إصدارين رئيسيين من Chrome وSafari وFirefox وEdge.
المتطلب الوظيفي
ما يجب أن يفعله النظام
- مثال:
- تقديم الطلب يعرض رقم الطلب ويرسل بريداً إلكترونياً للتأكيد
- خاصية ISO/IEC 25010:
- الملاءمة الوظيفية
- النطاق:
- عادةً ميزة أو قصة واحدة
- النتيجة المتوقعة:
- مُخرج أو رسالة أو تغيّر حالة محدد
- كيف يُفحص:
- اختبارات وظيفية: نفّذ إجراءً وقارن النتيجة
المتطلب غير الوظيفي
مدى جودة أدائه لذلك، وتحت أي ظروف
- مثال:
- تظهر صفحة التأكيد خلال ثانيتين في 95% من الطلبات، مع 500 عميل يُتمّون الشراء معاً
- خاصية ISO/IEC 25010:
- الخصائص الثماني الأخرى: كفاءة الأداء والأمان والموثوقية وقابلية التفاعل…
- النطاق:
- كثيراً ما يشمل ميزات عديدة: يُحفظ في قائمة مشتركة أو في «تعريف الإنجاز»
- النتيجة المتوقعة:
- قيمة مَقيسة تُقارن بهدف
- كيف يُفحص:
- اختبارات وأدوات متخصصة؛ وبعضه بالمراقبة في الإنتاج فقط
الحد بينهما ليس حاداً دائماً: قاعدة مثل قفل الحساب تخدم الأمان لكنها تُكتب وتُختبر سلوكاً.
كيف تجعل المتطلب غير الوظيفي قابلاً للقياس
كما في درس الاختبار غير الوظيفي، يحدد المتطلب القابل للقياس مقياساً، وهدفاً له وحدة، والظروف التي ينطبق عليها، وطريقة القياس. وحين يُكتب متطلباً يحمل ثلاثة أشياء أخرى: خاصية ISO/IEC 25010 التي ينتمي إليها، كي يرى الفريق أي جوانب الجودة مغطاة وأيها ما زال ناقصاً؛ ومعرّفاً (ID)، كي تُربط به حالات الاختبار ونتائجها؛ وتوثيقاً لمن قرر الأرقام. وتسمّي بعض مناهج المتطلبات هذا الجزء القابل للقياس من المتطلب معيار المطابقة (Fit Criterion).
الأرقام قرارات عمل: المختبِر يقترح ويسأل، ومالك المنتج يقرر، ويُسجَّل القرار مع المتطلب. وقبل أن يقترح المختبِر رقماً، يتأكد أيضاً من أن بلوغه ممكن أصلاً، كما يبيّن المثال التطبيقي أدناه.
مثال تطبيقي: مسودة بوابة الواجبات المدرسية
تطلب مدرسة بوابة لتسليم الواجبات، ويتسلّم المختبِر هذه المسودة قبل بدء التطوير. حدّد لكل سطر هل هو وظيفي أم غير وظيفي، وهل يمكنك اختباره بصيغته الحالية.
بوابة الواجبات: مسودة المتطلبات
H1 يستطيع الطالب رفع ملف واحد لكل واجب حتى الموعد النهائي.
H2 الصيغ المقبولة PDF وDOCX، بحجم أقصاه 20 MB.
H3 بعد الموعد النهائي يُعطَّل زر «رفع» وتظهر عبارة «انتهى التسليم».
H4 لا يفتح التسليم إلا الطالب ومعلّمو المقرر.
H5 يجب أن يكون الرفع سريعاً.
H6 يجب أن تكون البوابة متاحة في أسابيع الامتحانات.
H7 يجب أن تعمل البوابة على الهواتف.تتمة المثال: الفرز وإعادة الصياغة
المتطلبات من H1 إلى H3 وظيفية: لكل منها إجراء ونتيجة قابلة للملاحظة. أما H4 فيقع على الحد بين النوعين: فهو يحمي الأمان (السرية)، لكنه مكتوب سلوكاً ويُختبر كالمتطلب الوظيفي: افتح تسليم طالب آخر وتوقّع الرفض. وتضعه الفرق تحت هذا التصنيف أو ذاك؛ والمهم أنه قابل للاختبار بصيغته الحالية. أما H5 إلى H7 فغير وظيفية ولا يمكن اختبارها بصيغتها الحالية. ويقترح المختبِر قيماً لتؤكدها المدرسة:
- H5، كفاءة الأداء: عندما يرفع 300 طالب في الوقت نفسه، يُؤكَّد استلام ملف حجمه 20 MB مُرسَل عبر اتصال سرعته 10 Mbit/s خلال 30 ثانية من الضغط على زر «رفع» في 95% من عمليات الرفع. فالنقل وحده يستغرق 16 ثانية على الأقل، لذا لا يمكن أبداً بلوغ هدف أقل من ذلك.
- H6، الموثوقية: من الساعة 06:00 إلى 24:00 في أسابيع الامتحانات تكون البوابة متاحة 99.5% من الوقت، ويُقاس ذلك بفحص خارجي كل دقيقة.
- H7، التوافق (المرونة في ISO/IEC 25010): يعمل الرفع والتنزيل في آخر إصدارين رئيسيين من Chrome على Android وSafari على iOS.
- الناقص: هدف لإمكانية الوصول، ومدة الاحتفاظ بالملفات.
جرّبها: مولّد سيناريوهات الاختبار جرّبها: محلّل فجوات المتطلبات بالذكاء الاصطناعي
أخطاء شائعة
- اختبار ما تصفه قصص المستخدم فقط، وعدم السؤال أبداً عن الأداء أو الأمان أو إمكانية الوصول أو التوافق.
- وضع متطلب ينطبق على كل الصفحات، مثل المطابقة لمعيار WCAG، في قصة واحدة، فيُفحص مرة ثم يُنسى.
- كتابة رقم بلا ظروف: ثانيتان لأي عملية، وتحت أي حمل، وعند أي مئين؟
- اقتراح هدف دون التأكد من إمكانية بلوغه: فرفع ملف حجمه 20 MB عبر اتصال سرعته 10 Mbit/s لا يمكن أن ينتهي في أقل من 16 ثانية، مهما كان الكود.
- اختراع هدف والاختبار مقابله كأنه متفق عليه، بدلاً من اقتراحه على مالك المنتج.
من منظور ضمان الجودة
اطرح الأسئلة غير الوظيفية في جلسات تحسين قائمة العمل (Backlog Refinement) ومراجعة المتطلبات، لا في الأسبوع الذي يسبق الإصدار. ولكل ميزة، مُرّ على خصائص الجودة كقائمة تحقق: هل تنطبق هذه الخاصية؟ وما الهدف؟ وسجّل كل إجابة متطلباً له معرّف، كي تُربط به الاختبارات والنتائج.
خطّط للاختبار غير الوظيفي مبكراً: فاختبار الحمل يحتاج إلى بيئة تشبه بيئة الإنتاج وبيانات واقعية، والتوافر يحتاج إلى مراقبة. وفي تقرير الاختبار اذكر القيمة المَقيسة بجانب الهدف والظروف: «المئين 95 يساوي 1.8 ثانية مقابل هدف 1.5 ثانية عند 200 مستخدم» معلومة يستطيع الفريق التصرف بناءً عليها.
تمرين عملي
صنّف متطلبات تطبيق حجز طاولات
تبني سلسلة مطاعم تطبيقاً لحجز الطاولات. صنّف كل متطلب أدناه وظيفياً أو غير وظيفي، واذكر خاصيته في ISO/IEC 25010، وبيّن أيها يمكنك اختباره بصيغته الحالية. وأعد صياغة متطلب واحد غير قابل للاختبار في صورة مقترح لمالك المنتج. ثم اكتب سؤالين لمالك المنتج عمّا أغفلته القائمة.
B1 يستطيع الضيف حجز طاولة لعدد من 1 إلى 8 أشخاص، قبل 30 يوماً كحد أقصى.
B2 يتلقى المطعم رسالة SMS عن كل حجز جديد.
B3 يجب أن يظهر تأكيد الحجز بسرعة.
B4 يجب أن يكون التطبيق آمناً.
B5 يجب أن يتحمّل التطبيق ذروة المساء في رمضان.- ضع أمام كل متطلب F أو NF مع خاصيته في ISO/IEC 25010.
- اكتب النتيجة المتوقعة التي سيفحصها الاختبار؛ وحيث لا تستطيع، علّم المتطلب بأنه غير قابل للاختبار، وأعد صياغة واحد منها.
- اكتب ما ينقص القائمة على هيئة أسئلة.
إظهار الإجابة النموذجية
B1 وB2 وظيفيان (الملاءمة الوظيفية)، ولكل منهما نتيجة متوقعة يستطيع الاختبار فحصها. B1: يُقبَل حجز 8 أشخاص قبل 30 يوماً، ويُرفض حجز 9 أشخاص أو حجز قبل 31 يوماً. وفيه قيم حدّية تستحق الاختبار: 0 و1 و8 و9 أشخاص، وقبل 30 و31 يوماً. B2: يتلقى المطعم رسالة SMS واحدة بالضبط عن كل حجز جديد.
B3 وB4 وB5 غير وظيفية، ولا يمكن اختبارها بصيغتها الحالية. B3 كفاءة الأداء (السلوك الزمني). وB4 الأمان، وهو واسع إلى حد يلزم معه تقسيمه إلى عدة متطلبات محددة. وB5 كفاءة الأداء (السعة)، لأنه يتعلق بالحمل الذي يجب أن يتحمّله التطبيق؛ ويجب أن تأتي ذروة المساء الفعلية من بيانات العام الماضي.
إعادة صياغة واحدة، وهنا B3: «بعد أن ينقر الضيف زر التأكيد، يظهر التأكيد خلال ثانيتين في 95% من الحجوزات عند 150 حجزاً في الدقيقة». سجّله بمعرّف وبخاصيته، وعلّم القيم بأنها مقترحة حتى يؤكدها مالك المنتج.
أسئلة: ماذا يحدث إذا تعذّر إرسال رسالة SMS؟ ما معيار إمكانية الوصول المطلوب؟
أسئلة شائعة
هل متطلب الأمان وظيفي أم غير وظيفي؟
الأمان خاصية جودة غير وظيفية، لكن كثيراً من احتياجات الأمان تُكتب سلوكاً، مثل قفل الحساب بعد 5 محاولات فاشلة، وتُختبر كالمتطلبات الوظيفية. والتصنيف أقل أهمية من اختبار السلوك والخطر الذي وراءه معاً.
من يقرر الأرقام في المتطلب غير الوظيفي؟
مالك المنتج أو أصحاب المصلحة من جهة العمل، بمدخلات من المعماريين وفريق العمليات وبيانات الاستخدام الحالية. ويطلب المختبِر الأرقام، ويقترح قيماً حين لا توجد، وينبّه إلى الأهداف التي لا يمكن قياسها أو بلوغها.
أين توضع المتطلبات غير الوظيفية في الفريق الرشيق (Agile)؟
المتطلب الخاص بقصة واحدة يدخل في معايير قبولها. أما ما ينطبق على كل القصص، مثل المطابقة لمعيار WCAG، فيوضع عادةً في «تعريف الإنجاز» أو في قائمة مشتركة لمتطلبات الجودة.
أي مما يلي يُعد متطلباً غير وظيفي: إمكانية البحث في محتويات النظام، أم إصدار التقارير وطباعتها، أم سرعة استجابة النظام وأمانه، أم طريقة تنقل المستخدم بين الصفحات؟
سرعة استجابة النظام وأمانه. أما البحث في محتويات النظام وإصدار التقارير وطباعتها والتنقل بين الصفحات فهي أشياء يفعلها النظام، أي متطلبات وظيفية. السرعة والأمان يحددان مدى جودة أداء تلك الوظائف، ويصبحان قابلين للاختبار حين يُكتبان بأرقام، مثل استجابة البحث خلال 2 ثانية في 95% من الطلبات.
ما أمثلة المتطلبات غير الوظيفية للنظام؟
قدرة أداء النظام وسعته (زمن الاستجابة وعدد المستخدمين المتزامنين الذي يتحمله)، والموثوقية وإمكانية استرداد النظام بعد العطل، وسهولة الاستخدام، والتوافق التشغيلي مع الأنظمة الأخرى، والأمان، وقابلية الصيانة والنقل. وليس منها إصدار التقارير المختلفة وطباعتها: فهذه وظيفة يؤديها النظام، أي متطلب وظيفي، والمتطلبات الوظيفية هي التي تحدد ما يجب على النظام القيام به.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISO/IEC 25010:2023 — Systems and software Quality Requirements and Evaluation (SQuaRE) — Product quality modelنموذج جودة المنتج: الملاءمة الوظيفية وكفاءة الأداء والتوافق وقابلية التفاعل والموثوقية والأمان وقابلية الصيانة والمرونة.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
- Web Content Accessibility Guidelines (WCAG) 2.2توصية W3C التي تحدد معايير النجاح القابلة للاختبار لإتاحة محتوى الويب، مرتّبةً تحت أربعة مبادئ وثلاثة مستويات مطابقة (A وAA وAAA).
تدرّب بأدوات متقن
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
اشتق سيناريوهات اختبار من المتطلبات الوظيفية مع خريطة للتغطية.
ولّد سيناريوهات اختبار عالية المستوى تغطي الجوانب الوظيفية والسلبية والأمنية وسهولة الاستخدام والتوافق لأي ميزة.
قِس زمن استجابة نقطة نهاية عبر عدة عيّنات: الحد الأدنى والأقصى والمتوسط والوسيط وp95.
اعثر على المتطلبات المفقودة — معالجة الأخطاء والصلاحيات والظروف الحدّية والاحتياجات غير الوظيفية — باستخدام الذكاء الاصطناعي من متقن.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.