← أحدث الأبحاث
💬 NLP

Ockhamareto: Pareto-Gated Segment-Level Credit Assignment for Concise Unit-Test Generation with Reinforcement Learning

يُعد Ockhamareto إطار عمل أحادي المحاولة يعتمد على خوارزمية GRPO لتوليد اختبارات الوحدة، والذي يستفيد من مكافآت بوابات باريتو (Pareto-gated bonuses) واعتمادات القطع على مستوى الرمز (token-level segment credit) ليتفوق بشكل صارم على النماذج المرجعية الحالية عبر جميع أهداف التحسين، محققاً معدلات أعلى في اكتشاف الأخطاء بعدد أقل بكثير من الاختبارات وكفاءة محسنة عبر معايير قياس ونطاقات نماذج متعددة.

المؤلفون الأصليون: Dong Huang, Mark Harman, Jie M. Zhang, Zhijiang Guo, Mingzhe Du, See Kiong Ng

نُشر 2026-08-26
📖 5 دقيقة قراءة🧠 قراءة متعمّقة

المؤلفون الأصليون: Dong Huang, Mark Harman, Jie M. Zhang, Zhijiang Guo, Mingzhe Du, See Kiong Ng

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

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

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

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

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

كانت نتائج هذا النهج مذهلة. فعند اختباره مقابل أقوى الأساليب الموجودة لتوليد الاختبارات، أنتج النظام الجديد مجموعات اختبار أفضل وأصغر بشكل ملحوظ. ففي مجموعة قياسية من المهام البرمجية، اكتشف النهج الجديد ما يقرب من 50 بالمائة من الأخطاء المحتملة باستخدام متوسط 2.6 اختبار لكل دالة فقط. بينما اكتشف أفضل الأساليب السابقة حوالي 31 بالمائة من الأخطاء وتطلب متوسط 4.7 اختبارًا. وفي الواقع، كان الاختبار الأول الذي ولده النظام الجديد وحده كافيًا في كثير من الأحيان لاكتشاف المزيد من الأخطاء مما اكتشفته مجموعة الاختبارات المكونة من خمسة اختبارات التي أنتجتها الأساليب القديمة. وهذا يثبت أن النموذج تعلم وضع أفضل أعماله في المقدمة، بوضع الاختبارات الأكثر قوة في بداية القائمة.

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

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

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →