2025-11-21T20:16:16.286197

The Potential of LLMs in Automating Software Testing: From Generation to Reporting

Sherifi, Slhoub, Nembhard
Having a high quality software is essential in software engineering, which requires robust validation and verification processes during testing activities. Manual testing, while effective, can be time consuming and costly, leading to an increased demand for automated methods. Recent advancements in Large Language Models (LLMs) have significantly influenced software engineering, particularly in areas like requirements analysis, test automation, and debugging. This paper explores an agent-oriented approach to automated software testing, using LLMs to reduce human intervention and enhance testing efficiency. The proposed framework integrates LLMs to generate unit tests, visualize call graphs, and automate test execution and reporting. Evaluations across multiple applications in Python and Java demonstrate the system's high test coverage and efficient operation. This research underscores the potential of LLM-powered agents to streamline software testing workflows while addressing challenges in scalability and accuracy.
academic

إمكانيات نماذج اللغة الكبيرة في أتمتة اختبار البرمجيات: من التوليد إلى التقارير

المعلومات الأساسية

  • معرّف الورقة البحثية: 2501.00217
  • العنوان: The Potential of LLMs in Automating Software Testing: From Generation to Reporting
  • المؤلفون: بيتيم شيريفي، خالد سلهوب، فيتزروي نيمبهارد (معهد فلوريدا للتكنولوجيا)
  • التصنيف: cs.SE (هندسة البرمجيات)، cs.AI (الذكاء الاصطناعي)
  • تاريخ النشر: 31 ديسمبر 2024
  • رابط الورقة: https://arxiv.org/abs/2501.00217

الملخص

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

السياق البحثي والدافع

تعريف المشكلة

  1. المشكلة الأساسية: تعاني طرق الاختبار التقليدية للبرمجيات من نقص الكفاءة والتكاليف العالية والتدخل اليدوي المفرط
  2. الحاجة الفعلية: يتطلب ضمان جودة البرمجيات عمليات تحقق وتأكيد شاملة، لكن الاختبار اليدوي لا يستطيع تلبية متطلبات كفاءة تطوير البرمجيات الحديثة

تحليل الأهمية

  • يُعتبر اختبار البرمجيات من أهم المجالات في تعليم هندسة البرمجيات
  • طرق الاختبار اليدوي مثل الاختبار الانحداري تستغرق وقتاً طويلاً وتكاليفها مرتفعة جداً
  • ضمان أن منتجات البرمجيات تعمل كما هو متوقع وتلبي معايير الجودة أمر حاسم في هندسة البرمجيات

قيود الطرق الموجودة

  • الاختبار اليدوي: فعال لكنه يستغرق وقتاً طويلاً وتكاليفه عالية
  • الاختبار الآلي التقليدي: لا يستطيع استبدال الطرق اليدوية بالكامل، ولا يزال يتطلب تدخلاً يدوياً في سيناريوهات مثل اختبار الواجهات الرسومية
  • الاختبار المستند إلى الوكلاء التقليدي (ABST): يفتقر إلى القدرة على توليد حالات الاختبار الذكية

الدافع البحثي

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

المساهمات الأساسية

  1. اقتراح إطار عمل متعدد الوكلاء للاختبار الآلي مستند إلى نماذج اللغة الكبيرة، يحقق أتمتة شاملة من توليد الاختبارات إلى التقارير
  2. تصميم نظام معماري رباعي الطبقات، يتضمن عميل ويب صوتي ووكلاء اختبار البرمجيات ونماذج اللغة الكبيرة وبيئة التطوير
  3. تنفيذ توليد حالات اختبار ديناميكي، يستفيد من نماذج اللغة الكبيرة لتوليد اختبارات وحدة مخصصة وتبريرات الاختبار تلقائياً
  4. دمج وظائف التصور، يولد تلقائياً رسوم بيانات بصيغة DOT لعرض تفاعلات التطبيق
  5. التحقق من فعالية النظام، حقق تغطية اختبار عالية على مشاريع Python و Java (بمتوسط 93.45%-97.71%)

شرح الطريقة

تعريف المهمة

المدخلات: طلبات الاختبار المقدمة من المستخدم عبر الصوت أو النص (تتضمن اسم المشروع والمجلد الفرعي ولغة البرمجة وغيرها) المخرجات: تقرير PDF شامل يتضمن نتائج الاختبار وتحليل التغطية وتبريرات الاختبار ورسوم البيانات للاستدعاءات القيود: يدعم مشاريع Python و Java، ويركز على مستوى اختبار الوحدة

معمارية النموذج

المعمارية عالية المستوى

يتكون النظام من أربعة مكونات رئيسية:

  1. عميل الويب الصوتي: يلتقط مدخلات المستخدم (أوامر صوتية أو نصية)، ويبدأ سير عمل الاختبار عبر طلبات HTTP GET
  2. وكيل اختبار البرمجيات: المكون الأساسي للنظام، ينسق التفاعلات بين المكونات المختلفة، ويعمل كطبقة تجريد لتوليد سكريبتات الاختبار وتنفيذها وإنشاء التقارير
  3. نماذج اللغة الكبيرة (LLMs): تنفذ مهام استخراج الكيانات وتوليد الاختبارات وتوليد رسوم البيانات بصيغة DOT
  4. بيئة التطوير: توفر الوصول إلى كود المشروع وتنفيذ حالات الاختبار المولدة وعرض النتائج

سير عمل المعمارية منخفضة المستوى

  1. التهيئة: يرسل العميل أمراً صوتياً إلى واجهة برمجة تطبيقات مولد الاختبارات
  2. استخراج الكيانات: يستخرج نموذج اللغة الكبيرة اسم المشروع والمجلد الفرعي ولغة البرمجة من مطالبة المستخدم
  3. تحديد الملفات: يقوم وحدة FileLocator بتحديد موقع مجلد المشروع المحدد واستخراج محتويات الملفات
  4. توليد الاختبارات: يولد نموذج اللغة الكبيرة (باستخدام Gemini) اختبارات الوحدة والتبريرات المقابلة
  5. توليد الرسوم البيانية: يولد نموذج اللغة الكبيرة سلسلة نصية بصيغة DOT لتصور رسوم البيانات للاستدعاءات
  6. التنفيذ والتقارير: ينفذ منفذ الاختبارات الاختبارات، ويقوم منشئ تقارير PDF بإنشاء تقرير شامل يتضمن النتائج والتغطية ورسوم البيانات

نقاط الابتكار التقني

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

إعداد التجارب

مجموعة البيانات

استخدام أربع تطبيقات بدرجات تعقيد مختلفة:

مشاريع Python:

  • Experiment: وظائف آلة حاسبة أساسية (47 سطر كود)
  • Cinema: نظام إدارة دور السينما (183 سطر كود)

مشاريع Java:

  • StudentAverage: حساب متوسطات الطلاب (114 سطر كود)
  • LibrarySystem: نظام إدارة المكتبة (269 سطر كود)

مؤشرات التقييم

  1. معدل النجاح في التنفيذ: نسبة التشغيلات التي تكمل جميع الخطوات (توليد الاختبارات وتنفيذها وتوليد تقرير PDF)
  2. تغطية الاختبارات: النسبة المئوية للكود المغطى بحالات الاختبار المولدة
  3. وقت التنفيذ: تحليل الوقت المستغرق في كل مرحلة من مراحل العملية
  4. المقارنة بين اللغات: الفروقات في الأداء بين مشاريع Python و Java

تفاصيل التنفيذ

  • نموذج اللغة الكبيرة: استخدام Google Gemini بشكل أساسي، مع تجارب مقارنة باستخدام ChatGPT
  • عدد الاختبارات: 20 تنفيذ لمشاريع Python و 24 تنفيذ لمشاريع Java
  • صيغة المدخلات: اختبار صيغ مطالبات باللغة الطبيعية متعددة

نتائج التجارب

النتائج الرئيسية

أداء معدل النجاح

  • مشاريع Python: جميع التنفيذات الـ 20 نجحت (معدل نجاح 100%)
  • مشاريع Java: 3 فشل من أصل 24 تنفيذ (معدل نجاح 87.5%)
  • أسباب الفشل: تحديداً بسبب المطالبات الغامضة وأخطاء الترجمة في سكريبتات الاختبارات المولدة

تحليل وقت التنفيذ

  • متوسط وقت التنفيذ الكلي: 83.5 ثانية
  • وقت توليد الاختبارات: 62.8 ثانية (يشكل أكبر نسبة)
  • تحديد موقع المجلد: 9.7 ثواني
  • توليد رسوم البيانات بصيغة DOT: 5.4 ثواني
  • تنفيذ الاختبارات: 3.2 ثواني

نتائج المقارنة بين اللغات

المؤشرJavaPython
متوسط وقت التنفيذ الكلي86.7 ثانية80 ثانية
وقت توليد الاختبارات62.4 ثانية63.3 ثانية
وقت تنفيذ الاختبارات5.44 ثانية0.87 ثانية
متوسط تغطية الاختبارات97.71%93.45%

تحليل المشاريع التفصيلي

المشروعاللغةعدد أسطر الكودالوقت الكليتوليد الاختباراتتنفيذ الاختباراتالتغطية
LibrarySystemJava269119.06 ثانية92.54 ثانية5.39 ثانية94.67%
StudentManagerJava11462.55 ثانية39.79 ثانية5.48 ثانية100.00%
CinemaPython183110.13 ثانية92.43 ثانية0.79 ثانية88.30%
ExperimentPython4749.78 ثانية34.17 ثانية0.96 ثانية98.60%

تجارب المقارنة بين نماذج اللغة الكبيرة

ChatGPT مقابل Gemini (مشروع LibrarySystem):

  • وقت التوليد باستخدام ChatGPT: ~180 ثانية (حوالي ضعف وقت Gemini)
  • تغطية الاختبارات باستخدام ChatGPT: 98%
  • ملاحظة: استخدام تطبيق ChatGPT الويب بدلاً من واجهة برمجة التطبيقات قد يؤثر على وقت التوليد

