The Quality of Claude AI-authored Python Tests Is Not Weaker Than Human-authored Tests
تُظهر هذه الدراسة أن اختبارات لغة بايثون التي تم إنشاؤها بواسطة نماذج "كلود" (Claude) الحديثة للذكاء الاصطناعي لا تقل كفاءة عن الاختبارات التي كتبها البشر في مشاريع مفتوحة المصدر راسخة مثل "ديجانغو" (Django) و"بانداس" (Pandas)، وذلك بناءً على تقييم صارم باستخدام مخرجات أدوات واقعية، وتصنيف فردي للاختبارات عبر بروتوكولات متعددة لحقن الأخطاء، ومعيار تصميم نوعي.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تعد اختبارات البرمجيات الحارس الصامت للعالم الرقمي. فقبل أن تصل ميزة جديدة في تطبيق هاتف أو موقع مصرفي إلى المستخدم، يجب أن تمر عبر سلسلة من الفحوصات المصمسة لاكتشاف الأخطاء. هذه الفحوصات، التي تسمى الاختبارات، تشبه مجموعة من الأسئلة التي يطرحها الحاسوب على نفسه: "إذا ضغطتُ هذا الزر، هل ستتغير الشاشة كما ينبغي؟" "إذا أدخلتُ كلمة مرور خاطئة، هل سيقوم النظام بحظري؟" لعقود من الزمن، كُتبت هذه الأسئلة بواسطة مهندسين بشريين. ولكن مع ازدياد قدرة الذكاء الاصطناعي على كتابة الأكواد البرمجية، برز سؤال جديد: هل يمكن لهذه الآلات أيضاً أن تكتب الأسئلة التي تفحص عملها الخاص؟ إذا كتب الذكاء الاصطناعي برنامجاً، فهل يمكنه أيضاً كتابة شبكة الأمان التي تضمن عدم تعطل البرنامج لاحقاً؟ هذا ليس مجرد فضول تقني؛ بل هو ضرورة عملية. إذا أردنا بناء أنظمة معقدة بمساعدة الذكاء الاصطناعي، فنحن بحاجة إلى معرفة ما إذا كانت شبكات الأمان التي يبنيها الذكاء الاصطناعي قوية بما يكفي للإمساك بالأخطاء التي قد يرتكبها.
لقد شرع باحث في جامعة ترينيتي كوليدج دبلن في الإجابة على هذا السؤال من خلال وضع الاختبارات التي كتبها الذكاء الاصطناعي في مواجهة مباشرة مع الاختبارات التي كتبها البشر. وقد ركزوا على لغة بايثون (Python)، وهي لغة شائعة لتطبيقات البيانات والويب، وقارنوا بين اختبارات كتبتها عائلة محددة من نماذج الذكاء الاصطناعي المتقدمة مقابل اختبارات كتبها بشر لمشروعين برمجيين ضخمين ومعروفين: "ديجانغو" (Django)، وهو إطار عمل لبناء المواقع الإلكترونية، و"بانداز" (Pandas)، وهي أداة لتحليل البيانات. لم يطلب الباحث من الذكاء الاصطناعي كتابة اختبار لقطعة واحدة معزولة من الكود في فراغ، كما هو الحال في معظم الدراسات السابقة. بدلاً من ذلك، نظروا في سيناريو من الواقع حيث قام الذكاء الاصطناعي ببناء أداة كاملة من الصفر على مدار عدة أسابيع. في هذا السيناريو، قرر الذكاء الاصطناعي بنفسه متى يكتب اختباراً، دون أن يُطلب منه ذلك، تماماً كما قد يفعل مهندس بشري. ثم أخضع الباحث آلاف الاختبارات هذه لسلسلة صارمة من الفحوصات لمعرفة مدى جودة أدائها.
كانت الطريقة الأولى التي استخدمها الباحث هي شكل من أشكال السفر عبر الزمن. فقد أخذ اختباراً كُتب لإصلاح خطأ برمجي معين، ثم أعاد عقارب الساعة إلى الوراء، حيث أزال الإصلاح الذي كان من المفترض أن يكتشفه الاختبار. إذا كان الاختبار جيداً، فيجب أن يفشل فوراً لأن الخطأ قد عاد. وإذا كان الاختبار ضعيفاً، فسيستمر في النجاح، مما يعني فشله في ملاحظة حدوث تراجع في الكود. في هذا الفحص، أدت الاختبارات التي كتبها الذكاء الاصطناعي أداءً لافتاً؛ فقد اكتشفت الأخطاء الحقيقية بنفس وتيرة الاختبارات التي كتبها البشر تقريباً. في الواقع، وجد الباحث أنه لا يوجد دليل إحصائي على أن اختبارات الذكاء الاصطناعي كانت أضعف، فقد كانت فعالة تماماً في رصد متى يسوء الكود البرمجي.
وللتعمق أكثر، استخدم الباحث تقنية تسمى "اختبار الطفرات" (mutation testing). تخيل أخذ قطعة من الكود وإدخال أخطاء اصطناعية صغيرة ومتعمدة فيها، مثل تغيير علامة الجمع إلى علامة طرح أو تبديل رقم. يجب أن يلاحظ الاختبار الجيد هذه التغييرات ويفشل. قام الباحث بإدخال مئات من هذه الأخطاء الاصطناعية في الكود وراقب ما إذا كانت الاختبارات ستكتشفها. فعل ذلك بطريقتين: أولاً، عن طريق إجراء طفرات في أسطر الكود المحددة التي تغيرت في التحديث الأصلي، وثانياً، عن طريق إجراء طفرات في أي جزء من الكود يلمسه الاختبار بالفعل. وفي كلتا الحالتين، اكتشفت الاختبارات التي كتبها الذكاء الاصطناعي الأخطاء بمعدل لا يمكن تمييزه إحصائياً عن الاختبارات التي كتبها البشر. لم تكن اختبارات الذكاء الاصطناعي تغفل عن الأخطاء الدقيقة التي رصدتها الاختبارات البشرية.
كما نظر الباحث في تصميم الاختبارات نفسها، وليس فقط في نجاحها أو فشلها. واستخدم قائمة مراجعة مفصلة لتقييم أمور مثل الوضوح، وما إذا كان الاختبار يفحص الشيء الصحيح، وما إذا كان معقداً للغاية. ووجد أنه رغم أن اختبارات الذكاء الاصط�ناعي لم تكن مثالية، إلا أن عدد العيوب الخطيرة كان صغيراً جداً ومماثلاً للاختبارات التي كتبها البشر. كانت معظم الاختبارات، سواء كتبها آلة أو إنسان، منظمة جيداً وتقوم بمهمتها. وكانت العيوب القليلة الموجودة غالباً مسائل بسيطة، مثل اختبار واسع النطاق قليلاً أو تعليق لا يتطابق تماماً مع الكود. والأهم من ذلك، وجد الباحث أن اختبارات الذكاء الاصطناعي لم تكن عرضة لنوع معين من الفشل حيث تنجح حتى عندما يكون الكود معطلاً، وهي مشكلة تم الإبلاغ عنها في دراسات سابقة أصغر حجماً.
كما تناولت الدراسة مشاريع برمجية ضخمة أخرى ساعد فيها الذكاء الاصطناعي في كتابة الاختبارات، بما في ذلك سجل حاويات (container registry) وأداة أتمتة. وحتى في هذه البيئات الأكثر تعقيداً، حيث كان دور الذكاء الاصطناعي أقل وضوحاً مما كان عليه في الأداة التي بُنيت من الصفر، صمدت الاختبارات. لقد كانت بجودة الاختبارات التي كتبها البشر في المشاريع ذاتها من حيث اكتشاف الأخطاء. وأشار الباحث إلى أن هذه الجودة العالية بدت معتمدة على النسخة المحددة من الذكاء الاصطناعي المستخدم؛ فالنماذج الأقدم أنتجت اختبارات بها المزيد من العيوب، لكن النماذج الأحدث والأكثر تقدماً أنتجت عملاً يضاهي الخبراء البشر.
تشير هذه الدراسة إلى أن الخوف من كون الكود الناتج عن الذكاء الاصطناعي غير آمن بسبب افتقاره للاختبار المناسب قد يكون بلا أساس. فالنماذج التي تم تقييمها هنا لم تنتج كوداً فحسب، بل أنتجت أيضاً ضوابط السلامة اللازمة للتحقق من ذلك الكود. لقد كانت قادرة على تحديد ما يحتاج إلى الاختبار وكتابة الاختبارات بنفسها، وغالباً دون تعليمات صريحة للقيام بذلك. وتشير النتائج إلى أنه مع استمرار تطور الذكاء الاصطناعي، فإنه يصبح قادراً ليس فقط على بناء البرمجيات، بل وأيضاً على ضمان موثوقيتها. إن شبكات الأمان التي تبنيها هذه الآلات ليست أضعف من تلك التي يبنيها البشر؛ بل في كثير من النواحي، هي بنفس القوة. هذا لا يعني أن الإشراف البشري لم يعد مطلوباً، ولكنه يشير إلى أن أدوات بناء برمجيات آمنة وموثوقة تتوسع لتشمل آلات يمكنها كتابة مراقبة الجودة الخاصة بها.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.