تحديد وتصحيح الأخطاء
مُقدَّم| English | المعنى |
|---|---|
| bug/bʌɡ/ | خطأ برمجي |
| debugging/ˈdiːbʌɡɪŋ/ | تصحيح الأخطاء |
| syntax error/ˈsɪntæks ˈerə/ | خطأ في بناء الجملة |
| logic error/ˈlɒdʒɪk ˈerə/ | خطأ منطقي |
| runtime error/ˈrʌntaɪm ˈerə/ | خطأ أثناء التشغيل |
| overflow error/ˌəʊvəˈfləʊ ˈerə/ | خطأ تجاوز السعة |
| edge case/edʒ keɪs/ | حالة حدية |
| expected output/ekˈspektɪd ˈaʊtpʊt/ | المخرجات المتوقعة |
كل برنامج يحتوي على أخطاء
- بغض النظر عن دقة الفريق، تحتوي البرامج على أخطاء.
- الخطأ في البرنامج هو خلل (bug).
- إيجاد الأخطاء وإصلاحها يسمى إصلاح الأخطاء (debugging).
- إتقان إصلاح الأخطاء هو أحد أكثر المهارات قيمة التي يمكن للمبرمج اكتسابها.
أي نوع من الأخطاء؟
خطأ بناء يمنع تشغيل البرنامج؛ خطأ منطق يشغل ويعطي إجابة خاطئة؛ خطأ وقت التشغيل يوقفه جزئياً؛ خطأ تجاوز السعة يتجاوز التخزين.
عملية إيجاد وتصحيح الأخطاء في البرنامج تسمى ______.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
الخطأ هو ثغرة؛ تصحيح الثغور هو إزالة الأخطاء.
قوس مفقود يمنع تشغيل البرنامج هو:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
كسر قواعد اللغة يُعد خطأ في بناء الجملة.
لماذا غالباً ما تكون الأخطاء المنطقية الأصعب في الكشف عنها؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
لا يظهر خلل واضح، لذا يجب مقارنة المخرجات بما كنت تتوقعه.
الأنواع الرئيسية للأخطاء
- خطأ الصياغة (syntax error) ينتهك قواعد اللغة (مثل قوس مفقود) — ويرفض البرنامج التشغيل.
- خطأ المنطق (logic error) يعمل لكن يعطي نتيجة خاطئة، لأن التعليمات لا تتطابق مع الخطة.
- خطأ وقت التشغيل (runtime error) يتسبب في انهيار البرنامج أثناء عمله — مثل القسمة على صفر.
- خطأ الفائض (overflow error) يحدث عندما يكبر القيمة أكثر من سعتها التخزينية.
الاختبار مع الحالات الحدية (إدخال فارغ، أرقام كبيرة جداً) يساعد في اكتشاف الأخطاء الخفية.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
تختبئ الأخطاء غالباً عند حدود ما يتوقعه البرنامج.
للاستدراك على خطأ في اختبار، تقارن المخرج الفعلي بـ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
الفرق بين المخرج الفعلي والمخرج المتوقع يشير إلى وجود خطأ.
كيفية اكتشافها
- اختبر بـ مدخلات متعددة، بما في ذلك غير اعتيادية — رقم كبير جداً، أو مدخل فارغ، أو حالة حدية عند الحدود القصوى.
- قارن المخرجات الفعلية بـ المخرجات المتوقعة؛ فإن الاختلاف يشير إلى وجود خطأ.
- أضف جمل طباعة مؤقتة لرؤية القيم الداخلية، حتى تجد أين يبدأ الخطأ لأول مرة.
- قسّم وتحقق: تأكد من صحة جزء واحد، ثم ضيق نطاق البحث في الباقي.
يجب إعادة اختبار البرنامج بالكامل بعد إصلاح الخطأ، لأن الإصلاح قد يخلق خطأً جديداً.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
الإعادة الدقيقة للاختبار هي ما يجعل البرمجيات موثوقة.
أصلح، ثم أعد الاختبار
- أخطاء المنطق هي الأصعب — فلا يوجد شيء يبدو أنه "يتعطل" بشكل واضح، الإجابة مجرد خاطئة.
- إصلاح خطأ واحد قد يخلق خطأً آخر.
- لذلك، بعد كل تصحيح، أعد اختبار البرنامج بالكامل.
- الاختبار الدقيق والمكرر يحول النموذج الأولي الخشن إلى برنامج يمكن للناس الوثوق به.
"لقد عمل" لا يعني "إنه صحيح." خطأ المنطق يعمل بدون انهيار أو رسالة تنبيه — يبدو البرنامج سليماً لكن الإجابة خاطئة. الطريقة الوحيدة لاكتشافه هي مقارنة المخرجات بما توقعته، وليس فقط التحقق من أنه عمل.
الخلل (bug) هو خطأ؛ إصلاح الأخطاء هو إصلاح الأخطاء. خطأ الصياغة يمنع تشغيل البرنامج، خطأ المنطق يعمل لكن يعطي إجابة خاطئة، خطأ وقت التشغيل يتسبب في انهياره جزئياً، وخطأ الفائض يتجاوز السعة التخزينية. اعثر على الأخطاء عن طريق اختبار مدخلات متعددة (خاصة الحالات الحدية) مقابل المخرجات المتوقعة، Always أعد الاختبار بعد الإصلاح.