استراتيجية الاختبار
تتبنى خطة اختبار نظام حجز قاعات الاجتماعات منهجية اختبار متعددة المستويات لضمان التحقق الشامل من جودة النظام وملاءمته لبيئة العمل الداخلية. يبدأ الاختبار بمستوى الاختبارات الوحدوية (Unit Testing) التي تُنفذ ضمن مشروع App.Tests المخصص لهذا الغرض، حيث يتم اختبار المنطق البرمجي المعزول لكل خدمة على حدة، مع التركيز بشكل خاص على خدمة BookingService للتحقق من صحة خوارزمية منع التداخل الزمني بين الحجوزات، وخدمة RoomService للتأكد من صحة عمليات تغيير حالة القاعة، وخدمة NotificationService للتحقق من آلية توليد رسائل الإشعار. تُنفذ هذه الاختبارات آلياً بالكامل باستخدام إطار عمل xUnit، وتُدمج في خط أنابيب التطوير المستمر (CI) لتشغيلها تلقائياً مع كل عملية دمج للكود، مما يضمن اكتشاف الأخطاء المنطقية في مرحلة مبكرة قبل انتقالها إلى المراحل اللاحقة.
يتبع ذلك مستوى اختبار التكامل (Integration Testing) الذي يهدف إلى التحقق من التفاعل السليم بين طبقات النظام المختلفة، بما في ذلك التفاعل بين المتحكمات (Controllers) في طبقة App.Web وطبقة الخدمات في App.Infrastructure، والتكامل مع قاعدة بيانات SQLite المستخدمة في بيئة الاختبار. يركز هذا المستوى على ضمان أن البيانات تنتقل بشكل صحيح عبر طبقات Entity Framework Core، وأن عمليات الاستعلام عن القاعات المتاحة والحجوزات تُنفذ بكفاءة، مع التحقق من أن قواعد التوثيق المركزي (SSO) تُطبَّق بشكل صحيح عند محاولة الوصول إلى الموارد. تُنفذ هذه الاختبارات يدوياً بواسطة فريق التطوير في بيئة الاختبار المعزولة، مع توثيق النتائج في سجل الاختبارات لضمان التتبع.
يأتي بعد ذلك مستوى اختبار النظام (System Testing) الذي يُنفذ بناءً على سيناريوهات الاستخدام الكاملة المستمدة من وثيقة المتطلبات (BRD) ومتطلبات القبول. في هذا المستوى، يُختبر النظام كوحدة متكاملة في بيئة تشبه بيئة الإنتاج، مع استخدام بيانات تجريبية واقعية تمثل حالات الموظفين ومدير المرافق. يتم تنفيذ الاختبارات الوظيفية (Functional Testing) يدوياً بواسطة فريق الاختبار المخصص، مع التركيز على التحقق من تدفقات العمل الرئيسية مثل إنشاء الحجز، ومنع التداخل، والإلغاء، وإدارة القاعات، وتوليد التقارير الشهرية. كما يُنفذ اختبار الأداء (Performance Testing) باستخدام أدوات توليد الحمل لتقييم استجابة النظام تحت الضغط، مع التأكد من استيفاء متطلبات الأداء NFR-01 وNFR-02 التي تشترط استجابة النظام خلال ثانيتين لعرض القوائم وخمس ثوانٍ لإتمام عمليات الحجز والإلغاء. يُنفذ هذا الاختبار آلياً باستخدام أدوات مثل JMeter لمحاكاة عدد كبير من المستخدمين المتزامنين، وتُحلل النتائج لضمان عدم تجاوز حدود الوقت المحددة.
أخيراً، يُنفذ مستوى اختبار القبول (Acceptance Testing) بواسطة فريق الأعمال ومدير المرافق في بيئة ما قبل الإنتاج (Staging)، حيث يتم التحقق من أن النظام يلبي المتطلبات التجارية (BR-01 إلى BR-08) ومتطلبات القبول المحددة. يركز هذا المستوى على التحقق من تجربة المستخدم، ودقة البيانات المعروضة، والامتثال لمتطلبات الأمان والخصوصية، بما في ذلك تشفير البيانات وفقاً لمعايير هيئة الحكومة الرقمية السعودية، ودعم اللغة العربية واتجاه الكتابة من اليمين إلى اليسار (RTL). تُوثق جميع النتائج في محضر استلام نهائي، ولا يُعتبر النظام جاهزاً للنشر إلا بعد اجتياز جميع الاختبارات الحرجة والحصول على توقيع مدير المرافق والجهة المسؤولة عن التخطيط. تُستخدم أدوات أتمتة الاختبار (Test Automation) لتغطية الاختبارات الوحدوية واختبارات التكامل، بينما تبقى الاختبارات الوظيفية والقبولية يدوية لضمان التقييم الشامل لتجربة المستخدم والامتثال التنظيمي.
حالات الاختبار
- TC-01تسجيل دخول الموظف عبر نظام التوثيق المركزي (SSO) والانتقال إلى شاشة القائمة الرئيسية للتحقق من عرض القاعات المتاحة فقط مع تفاصيل سعتها وتجهيزاتها التقنية، والتأكد من استجابة النظام خلال ثانيتين.
- TC-02اختيار قاعة متاحة وإدخال تاريخ الجلسة ووقت البداية والنهاية لإنشاء حجز جديد، والتحقق من نجاح العملية وتأكيد الحالة في قاعدة البيانات خلال خمس ثوانٍ.
- TC-03محاولة إنشاء حجز جديد يتداخل زمنياً مع حجز قائم مسبقاً على نفس القاعة، والتحقق من رفض النظام العملية وإظهار رسالة خطأ واضحة توضح سبب الرفض دون حدوث خلل في الواجهة.
- TC-04الانتقال إلى شاشة إدارة الحجوزات واختيار حجز مؤكد سابقاً لإلغائه، والتحقق من تحديث حالة الحجز إلى 'ملغي' في قاعدة البيانات وتحرير القاعة للاستخدام الفوري.
- TC-05التحقق من استلام الموظف إشعاراً فورياً عبر البريد الإلكتروني المؤسسي يؤكد نجاح عملية الحجز أو الإلغاء، والتأكد من توثيق إرسال الإشعار في سجل التدقيق.
- TC-06دخول مدير المرافق إلى لوحة التحكم وإضافة قاعة جديدة مع تحديد بياناتها الأساسية (الاسم، السعة، التجهيزات)، والتحقق من ظهورها في قاعدة البيانات بحالة 'متاحة'.
- TC-07تعديل بيانات قاعة حالية (مثل تغيير السعة أو إضافة تجهيزات جديدة)، والتحقق من انعكاس التعديلات فوراً على شاشة عرض القاعات المتاحة للموظفين.
- TC-08إيقاف قاعة مؤقتاً عن الحجز بتغيير حالتها إلى 'موقوفة للصيانة'، والتحقق من عدم ظهور هذه القاعة في قائمة الحجز المتاحة للموظفين.
- TC-09توليد التقرير الشهري لنسب الإشغال، والتحقق من دقة الحساب بناءً على ساعات الحجز الفعلية مقارنة بالساعات المتاحة مع استثناء فترات الصيانة المؤقتة من الحساب.
- TC-10التحقق من تشفير بيانات الموظفين ومواعيد الحجز أثناء التخزين في قاعدة البيانات وأثناء النقل عبر الشبكة باستخدام الخوارزميات المعتمدة من هيئة الحكومة الرقمية السعودية.
- TC-11التبديل بين اللغتين العربية والإنجليزية في الواجهات والإشعارات، والتحقق من دعم اتجاه الكتابة من اليمين إلى اليسار (RTL) بشكل كامل في الواجهة العربية دون تشوه في العرض.
بيئة الاختبار
تُنفذ جميع أنشطة الاختبار في بيئة اختبار مستقلة عن بيئة الإنتاج، وتتم استضافة هذه البيئة على البنية السحابية المعتمدة لدى المؤسسة لضمان محاكاة الظروف التشغيلية الحقيقية. تعتمد بيئة الاختبار على إطار عمل .NET 8 مع استخدام قاعدة بيانات SQLite بدلاً من Microsoft SQL Server، وذلك استناداً إلى البنية التقنية المعتمدة في المشروع لتسهيل إدارة البيانات التجريبية وضمان سرعة الاستجابة أثناء تنفيذ السيناريوهات. تُهيأ قاعدة بيانات الاختبار مسبقاً ببيانات تجريبية (Mock Data) تمثل قاعات الاجتماعات بحالاتها المختلفة (متاحة، موقوفة للصيانة) وحجوزات متعددة التواريخ والأوقات، بما في ذلك حالات التداخل الزمني المصطنعة لاختبار منطق الرفض في TC-03. كما تُجهز حسابات اختبارية لمستخدمين بصلاحيات مختلفة (موظف عادي، مدير مرافق) مرتبطة بنظام التوثيق المركزي (SSO) لاختبار صلاحيات الوصول ومبدأ أقل صلاحيات. لحماية البيانات في بيئة الاختبار، تُطبق نفس آليات التشفير المعتمدة في بيئة الإنتاج، حيث يتم تشفير بيانات الموظفين ومواعيد الحجز أثناء التخزين وأثناء النقل باستخدام الخوارزميات المعتمدة من هيئة الحكومة الرقمية السعودية. لا تُستخدم أي بيانات إنتاجية حقيقية في بيئة الاختبار، بل تُستبدل ببيانات اصطناعية تحاكي البنية دون الكشف عن معلومات حساسة، مع ضمان عزل بيئة الاختبار عن شبكات الإنتاج الداخلية لمنع أي تسرب للبيانات أو تأثير على العمليات التشغيلية الجارية. تُسجَّل جميع محاولات الوصول إلى بيانات الاختبار في سجل التدقيق لضمان تتبع أي استخدام غير مصرح به، وتُطبق سياسات النسخ الاحتياطي على قاعدة بيانات الاختبار بشكل دوري لضمان استمرارية الاختبارات في حال حدوث أعطال تقنية.
معايير إنهاء الاختبار
تُعد معايير الخروج المرجع الحاسم لقياس جاهزية نظام حجز قاعات الاجتماعات للانتقال من مرحلة الاختبار إلى بيئة التشغيل الفعلي، ولا يُسمح بإطلاق النظام إلا بعد تحقق جميع الشروط التالية بشكل قاطع. أولاً، يجب أن تسجّل جميع حالات الاختبار الإلزامية (must) الموثقة في سجل الاختبارات نتائج نجاح بنسبة 100%، مع ضمان عدم وجود أي أخطاء حرجة (Critical) أو جسيمة (Major) مفتوحة أو غير معالجة في النظام. ثانياً، يجب أن يثبت النظام قدرته على منع التداخلات الزمنية بشكل مطلق، حيث يُشترط أن ترفض جميع محاولات إنشاء الحجوزات المتقاطعة مع حجوزات قائمة على نفس القاعة، مع إظهار رسائل خطأ واضحة ومفهومة للمستخدم دون أي انهيار في الواجهة أو فقدان للبيانات. ثالثاً، يجب أن يستوفي النظام المتطلبات غير الوظيفية للأداء، وذلك بتأكيد استجابة شاشة عرض القاعات خلال ثانيتين، وإتمام عمليات إنشاء الحجز والإلغاء بما فيها إرسال الإشعارات خلال خمس ثوانٍ كحد أقصى تحت الحمل الطبيعي المتوقع. رابعاً، يجب التحقق من اكتمال دورة حياة الحجز والإشعارات، بحيث يتلقى الموظف إشعاراً فورياً عبر البريد الإلكتروني المؤسسي عند تأكيد الحجز أو إلغائه، مع توثيق هذه العمليات في سجل التدقيق بشكل دقيق. خامساً، يجب أن تثبت صلاحيات مدير المرافق فعاليتها الكاملة، بما في ذلك إضافة القاعات وتعديلها وإيقافها للصيانة، مع التأكد من عدم ظهور القاعات الموقوفة في واجهة الموظف، ودقة التقارير الشهرية في استثناء فترات الصيانة من حساب نسب الإشغال. سادساً، يجب أن ينجح النظام في التكامل مع نظام التوثيق المركزي (SSO) دون أي أعطال، مع ضمان تشفير البيانات أثناء النقل والتخزين وفقاً لمعايير هيئة الحكومة الرقمية السعودية، والتحقق من التوافق الكامل مع دعم اللغة العربية واتجاه الكتابة من اليمين إلى اليسار. أخيراً، يُشترط الحصول على موافقة خطية وتوقيع من مدير المرافق والجهة المسؤولة عن التخطيط على محضر استلام نهائي يثبت خلو النظام من العيوب الجوهرية واستيفاءه لجميع معايير القبول المعتمدة في وثيقة المتطلبات.