دراسات الحالات

أمثلة على تبريرات الاختبار

مشروع Cinema - دالة rent_movie:

  • الحالة الأساسية: "اختبار استئجار فيلم متاح لعضو موجود"
  • الحالات الحدية: "اختبار استئجار فيلم غير موجود، استئجار فيلم لعضو غير موجود، استئجار فيلم تم استئجاره بالفعل"

مشروع Library - دالة getTitle:

  • الحالة الأساسية: "اختبار استرجاع عنوان الكتاب بعد إنشاء الكائن"
  • الحالات الحدية: غير قابلة للتطبيق

الأعمال ذات الصلة

الاختبار المستند إلى الوكلاء التقليدي (ABST)

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

الاختبار المحسّن بنماذج اللغة الكبيرة

  • دراسة استطلاع الصناعة: 48% من المتخصصين دمجوا بالفعل نماذج اللغة الكبيرة في أنشطة الاختبار
  • مجالات التطبيق: تحليل المتطلبات وتطوير خطط الاختبار والاختبار الآلي
  • الأدوات الشائعة: ChatGPT و GitHub Copilot
  • اتجاهات البحث: تحليل 102 ورقة بحثية ذات صلة يظهر أن نماذج اللغة الكبيرة لها قيمة كبيرة في توليد حالات الاختبار وإنشاء التأكيدات

الخلاصات والنقاش

الاستنتاجات الرئيسية

  1. معدل نجاح عالي: أظهرت الوكلاء الذكيين المدفوعة بنماذج اللغة الكبيرة أداءً ممتازاً في أتمتة اختبار البرمجيات، مع معدل نجاح 100% لمشاريع Python
  2. تغطية عالية: متوسط تغطية الاختبارات يتجاوز 93%، مما يثبت فعالية حالات الاختبار المولدة
  3. تحسين الكفاءة: تقليل كبير في التدخل اليدوي، مع تحقيق أتمتة شاملة من توليد الاختبارات إلى التقارير
  4. التكيف مع اللغات: نجح الإطار في دعم لغتي البرمجة الرئيسيتين Python و Java

القيود

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

الاتجاهات المستقبلية

  1. توسيع أنواع الاختبارات: إدخال دعم الاختبارات المتكاملة واختبارات مستوى النظام
  2. تحسين دعم اللغات: التوسع إلى لغات برمجة أكثر
  3. تحسين التصور: إضافة خرائط حرارة لتغطية الأخطاء والميول
  4. دمج المتطلبات: استخدام وثائق مواصفات المتطلبات كمدخلات للمطالبات لتحسين الدقة
  5. معالجة الأخطاء: تحسين التعامل مع المطالبات الغامضة وآليات استرجاع الأخطاء

التقييم المتعمق

المميزات

  1. ابتكار قوي: أول دمج منهجي لنماذج اللغة الكبيرة مع معمارية متعددة الوكلاء لأتمتة اختبار البرمجيات الشاملة
  2. قيمة عملية عالية: حل المشاكل الفعلية في مجال اختبار البرمجيات، بقيمة هندسية تطبيقية قوية جداً
  3. تجارب شاملة: تقييم شامل عبر اللغات والمشاريع المتعددة، مع نتائج مقنعة
  4. معمارية واضحة: تصميم معماري عالي ومنخفض المستوى معقول، درجة عالية من المعيارية، سهل التوسع والصيانة

أوجه القصور

  1. نطاق الاختبارات محدود: يدعم فقط اختبارات الوحدة، لا يستطيع تلبية احتياجات اختبار البرمجيات الكاملة
  2. تحليل الأخطاء غير كافٍ: التحليل المتعمق لأسباب فشل مشاريع Java محدود
  3. نقص المقارنات المرجعية: غياب المقارنات التفصيلية مع أدوات الاختبار الآلي الموجودة
  4. التحقق من قابلية التوسع: لم يتم التحقق من قابلية النظام للتوسع على مشاريع كبيرة ومعقدة

التأثير

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

السيناريوهات المناسبة

  1. المشاريع الصغيرة والمتوسطة: مناسبة بشكل خاص للمشاريع بحجم كود يقل عن بضعمائة سطر
  2. أتمتة اختبارات الوحدة: يمكن تقليل العمل اليدوي بشكل كبير في كتابة اختبارات الوحدة
  3. التحقق السريع من النماذج الأولية: مناسب للسيناريوهات التي تتطلب توليد سريع لحالات الاختبار
  4. التعليم والتدريب: يمكن استخدامه في تعليم وتدريب اختبار البرمجيات

المراجع

تستشهد الورقة بـ 13 مرجعاً مهماً، تغطي طرق ABST التقليدية وتطبيقات نماذج اللغة الكبيرة في اختبار البرمجيات والنظريات الأساسية لاختبار البرمجيات وغيرها من المجالات الرئيسية، مما يوفر أساساً نظرياً قوياً للبحث.


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