Risk Based Software Test Prioritization Using Machine Learning Defect Prediction on Five Open Source Repositories
تكشف هذه الورقة عن حلقة دائرية قاتلة بين الملصق والسمة في اختبار البرمجيات القياسي القائم على المخاطر تؤدي إلى تضخيم أداء تعلم الآلة، ثم تقترح بروتوكولاً صارماً باستخدام إزالة السمات المتسربة وتقييماً دقيقاً لإثبات تحسن متواضع ولكن قوي إحصائياً بنسبة 3.64% مقارنة بالنماذج المرجعية القوية، مع الكشف عن فشل هذه النماذج في التعميم زمنياً.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
في المشهد المتغير والواسع لتطوير البرمجيات الحديثة، تُكتب الأكواد وتُختبر وتُحدث بسرعة قد تفوق قدرة أي فريق بشري. ولمواكبة هذا الإيقاع، يعتمد المهندسون على أنظمة مؤتمتة تقوم بتشغيل آلاف الفحوصات في كل مرة يتم فيها إجراء تغيير ما. هذه الفحوصات، المعروفة باسم الاختبارات، هي شبكة الأمان التي تمسك بالأخطاء قبل وصولها إلى المستخدمين. ومع ذلك، مع نمو البرمجيات، ينمو عدد الاختبارات بشكل أسرع، حتى يصبح كبيراً جداً لدرجة أن تشغيل كل اختبار منها يستغرق وقتاً طويلاً للغاية. إن انتظار جولة كاملة من الفحوصات يمكن أن يؤخر الميزات الجديدة لساعات، مما يبطئ العملية الإبداعية بأكملها. وهذا يخلق معضلة صعبة: تحتاج الفرق إلى السرعة، لكن لا يمكنها تحمل تكلفة التخلي عن فحوصات السلامة. والحل الذي لجأ إليه الكثيرون هو الاختبار القائم على المخاطر، وهي استراتيجية تحاول تخمين الأجزاء الأكثر عرضة للتعطل وفحصها أولاً. والأمل هو العثوا على الأخطاء بسرعة دون إضاعة الوقت في الأجزاء المستقرة من النظام.
لسنوات، حاول الباحثون تعليم الحواسيب كيفية القيام بهذه التخمينات باستخدام تعلم الآلة، وهي طريقة تتعلم فيها البرمجيات الأنماط من البيانات السابقة. لقد غذوا الحواسيب بمعلومات حول كيفية تغيير الملفات، ومن قام بتغييرها، وكم مرة تم ذلك. كان الهدف هو بناء نموذج يمكنه النظر إلى ملف ما والقول: "هذا الملف خطير؛ افحصه أولاً". لكن دراسة جديدة أجراها الباحث المستقل فيجاي براساد جافادي تكشف أن العديد من هذه المحاولات السابقة بنيت على خطأ جوهري. تظهر الدراسة أن البيانات المستخدمة لتعليم الكمبيوتر ما الذي يجعل الملف "مليئاً بالعيوب" كانت غالباً هي نفس البيانات المستخدمة لإجراء التنبؤ. كان الأمر يشبه مطالبة طالب بالتنبؤ بدرجة امتحانه بينما تسلمه سراً مفتاح الإجابة كدليل للدراسة. لم يكن الكمبيوتر يتعلم التنبؤ بالمستقبل؛ بل كان ببساطة يقرأ الملصق الذي كان من المفترض أن يخمنه.
سعى جافادي لإصلاح ذلك عن طريق إزالة تسرب البيانات والبدء من جديد بمجموعة نظيفة من القواعد. جمع بيانات من خمسة مشاريع مفتوحة المصدر ضخمة ومعروفة، فحص خلالها ما يقرب من ثلاثمائة ألف ملف. في الطريقة القديمة المعيبة، كان الكمبيوتر يُخبر بأن الملف "عرضة للعيوب" إذا تم إصلاحه يوماً ما بسبب خطأ، ثم يُعطى العدد الدقيق لتلك الإصلاحات كدليل للقيام بتنبؤه. قام جافادي بإزالة تلك الدلائل المضللة، وأجبر الكمبيوتر على الاعتماد فقط على إشارات أخرى، مثل عدد المرات التي تم فيها المساس بالملف، وعدد الأشخاص المختلفين الذين عملوا عليه، وكمية الكود التي تمت إضافتها أو إزالتها. ثم قارن هذه النماذج الذكية بمنهج بسيط جداً وغير ذكي: وهو مجرد فرز الملفات حسب عدد المرات التي تغيرت فيها.
كانت النتائج كاشفة. عندما تمت إزالة الدلائل المضللة، لم تنهار نماذج تعلم الآلة المعقدة، لكنها لم تحقق معجزات أيضاً. النموذج الأكثر ذكاءً، وهو نوع من الخوارزميات يسمى "الغابة العشوائية" (Random Forest)، تمكن من تحديد حوالي 46.5 بالمائة من الملفات المعيبة عند النظر فقط إلى أعلى 10 بالمائة من الملفات الأكثر ريبة. كان هذا تحسناً حقيقياً، لكنه كان متواضعاً. والأهم من ذلك، أن الطريقة البسيطة المتمثلة في مجرد عد عدد المرات التي تغير فيها الملف كانت جيدة تقريباً، حيث اصطادت حوالي 43 بالمائة من الملفات السيئة. حقق النموذج الذكي ميزة صغيرة تبلغ حوالي ثلاث إلى أربع نقاط مئوية فقط فوق عملية العد البسيطة. يشير هذا إلى أنه بينما يمكن لتعلم الآلة أن يساعد، فإن أقوى إشارة للعثور على الأخطاء هي غالباً التاريخ الخام لكيفية تعديل الملف.
كما كشفت الدراسة عن قصور مفاجئ حول مدى قدرة هذه التنبؤات على الوصول إلى المستقبل. فعندما حاول الباحثون اختبار النماذج على ملفات جديدة تماماً - وهي الملفات التي أُنشئت للتو ولم يتسنَّ لها بعد وقت لتراكم تاريخ من التغييرات - فشلت النماذج تماماً. لم تكن تعمل بأفضل من التخمين العشوائي. حدث هذا لأن تعريف الملف "المعيب" اعتمد على تاريخ من الإصلاحات السابقة. والملف الجديد ليس له تاريخ، لذا لم يكن لدى النموذج وسيلة لمعرفة ما إذا كان سيصبح إشكالياً في النهاية. وتعد هذه النتيجة بمثابة تحذير: هذه الأدوات ممتازة في وصف الملفات التي تشكل خطراً حالياً بناءً على ماضيها، لكنها لا تستطيع التنبؤ بشكل موثوق بالملفات الجديدة تماماً التي ستصبح خطيرة غداً.
في النهاية، تقدم هذه الأبحاث صورة أكثر وضوحاً وأمانة لكيفية تحديد أولويات اختبار البرمجيات. إنها تؤكد أن الأساليب القديمة كانت مضخمة بسبب خلل خفي، لكنها تثبت أيضاً أن النهج المصحح لا يزال يحمل قيمة. إن أفضل مسار للمضي قدماً لفرق الهندسة ليس الاعتماد على تنبؤات معقدة و"صندوق أسود"، بل استخدام مزيج من الإشارات البسيطة والمفهومة ونموذج تعلم آلة خفيف الوزن. توصي الدراسة باستخدام نوع معين من الخوارزميات السريعة التي يمكنها إجراء تنبؤ في أقل من مللي ثانية، مما يسمح لها بالعمل فوراً أثناء كتابة المطور للكود. لا يعد هذا النهج بالإمساك بكل خطأ، ولكنه يوفر طريقة سليمة إحصائياً لتركيز وقت الاختبار المحدود على الملفات التي من المرجح أن تحتاج إليه، موازناً بين الحاجة إلى السرعة وضرورة السلامة.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.