هذا نص مترجم آليًا وقد يحتوي على أخطاء!
هنا يجب عليك تحديد خطأ واحد عبر اختبار، ومقارنة النتيجة المتوقعة بالنتيجة الفعلية واختيار الإجراء التالي. يمكن استخدام هذه الطريقة على برنامج أو حاوية (container) أو خدمة شبكة. تحتاج إلى إجراء معروف للمستخدم كان من المفترض أن يعمل، والوصول للتحقيق في الحل المعني.
ابدأ بالسبعة خطوات و«اختبار المقارنة بين المتوقع والفعل»، واستخدمهما في المهمة 1. ترتيب الشبكة هو دعم عندما يتعلق الخطأ بالشبكات. جدول Linux/Proxmox مثال واحد، وليس أوامر يجب تنفيذها لجميع الأعطال. الاختبار الذاتي تمارين اختيارية.
إذا كنت ترغب في رؤية تطبيق الطريقة على خلل محدد، اتبع استكشاف أخطاء نموذجي لتطبيق . هناك تُبرر الاختبار التالي قبل فتح الاقتراح الجوابي.
الخطوات السبع
- ارسم خريطة للظروف. ماذا حدث، ومتى بدأ ذلك؟
- أعد إنتاج الخطأ عندما يكون من الآمن فعله مرة أخرى.
- حدد موقع ومجال مصادر الأخطاء المحتملة - أي طبقة أو مكوّن قد يكون السبب؟
- اجمع المعلومات - سجلات الأحداث، رسائل الأخطاء، نتائج الأوامر.
- حدّد الحلول الممكنة بناءً على ما تعرفه الآن.
- اختبر حلاً واحدًا أو فرضية واحدة في كل مرة. إذا قمت بتغيير عدة أشياء في نفس الوقت، فلن تعلم ما الذي حل المشكلة فعلياً.
- وثّق الخطأ والحل، بحيث تستطيع أنت (أو شخص آخر) التعرف عليه المرة القادمة.
طريقة التقسيم إلى نصفين
يمكن لاختبار في منتصف السلسلة تحديد نطاق العمل اللاحق. إذا كانت التطبيق تستجيب مباشرةً، لكن ليس عبر الوكيل (proxy)، فإنك تفحص المسار عبر الوكيل. ومع ذلك، فأنت تؤكد فقط اختبارًا مباشرًا محددًا تمامًا. يفترض هذا الأسلوب أنك تعرف المفاصل التي يستخدمها الاختبار؛ فقد يجعل تعدد الأخطاء أو مسارات حركة مرور مختلفة عملية التقسيم البسيط مضللة.
ترتيب استكشاف الأخطاء لإزالة العطل في الشبكة والخدمات
عندما لا تعرف موقع خطأ شبكة معين، يوفر هذا الترتيب نقطة بداية. إذا كان لديك بالفعل نتيجة اختبار ذات صلة، فاستخدمها لاختيار المكان الذي ستستمر فيه بالتحقيق. ليس عليك تنفيذ جميع اختبارات الشبكة الخاصة بخطأ برمجي.
flowchart TD
A[اتصال مادي] --> B[واجهة الشبكة]
B --> C[إعداد IP]
C --> D[شبكة محلية]
D --> E[بوابة وتوجيه]
E --> F[DNS]
F --> G[خدمة] فيديو: كيف تختبر اتصال الشبكة باستخدام أمر Ping
يوضح الفيديو كيفية استخدام الأمر ping للتحقق من توفر جهاز ما عبر الشبكة.
يجب أن تكون قادرًا على كل نقطة مما يلي:
- شرح ما يفحصه نقطة التحقق في الواقع
- العثور على القيم ذات الصلة باستخدام الأوامر الصحيحة (انظر إلى 🌐 بروتوكولات الشبكات للحصول على تفاصيل عن أوامر مثل
ping، وnslookup) - التمييز بين الملاحظة والفرضية
- اختيار خطوة التحقق التالية بناءً على نتيجة الخطوة السابقة، وليس بناءً على الحدس
أوامر لكل طبقة في جهاز افتراضي Linux على Proxmox
هذه تطبيق للطريقة عندما لا يصل الجهاز الافتراضي إلى خدمة معينة. نفّذ الأوامر ذات الصلة عبر وحدة التحكم (Console) الخاصة بالجهاز الافتراضي، وليس عبر الطرفية (Shell) لجهاز مضيف Proxmox. راجع 🧭 التنقل في Proxmox VE عند الحاجة. اختر الاختبار الذي يناسب ما تفحصه؛ الجدول ليس متطلبًا للمهمة 1.
| الطبقة | السؤال | التحقق | ماذا يُظهر النتيجة |
|---|---|---|---|
| اتصال الجهاز الافتراضي | هل تم تكوين بطاقة الشبكة للجهاز الافتراضي مقابل جسر؟ | في Proxmox: الجهاز الافتراضي → العُتاد (Hardware) → جهاز الشبكة (Network Device) | وجود جسر، مثل bridge=vmbr0، وعدم وجود link_down=1 يعكس إعداد الاتصال؛ لكن هذا لا يثبت أن شبكة المضيف الفيزيائية تعمل |
| واجهة الشبكة | هل البطاقة مفعَّلة داخل الجهاز الافتراضي؟ | ip -brief link | الواجهة، مثل ens18، تظهر بحالة UP |
| تهيئة عنوان IP | هل حصل الجهاز الافتراضي على عنوان IP؟ | ip -brief address | تحتوي الواجهة على عنوان IPv4 مع بادئة، مثل 10.0.0.50/24 |
| الشبكة المحلية | هل يصل الجهاز الافتراضي إلى البوابة (Gateway)؟ | يظهر مسلك البوابة بعد default via باستخدام ip route. نفّذ ping -c 3 <gateway> | تستلم ردًا من البوابة |
| البوابة والتوجيه | هل يصل الجهاز الافتراضي إلى عنوان خارج شبكته الخاصة؟ | ping -c 3 1.1.1.1 | تستلم ردًا |
| DNS | هل يمكن للجهاز الافتراضي تحليل الأسماء؟ | getent hosts deb.debian.org | تُخرج الأمر عنوان IP |
| الخدمة | هل يعمل الوظيفة المعنية؟ | لمصادر الحزم: sudo apt update. لخادم ويب محلي من Docker 1: curl --fail --show-error http://127.0.0.1:8080 | يُفسَّر مقابل النتيجة المتوقعة لتلك الوظيفة تحديدًا؛ الوصول المحلي عبر HTTP لا يختبر الاتصال من عميل آخر |
إذا كان المسار القياسي مفقودًا، فافحص كيف يجب أن يصل الجهاز الافتراضي إلى الأهداف خارج شبكته؛ فقد تمتلك بعض أهدافها مسارات خاصة بها. تحجب بعض الشبكات أمر ping، لذا فإن عدم وجود رد ليس دليلًا وحيدًا على انقطاع الاتصال. إذا كانت عمليات البحث عن الاسم ومصادر الحزم تعمل بشكل صحيح، فأنت تملك نتائج ملموسة للمتابعة. يشرح 🌐 IP والفرع والشبكة والبوابة القياسية العنوان والبادئة والمسار.
اختبار التوقع مقابل الفعلي
اختبار استكشاف الأخطاء وإصلاحها ليس مفيدًا إلا إذا كنت تعرف ما تتوقعه قبل تشغيل الاختبار. اكتب:
المتطلبات: ما الذي يجب أن يكون المستخدم قادرًا على القيام به؟
الهدف: أي عنوان/خدمة تختبرها؟
المُتوقَّع: ماذا سيحدث إذا سار كل شيء بشكل صحيح؟
الفعلي: ماذا حدث؟
يُثبت: ماذا يُثبت هذا النتيجة؟
لا يُلغي وحده: ماذا لا يُلغيه هذا النتيجة؟
نادرًا ما تثبت اختبار واحد كل شيء
أن يستجيب أمر ping يُظهر فقط بروتوكول ICMP يعمل - وليس نظام أسماء النطاقات (DNS) أو الخدمة نفسها تعمل. فتح صفحة ويب، يظهر أنه استجاب طلب HTTP(S) بالتحديد - وليس جميع الخدمات الأخرى على الخادم قيد التشغيل. اختبر الوظيفة التي يحتاجها المستخدم فعلياً، وليس مجرد إن كان أي شيء “يستجيب”.
المهمة 1 - تطبيق المنهجية على مشكلة حقيقية
اختر مشكلة صادفتها في موضوع آخر لدعم التشغيل أو التطوير (حاوية لا تبدأ، خدمة تعذر الاتصال بها، سكريبت يفشل):
- ادرس الخطوات السبع المذكورة أعلاه، واحدة تلو الأخرى.
- دوّن «النتيجة المتوقعة مقابل النتيجة الفعلية» لكل اختبار تجريه.
- سجّل المكوّن أو الطبقة التي يحددها الاختبار. استخدم تسلسل الشبكة فقط عندما يناسب المشكلة.
- جرّب تصحيحًا واحدًا مبررًا في بيئة اختبارات لديك صلاحية تعديلها. كرّر إجراء المستخدم الأصلي وتحقق من أن التصحيح يعمل فعليًا. احتفظ بطريق للرجوع إلى الإعداد السابق.
إذا لم تكن لديك أخطاء متاحة، يمكنك تحليل هذا المثال: تطبيق يعرض الصفحة المتوقعة عند / ، لكن HTTP 404 عند /status. ماذا تُظهر الاستجابتان؟ وما الذي ستبحث عنه أولاً؟ حصلت كلتا الطلبات على استجابة HTTP؛ أول فحص هو ما إذا كان /status موجودًا فعلًا في التطبيق وما إذا كان العميل يستخدم المسار الصحيح. يُعدّ هذا المثال تمرينًا تحليليًا، وليس دليلًا على أنك أصلحت حلًا خاصًا بك.
نقطة تحقّق: تم تحديد نطاق الخطأ وضبطه
اعرض سجل الاختبار ووضّح أي ملاحظة دعمت الاختبار التالي أو الإجراء التصحيحي. بعد التصحيح، يجب أن يعطي الإجراء الأصلي النتيجة المتوقعة. يمكنك الشرح شفهياً أو كتابياً باستخدام الأوامر والنتائج أمامك. إذا ظل الخطأ مفتوحاً، اذكر ما تم اختباره وما لا يزال غير مؤكد واختبار واحد دقيق تالٍ. لا تكتب سبباً مفترضاً على أنه مؤكَّد.
اختبر نفسك
اختبار ذاتي اختيارى مع تغذية راجعة. لن تُرسَل الإجابات إلى المعلم. استخدم سجل الاختبارات الخاص بك لعرض عِمل استكشاف الأخطاء وإصلاحها الفعلي؛ فالاختبار الذاتي لا يُغني عن التحقق العملي.
ملخص
- استكشاف الأخطاء وإزالتها هو منهجية، وليس تخميناً - سبع خطوات ثابتة من التقييم إلى التوثيق
- يمكن لـ طريقة التقسيم النصف تحديد نطاق سلسلة إذا كنت تعرف المكونات التي يستخدمها الاختبار
- بالنسبة للشبكات: استخدم الطبقات لاختيار اختبار تالي مناسب بناءً على ما لاحظته
- اكتب دائماً المُتوقع مقابل الفعلي قبل أن تختبر، وتذكر أن اختبار واحد نادراً ما يثبت كل شيء