وحدة 5 / 12

تصحيح الأخطاء واستكشاف الأخطاء وإصلاحها

المكاسب:

  • القدرة على وصف الخلل بشكل فعال للذكاء الاصطناعي من خلال رسالة الخطأ وتتبع المكدس وأصغر مثيل لإعادة الإنتاج
  • القدرة على تشغيل تدفق تصحيح منهجي باستخدام الذكاء الاصطناعي للعثور على السبب الجذري عن طريق الافتراض وتضييق نطاقه خطوة بخطوة
  • القدرة على التحقق من أن الإصلاح الذي اقترحه الذكاء الاصطناعي قد أصلح المشكلة بالفعل عن طريق إعادة الإنتاج واختبار الانحدار

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

سنرى في هذه الوحدة كيفية وصف الخلل بشكل فعال للذكاء الاصطناعي، وتضييق نطاق الفرضيات خطوة بخطوة، والتحقق من خلال اختبار الانحدار من أن الإصلاح المقترح يحل المشكلة بالفعل. تذكر: "إصلاح" الخلل و"قمع أعراض الخلل" شيئان مختلفان؛ التصحيح الذي يتم دون العثور على السبب الجذري ينقل الخطأ إلى مكان آخر.

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

وصف الخلل في الذكاء الاصطناعي

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

  1. توضيح الأعراض. بالتنسيق "X المتوقع، Y الفعلي".
  2. الصق نص الخطأ الكامل وتتبع المكدس. لا تختصرها، قم بفرض رقابة عليها، لكن لا تكسر البنية.
  3. إعطاء أصغر الاستنساخ. الحد الأدنى من الإدخال والرمز الذي يؤدي إلى حدوث الخطأ.
  4. تحديد البيئة. إصدار اللغة، إصدار المكتبة، بيئة التشغيل.

المطالبة الفعالة لوصف الخطأ: "أقوم بتصحيح خطأ. المعلومات: - ما أحاول القيام به: [X] - السلوك المتوقع: [Y] - السلوك الفعلي: [Z] - رسالة خطأ كاملة وتتبع المكدس: [لصق] - البيئة: [اللغة/الإصدار، المكتبة/الإصدار] - الحد الأدنى من التعليمات البرمجية المتضمنة: [الكود] لا تعطيني إصلاحًا مباشرًا. قم أولاً بإدراج الأسباب الجذرية الثلاثة الأكثر احتمالية بترتيب الاحتمالية وأخبرني ما هو التحقق الذي يجب التحقق منه لكل منها."

تضييق التدفق عن طريق الفرضية

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

موجه مساعد البحث الثنائي (التشريح): "لم يكن هذا الخطأ موجودًا بالأمس، فهو موجود اليوم. أريد معرفة أي تغيير من بين آخر 20 تغييرًا أدى إلى الخطأ في التنصيف. أعطني خطة خطوة بخطوة: ما هي النقطة التي يجب أن أختبرها، وأي نصف يجب أن أذهب إليه اعتمادًا على النتيجة. أخبرني أيضًا بالضبط ما الذي يجب التحقق منه في كل خطوة."

موجه إستراتيجية إدراج السجل: "لا يمكنني العثور على الخطأ لأنني لا أستطيع رؤية القيم المتوسطة في هذه الوظيفة. أخبرني عند النقاط التي أحتاج فيها إلى إضافة أسطر سجل تطبع المتغيرات. أضف شرحًا "ماذا سأتعلم من هذا السجل" لكل سجل. وحدد أيضًا التحذيرات التي ستمنعني من تسجيل البيانات السرية."

نصيحة: إذا لم تتمكن من حل خطأ ما، فغالبًا ما تكون المشكلة في مكان افترضته بشكل غير صحيح. اسأل الذكاء الاصطناعي "ما هو الافتراض الذي قد يكون خاطئًا؟" السؤال سوف يكسر العمى الخاص بك. أصعب الأخطاء تختبئ في المكان الذي تقول فيه "أنا متأكد من أن هذا يعمل بشكل صحيح".

