لكتابة اختبار يستطيع زميلك إعادته، أعطه بيانات البداية والخطوات وما يجب أن يظهر أو يُحفظ بعدها. ثم سجّل ما حدث فعلاً عند التشغيل. سنكتب حالات لحجز جهاز، تشمل التعارض وحدود الفترة والصلاحيات، ونشغّل مثال Python لفحص جزء واحد من المنطق؛ نجاحه لا يعني أن النظام كله اجتاز الاختبار.

ما الذي تسجله في الحالة؟

استخدم معرفاً للحالة، ومعرف المتطلب المرتبط بها، والشروط السابقة، وبيانات الاختبار، والخطوات، والنتيجة المتوقعة. وعند التشغيل أضف النتيجة الفعلية والحالة والتاريخ ونسخة التطبيق والبيئة. إذا كان الفشل ينتج عيباً، اربطه بملاحظة يمكن إعادة تنفيذها بدلاً من صورة مقتطعة بلا سياق.

لنفترض متطلباً يمنع تعارض حجزين للجهاز نفسه، ويستخدم فترات نصف مفتوحة. جهّز جهازاً فعالاً وحجزاً من الدقيقة 540 إلى 600 في يوم تجريبي؛ هذه الأرقام تمثل 09:00 و10:00 في المثال. لا تخلط بين هذا التمثيل التعليمي وتخزين توقيت متعدد المناطق في تطبيق فعلي.

حالات تكشف أكثر من مسار النجاح

المعرفالمدخل أو الفعلالمتوقعالفعلية عند التخطيط
T-01طلب 600–660 للجهاز نفسهلا تعارض مع الحجز السابقلم تنفذ على نظام كامل
T-02طلب 570–630رفض التداخل وعدم إنشاء حجزلم تنفذ على نظام كامل
T-03بداية ونهاية متساويتانرفض فترة غير صالحةلم تنفذ على نظام كامل
T-04حساب آخر يلغي حجزاً لا يملكهرفض العملية وبقاء الحجزلم تنفذ على نظام كامل
T-05طلبان متزامنان للفترة نفسهالا يتأكد أكثر من حجز واحدتحتاج تجربة تكامل وتزامن

اختبر أيضاً أن الرفض لا يترك أثراً جزئياً، مثل إشعار أو سجل ناجح لحجز لم يُحفظ. وراجع إعادة الإرسال بعد انقطاع الشبكة: قد يكون الخادم حفظ العملية بينما لم تصل الاستجابة للعميل. هذه حالة مختلفة عن فشل الحفظ، وتحتاج سياسة تكرار تتفق مع عقد التطبيق.

اختبر قاعدة تداخل الفترات باستخدام Python

الدالة التالية لا تنفذ الحجز؛ تختبر قاعدة التداخل لفترات عددية فقط. يحافظ فصل هذا المنطق على اختبار واضح، مع الحاجة إلى اختبارات إضافية لتفسير التواريخ والمعاملات والصلاحيات. انسخ الملف باسم test_overlap.py في مساحة تجربة، ثم شغّل python -m unittest -v test_overlap.py.

import unittest

def overlaps(start, end, old_start, old_end):
    if end <= start or old_end <= old_start:
        raise ValueError("Invalid interval")
    return start < old_end and end > old_start

class OverlapTests(unittest.TestCase):
    def test_intersection(self):
        self.assertTrue(overlaps(570, 630, 540, 600))

    def test_adjacent(self):
        self.assertFalse(overlaps(600, 660, 540, 600))

    def test_separate(self):
        self.assertFalse(overlaps(660, 720, 540, 600))

    def test_empty_period(self):
        with self.assertRaises(ValueError):
            overlaps(600, 600, 540, 600)

if __name__ == "__main__":
    unittest.main()

نُفذت الاختبارات الأربعة محلياً على Python 3.12 ونجحت. ما يثبته ذلك هو سلوك هذه الدالة للمدخلات المحددة، لا نجاح حالات جدول النظام كله. لم يُختبر بهذا المقطع خادم أو قاعدة بيانات أو حسابات مستخدمين. توضح وثائق unittest أدوات التأكيد وتشغيل الحالات وتجميعها.

ماذا يثبت اختبار الوحدة والتكامل والواجهة؟

اختبار الوحدة يفحص منطقاً محدوداً، واختبار التكامل يفحص تعاونه مع التخزين أو خدمة أخرى، واختبار الواجهة يفحص ما يراه المستخدم. تحتاج حالة الصلاحيات إلى إرسال طلب للخادم من حساب غير مخول، حتى إن كان الزر مخفياً. وتحتاج حالة التزامن إلى طلبين فعليين وظرف تنفيذ موصوف؛ تنفيذ الدالة مرتين بالتتابع لا يثبتها.

لا تكرر الفحص نفسه في عشرات الاختبارات إن لم يضف مخاطرة جديدة. اختر الحدود وحالات الفشل التي قد تغير القرار: مورد غير موجود، وبيانات ناقصة، ووقت غير صالح، وفشل تبعية. اشرح لماذا اخترتها، واربطها بالمتطلبات والمخاطر، لا بعدد اختبارات تريد الوصول إليه.

سجّل ما حدث بعد التنفيذ

في النتيجة الفعلية، اكتب الرمز أو الحالة والبيانات التي ظهرت، وأرفق دليلاً محدوداً عند الحاجة. إذا لم تعمل البيئة، سجّل «محجوب بسبب الإعداد» بدلاً من «فشل المتطلب» إن لم تصل إليه أصلاً. وعند إصلاح عيب، أعد الحالة الأصلية وحالة مجاورة تتأكد أنها لم تتأثر.

اربط كل حالة بـالمتطلب الذي تختبره، وسجّل طريقة التحقق والنتيجة؛ توضح مصفوفة NASA للتحقق هذه العلاقة. وإذا احتجت تشخيص عطل أو اختبار المشروع، أرسل حالة الفشل وخطواتها وبيانات التجربة بعد تنقيحها، كي يمكن إعادة المشكلة والتحقق من إصلاحها.

المصادر

مراجعة المصادر: .

اختبار المثال وحدوده

نُفذت اختبارات unittest الأربعة لدالة التداخل على Python 3.12؛ حالات الخادم والتزامن والصلاحيات في الجدول خطة تحقق غير منفذة كنظام كامل.

مقالات ذات صلة

الخدمة المرتبطة: تشخيص الأخطاء وإصلاح المشاريع القائمة.

أرسل متطلبات مشروعك