قواعد العمل
قاعدة العمل (Business Rule) عبارة تحدّد طريقة عمل المؤسسة أو تقيّدها: سياسة أو لائحة تنظيمية أو بند في عقد أو طريقة حساب. فعبارة «يجوز للعميل إرجاع المنتج خلال 14 يوماً من التسليم، ما لم يكن بطاقة هدية» قاعدة عمل. وهي قائمة حتى من دون أي برنامج، وكل قناة تتعامل مع الإرجاع يجب أن تطبّقها بالطريقة نفسها.
ذكر الدرس السابق قواعد العمل ضمن ما تصفه المتطلبات الوظيفية. وبدقة أكبر، القاعدة ليست في ذاتها متطلباً برمجياً، لا وظيفياً ولا غير وظيفي، بل مصدر للمتطلبات: فالمتطلبات الوظيفية هي سلوك النظام الذي يطبّقها. وقاعدة الإرجاع وحدها تؤدي إلى عدة متطلبات: إخفاء زر الإرجاع بعد اليوم 14، ورفض الطلبات المتأخرة في الواجهة البرمجية (API)، وإخبار العميل بالسبب. وكل قاعدة بالنسبة إلى المختبِر مجموعة جاهزة من الشروط والنتائج المتوقعة.
لماذا يهم
تحمل القواعد المال والالتزامات القانونية وثقة العملاء. فالتنفيذ الخاطئ لقاعدة يحتسب سعراً خاطئاً، أو يمنح خصماً لعميل لا يستحقه، أو يقبل إرجاعاً تمنعه السياسة، والشاشة مع ذلك تعمل: لا تظهر النتيجة الخاطئة إلا عند تركيبة معيّنة من الشروط.
والقواعد كذلك مبعثرة ومتغيّرة. وحين لا يعرف أحد أين كُتبت القاعدة أو من يملكها، يختلف الفريق بعد الإصدار حول ما كان على النظام أن يفعله. وإيجاد كل قاعدة، وكتابتها بصيغة قابلة للاختبار، وتغطية تركيباتها، يمنع هذا الخلاف والعيوب معاً.
أنواع قواعد العمل
من التصنيفات الشائعة تصنيف كارل ويغرز وجوي بيتي في كتاب Software Requirements، الذي يقسم القواعد إلى حقائق وقيود ومُمكِّنات إجراء واستدلالات وحسابات. فالحقائق (Facts) عبارات صحيحة عن العمل، ومُمكِّنات الإجراء (Action Enablers) تُطلق إجراءً عند تحقق شروط؛ أما الأنواع الثلاثة الأخرى فتحدّد معظم تصميم الاختبار.
- القيد (Constraint): يحدّ مما يمكن أن يحدث. «لا يمكن إلغاء الطلب بعد شحنه». جرّب الإجراء الممنوع وتحقق من رفضه برسالة واضحة، في الواجهة البرمجية (API) وليس في واجهة المستخدم فقط.
- الحساب (Computation): معادلة تُنتج قيمة. «غرامة التأخير: 2% من المبلغ المتأخر سداده عن كل شهر كامل، بحد أقصى 10%». احسب القيم المتوقعة بنفسك من القاعدة، بما في ذلك التقريب والحد الأقصى.
- الاستدلال (Inference): يستنتج حقيقة جديدة من شروط. «العميل الذي استلم 5 طلبات أو أكثر في آخر 12 شهراً عضو ذهبي (Gold)». تحقق من منح الحالة ومن زوالها حين تتوقف الشروط عن التحقق؛ فقواعد أخرى، مثل قاعدة الشحن المجاني أدناه، تعتمد عليها.
أين تختبئ قواعد العمل
قصة المستخدم تسمّي الميزة، لكن القاعدة التي وراءها مكتوبة غالباً في مكان آخر، أو غير مكتوبة أصلاً. وحين تجد قاعدة، سجّلها مرة واحدة بمعرّف ومصدر ومالك وتاريخ سريان، كما في مدخل الفهرس أدناه، واربط بها حالات الاختبار: فيدلّك أي تغيير في السياسة على الاختبارات التي يجب تحديثها. ومن أماكن الاختباء المعتادة:
- الوثائق وجداول البيانات: الشروط والأحكام، وسياسات الإرجاع، وعقود الشركاء، وجداول المالية والتسعير التي كثيراً ما تكون الموطن الحقيقي لقاعدة حسابية.
- أذهان خبراء المجال وموظفي الدعم: «لا نشحن البطاريات جواً أبداً».
- النظام القائم: شروط مكتوبة مباشرةً في الشيفرة، وجداول إعدادات، وقيود قاعدة البيانات ومشغّلاتها (Triggers)، أي الفحوص والمنطق الذي تطبّقه قاعدة البيانات تلقائياً عند تغيّر البيانات، ومهام مجدولة، ويسهل أن تضيع كلها عند استبدال نظام قديم.
- الكلمات الغامضة في المتطلبات: «مؤهَّل»، «صالح»، «عميل دائم»، «ما لم»، «افتراضياً». كل كلمة منها تشير إلى قاعدة لم يكتبها أحد.
ID: BR-03
Type: قيد (Constraint)
Statement: يجوز للعميل إرجاع المنتج خلال 14 يوماً من التسليم،
ما لم يكن المنتج بطاقة هدية.
Source: سياسة الإرجاع، الإصدار 4، القسم 2
Owner: رئيس عمليات العملاء
Effective: 2026-01-01
Applies to: صفحة الطلب، Returns API، لوحة الدعم
Tests: TC-201, TC-202, TC-203, TC-204اختبار القاعدة بجدول القرار
في القواعد ذات الشروط المتعددة تضيع التركيبات بسهولة. ويصف منهج ISTQB للمستوى التأسيسي جداول القرار (Decision Tables) بأنها طريقة فعّالة لتدوين هذا المنطق المعقد، ويذكر قواعد العمل مثالاً عليه. فالشروط والإجراءات تشكّل الصفوف، وكل عمود قاعدة قرار (Decision Rule): تركيبة واحدة من قيم الشروط مع إجراءاتها. وتُكتب القيم T (صحيح) أو F (خاطئ)، وتدل X على إجراء يجب أن يحدث، والخانة الفارغة على إجراء يجب ألا يحدث.
أعد صياغة القاعدة أولاً لتظهر أجزاؤها: تصبح BR-03 شرطين يربطهما AND، وإجراءً عند تحققهما، وإجراءً آخر في غير ذلك.
BR-03 بصيغة IF وTHEN وELSE: شرطاها يصبحان صفوف الشروط في جدول القرار، ونتيجتاها تصبحان صفوف الإجراءات.قاعدة الإرجاع BR-03 بعد إعادة الصياغة
الجزء 1:BR-03 IF
- 2–3الشروط: صفوف الشروط
- 4–5النتائج: صفوف الإجراءات
- 1معرّف القاعدةيربط القاعدة بوثيقة مصدرها وبكل حالة اختبار تغطيها.
- 2الشرط الأولمن عبارة «خلال 14 يوماً» في السياسة. اسأل كيف تُحسب الأيام ومن أي لحظة في التسليم.
- 3الشرط الثاني: الاستثناءعبارة «ما لم» في السياسة تصبح
AND NOT. - 4الإجراء عند تحقق الشرطينيُقبل الإرجاع.
- 5الإجراء في غير ذلكيسهل أن يغيب عن المتطلب: أي رسالة يراها العميل، وهل تذكر السبب؟
- اكتب الشروط والإجراءات.
- اكتب كل تركيبة من قيم الشروط في عمود: شرطان من نوع صحيح/خاطئ يعطيان 4 أعمدة، وثلاثة شروط تعطي 8. واتبع نمطاً ثابتاً يتغيّر فيه الصف الأول أبطأ من غيره (
T T T T F F F F، ثمT T F F T T F F، ثمT F T F T F T F)، حتى لا تفوتك تركيبة ولا تتكرر. - املأ الإجراءات المتوقعة لكل عمود من نص القاعدة، لا من سلوك النظام وهو يعمل.
- العمود الذي لا تستطيع ملأه فجوة أو تناقض: اسأل مالك القاعدة قبل أن يبرمجه أحد.
- اكتب حالة اختبار واحدة على الأقل لكل عمود ممكن، أي عمود يمكن أن تحدث تركيبته فعلاً؛ فهذه الأعمدة بمصطلحات ISTQB هي عناصر التغطية (Coverage Items).
النسخة النصية
BR-03 IF days_since_delivery <= 14
AND NOT item.is_gift_card
THEN return.accepted
ELSE return.refusedمثال تطبيقي: قاعدة الشحن المجاني
كتب مالك المنتج: «الأعضاء الذهبيون يحصلون دائماً على شحن مجاني. وبقية العملاء يحصلون عليه للطلبات بقيمة 200.00 ريال فأكثر، ويدفعون الرسوم العادية لما دون ذلك. والمنتجات كبيرة الحجم لا تُشحن مجاناً أبداً». هذا يعطي ثلاثة شروط (عضو ذهبي، وإجمالي لا يقل عن 200.00 ريال، ومنتج كبير الحجم في الطلب) وإجراءين (شحن مجاني، ورسوم الشحن العادية).
| عمود جدول القرار | عضو ذهبي | إجمالي 200.00 ريال فأكثر | منتج كبير الحجم في الطلب | الشحن المتوقع |
|---|---|---|---|---|
| العمود 1 | T | T | T | الرسوم العاديةبقرار من مالك المنتج |
| العمود 2 | T | T | F | شحن مجاني |
| العمود 3 | T | F | T | الرسوم العاديةبقرار من مالك المنتج |
| العمود 4 | T | F | F | شحن مجاني |
| العمود 5 | F | T | T | الرسوم العاديةبقرار من مالك المنتج |
| العمود 6 | F | T | F | شحن مجاني |
| العمود 7 | F | F | T | الرسوم العادية |
| العمود 8 | F | F | F | الرسوم العادية |
- شحن مجاني
- هنا جعلت عبارةٌ في الصياغة الأصلية الشحن مجانياً وقالت أخرى «ليس مجانياً أبداً»؛ فحسم مالك المنتج الأمر
كل صف هنا عمود واحد من جدول القرار في النسخة النصية. T: الشرط متحقق؛ F: غير متحقق.
تكشف الأعمدة الثمانية تناقضاً. ففي العمودين 1 و3 يطلب عضو ذهبي منتجاً كبير الحجم، ولا يمكن أن يصحّ «مجاني دائماً» و«ليس مجانياً أبداً» معاً. وفي العمود 5 يقدّم عميل ليس عضواً ذهبياً طلباً لا يقل عن 200.00 ريال وفيه منتج كبير الحجم، فيقع التعارض نفسه بين العبارتين الثانية والثالثة. فيعرض المختبِر الجدول على مالك المنتج، فيقرر أن المنتجات كبيرة الحجم تدفع الرسوم العادية دائماً، وتُضاف الإجابة إلى المتطلب. بعدها تغطي حالة اختبار لكل عمود القاعدة كاملة:
- العمودان 2 و4: عضو ذهبي بلا منتجات كبيرة الحجم، بإجمالي 250.00 ثم 80.00 ريال: شحن مجاني.
- العمودان 6 و8: عميل ليس عضواً ذهبياً، بلا منتجات كبيرة الحجم، بإجمالي 200.00 ريال بالضبط: شحن مجاني؛ وبإجمالي 199.99 ريال: رسوم عادية. واختبار الحدّ نفسه يكشف كتابة
>بدلاً من>=. - الأعمدة 1 و3 و5 و7: الطلبات الأربعة نفسها بعد إضافة منتج كبير الحجم (عضو ذهبي بإجمالي 250.00 ثم 80.00 ريال، وعميل ليس عضواً ذهبياً بإجمالي 200.00 ثم 199.99 ريال): رسوم عادية في كل مرة. والأعمدة 1 و3 و5 تختبر قرار مالك المنتج الجديد.
النسخة النصية
1 2 3 4 5 6 7 8
Conditions
Gold member T T T T F F F F
Order total >= 200.00 SAR T T F F T T F F
Oversized item in order T F T F T F T F
Actions
Free shipping X X X
Standard fee X X X X Xأخطاء شائعة
- اختبار التركيبة الواردة في مثال القصة وحدها، دون تركيبات الشروط الأخرى.
- التحقق من القيد في واجهة المستخدم فقط: إخفاء الزر لا يثبت شيئاً إن كانت الواجهة البرمجية ما زالت تقبل الطلب.
- أخذ النتائج المتوقعة من النظام أو من جدول بيانات المطوّر بدلاً من حسابها من نص القاعدة.
- قبول كلمات غامضة مثل «مؤهَّل» أو «عميل دائم» دون السؤال عن القاعدة التي تعرّفها.
- نسيان نتيجة «في غير ذلك»: ما الذي يراه العميل أو يدفعه أو يُبلَّغ به حين لا تتحقق الشروط.
- عدم تسجيل مصدر القاعدة ومالكها وتاريخ سريانها، فلا يعرف أحد أيّ حالات الاختبار أصبحت قديمة بعد تغيير السياسة.
من منظور ضمان الجودة
تظهر قواعد العمل أولاً في التنقيح (Refinement) ومراجعة المتطلبات. فكل كلمة شرطية في القصة دعوة لتسأل: ما القاعدة بالضبط، وأين كُتبت، ومن يقرر تغييرها؟ ورسم جدول قرار أثناء الاجتماع يكشف بسرعة تركيبات لم يفكر فيها أحد. سجّل الإجابات في المتطلب أو في فهرس القواعد، لا في محادثة جانبية.
وفي القواعد الحسابية اطلب من مالك القاعدة أمثلة محسوبة، كفواتير حسبها فريق المالية: فهي مرجع اختبار (Test Oracle) أفضل من قراءتك أنت للمعادلة. وتقرير الخطأ في قاعدة يذكر القاعدة، وتركيبة الشروط، والنتيجة المتوقعة ومصدرها، والنتيجة الفعلية.
تمرين عملي
صنّف قاعدة عرض ترويجي وابنِ جدول قرارها
يحتوي موجز التسويق أدناه، لتطبيق توصيل طعام، على خمس عبارات. صنّف كل عبارة: قيد أو حساب أو استدلال، ثم ابنِ جدول قرار للخصم واستخرج حالات الاختبار، باستخدام مجموع طعام قدره 100.00 ريال ورسوم توصيل قدرها 15.00 ريال.
موجز العرض: «عرض الترحيب والطلاب»
1. يُعدّ العميل «جديداً» حتى يُسلَّم أول طلب له.
2. يحصل العملاء الجدد على خصم 20% من مجموع الطعام.
3. يحصل أصحاب حسابات الطلاب الموثّقة على خصم 10% من مجموع الطعام.
4. لا تُجمع الخصومات: إذا انطبق الخصمان، يُمنح الأكبر فقط.
5. لا يُخصم من رسوم التوصيل أبداً.- صنّف العبارات من 1 إلى 5.
- اختر شروط قرار الخصم وإجراءاته.
- املأ خصم كل عمود والمبلغ الذي يدفعه العميل.
- اكتب حالة اختبار لكل عمود، وقائمة بأسئلتك لمالك القاعدة.
إظهار الإجابة النموذجية
الأنواع: العبارة 1 استدلال (تستنتج صفة «جديد» من سجل الطلبات)؛ و2 و3 حسابات (كل منهما تُنتج مبلغاً هو الخصم)؛ و4 و5 قيود (تقيّد طريقة تطبيق الخصومات).
الشروط: عميل جديد، وطالب موثّق. الإجراءات: خصم 20%، وخصم 10%، ولا خصم. العمود 1 (T، T): خصم 20% لأن العبارة 4 تمنح الخصم الأكبر فقط؛ والعمود 2 (T، F): خصم 20%؛ والعمود 3 (F، T): خصم 10%؛ والعمود 4 (F، F): لا خصم.
حالات الاختبار، وفي كل منها مجموع طعام 100.00 ريال ورسوم توصيل 15.00 ريال: عميل جديد لديه حساب طالب موثّق يدفع 95.00 ريال (80.00 + 15.00)، العمود 1؛ وعميل جديد بلا هذا الحساب يدفع 95.00 ريال أيضاً، العمود 2؛ وطالب موثّق لم يعد جديداً يدفع 105.00 ريال، العمود 3؛ وأي عميل آخر يدفع 115.00 ريال، العمود 4. وتبقى رسوم التوصيل 15.00 ريال في كل الحالات.
أسئلة: إذا أُلغي الطلب الأول، هل يبقى العميل جديداً؟ هل يحصل طلبان قُدّما قبل التسليم الأول كلاهما على خصم 20%؟ هل يُطبَّق الخصم قبل ضريبة القيمة المضافة أم بعدها، وكيف يُقرَّب؟
أسئلة شائعة
هل قاعدة العمل هي نفسها المتطلب؟
لا. قاعدة العمل موجودة في المؤسسة سواء نفّذها برنامج أم لا، أما المتطلبات فتصف ما يجب أن يفعله نظام بعينه. والقاعدة الواحدة تؤدي عادةً إلى عدة متطلبات وظيفية، وقد ينفّذ المتطلب الواحد عدة قواعد. وبعض الفرق تكتب القواعد مباشرةً في صورة معايير قبول، وهذا مقبول ما دامت كل قاعدة مسجّلة مرة واحدة ومربوطة بالقصص التي تستخدمها.
لماذا تُسمّى أعمدة جدول القرار «قواعد»؟
في مصطلحات جداول القرار كل عمود قاعدة قرار: تركيبة واحدة من قيم الشروط والإجراءات التي تتبعها. وقاعدة العمل الواحدة ذات الشروط الثلاثة من نوع صحيح/خاطئ تنتج حتى 8 أعمدة من هذا النوع، فالكلمتان تعنيان شيئين مختلفين. قل «عمود» حين تحتاج إلى تجنّب اللبس.
ماذا لو كانت شروط القاعدة أكثر من أن يتسع لها جدول؟
يتضاعف عدد الأعمدة مع كل شرط من نوع صحيح/خاطئ: 10 شروط تعطي 1,024 عموداً. قسّم القاعدة إلى قواعد أصغر، واحذف التركيبات التي لا يمكن أن تحدث، وادمج الأعمدة التي لا يغيّر فيها شرطٌ ما النتيجة. ويتناول درس اختبار جداول القرار هذه الأساليب؛ والخطوة الأولى المهمة أن ترى كل التركيبات قبل أن تختار منها.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
تدرّب بأدوات متقن
أنشئ جداول القرار من الشروط والإجراءات، وولّد جميع تركيبات القواعد، واختزل المستحيل منها.
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
ولّد حالات اختبار للتحقق من حقول النماذج: الإلزامية والصيغة والطول والنطاق والنمط والقواعد المشتركة بين الحقول.
حساب النسب المئوية ونسبة التغيّر والزيادة/النقصان وكم تمثّل X من Y بالنسبة المئوية.
أضف أو اطرح أياماً أو أسابيع أو أشهراً أو سنوات أو ساعات أو دقائق من تاريخ.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.