موجه ضعيف / موجه قوي

ضعيف: "الكود الخاص بي يعطي خطأ، قم بإصلاحه: [200 سطر من التعليمات البرمجية]"(النتيجة: لا يعرف الذكاء الاصطناعي ما هو الخطأ، وما هو المتوقع؛ فهو يقدم اقتراحات عامة بناءً على التخمين، معظمها عديمة الفائدة.)قوي:"لقد حصلت على NullPointerException. متوقع: يجب إرجاع قائمة المستخدمين. فعلي: ينفجر عند استدعاء getUsers(). تتبع المكدس: [لصق]. البيئة: Java 17. الحد الأدنى التكرار: يحدث عندما تكون قائمة المستخدمين فارغة، ولكن ليس عندما تكون ممتلئة. 15 سطرًا مرتبطًا: [code]. اشرح السبب الجذري وسبب تشغيل القائمة الفارغة، ثم اقترح حلاً."

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

التحقق من الإصلاح

الإصلاح لا يكون إلا إصلاحًا حقيقيًا إذا قام بثلاثة أشياء:

التحكم

سؤال

كيفية التحقق

هل ذهب الخطأ؟

هل نفس الإدخال يعمل الآن؟

قم بتشغيل الحد الأدنى من النسخ مرة أخرى

لا توجد أخطاء جديدة؟

هل هناك أي شيء آخر مكسور؟

قم بتشغيل مجموعة الاختبار بأكملها

لن يتكرر؟

فهل سيحدث نفس الخطأ مرة أخرى؟

أضف اختبار الانحدار لهذا السيناريو

غالبًا ما تؤدي التصحيحات التي يتم إجراؤها دون العثور على السبب الجذري إلى قمع الأعراض. على سبيل المثال، يؤدي تجاهل الخطأ الفارغ باستخدام عبارة "تخطي إذا كانت فارغة" إلى السبب الحقيقي، وهو "لماذا تصبح البيانات فارغة؟" غير مرئي، ويتكرر الخطأ في مكان آخر.

حالات صغيرة

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

الحالة 2 - الحد الأدنى من قوة النسخ. لا يستطيع المطور إصلاح الخلل الذي يقول "إنه يتعطل بين الحين والآخر". إنه يقلل الخطأ إلى أصغر إدخال باقتراح الذكاء الاصطناعي: المشكلة تحدث فقط مع أسماء الملفات التي تحتوي على أحرف تركية (خطأ في الترميز). عندما يتم تقليل 300 سطر من عدم اليقين إلى 5 أسطر من النسخ النهائي، يصبح الحل واضحًا.

الحالة 3 - اختبار مكافحة الانحدار. يقوم الذكاء الاصطناعي بإصلاح خطأ في حساب التاريخ. المهندس لا يكتفي بهذا؛ يضيف اختبار الانحدار للسيناريو الخاطئ (نهاية الشهر، 31 يناير + شهر واحد). وعندما يمس تغيير آخر نفس المنطقة بعد 4 أشهر، يتحول لون الاختبار إلى اللون الأحمر ويتم اكتشاف الخلل قبل وصوله إلى مرحلة الإنتاج.

الأخطاء الشائعة

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

في ملخص

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

مهمة التطبيق

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

قائمة مرجعية

  • [ ] لقد أوضحت الأعراض بأنها "متوقعة مقابل محققة".
  • [ ] لقد أعطيت نص الخطأ الكامل وتتبع المكدس إلى الذكاء الاصطناعي.
  • [ ] لقد قمت بتقليل الخطأ إلى أصغر نسخة.
  • [ ] من خلال اختبار الفرضيات واحدة تلو الأخرى، وجدت السبب الجذري.
  • [ ] بدلاً من قمع الأعراض، قمت بإصلاح السبب الجذري.
  • [ ] لقد أضفت وأجريت اختبار الانحدار لنفس الخطأ.