رسالة ماجستير، 02/2022 حتى 10/2024
أتمتة اختبارات الوحدة بنموذج لغوي
رسالة الماجستير لدى INFOMOTION GmbH: توليد اختبارات الوحدة تلقائيًا لمشاريع Java Spring Boot
- تغطية الاختبارات
- 9 → 42 %
- مقيسة بأداة JaCoCo
- جهد الكتابة
- 1.440 → 30 د
- لكل مشروع، مقارنة بالتطوير اليدوي
- لكل مجموعة اختبارات
- 2,13 €
- بدلًا من 566 € يدويًا
الوضع القائم
كتابة اختبارات الوحدة لخدمات Spring Boot عمل متكرر تؤجله الفرق، فتتراجع نسبة التغطية مع الوقت. المولّدات المتاحة كانت تنتج اختبارات صحيحة بنيويًا لكنها فارغة من المعنى، ولم يكن أي منها مندمجًا مع بناء Maven الذي يستخدمه الفريق أصلًا. لم تجد مراجعة الأدبيات لأدوات الاختبار الآلي وتطبيقات النماذج اللغوية في هندسة البرمجيات أي منهج يجمع بين تحليل التغطية وتوليد الاختبارات ودورة البناء في Java Spring Boot.
الحل
- تطبيق منهج Design Science Research بدوراته الثلاث: الصلة والدقة والتصميم، بحيث يُبنى الحل على مشكلة واقعية محددة لا على مشكلة افتراضية.
- تطوير استراتيجيات التوجيه ومقارنتها منهجيًا: zero-shot وone-shot وfew-shot، وتقييم أيها ينتج اختبارات JUnit 5 قابلة للترجمة وذات معنى.
- بناء UTestGenLLM، وهو مكوّن إضافي لـ Maven يرتبط بمراحل البناء القابلة للضبط، ويحلل أصناف المشروع ويولّد الاختبارات دون مغادرة البناء المعتاد.
- دمج JaCoCo بحيث يقرأ المكوّن التغطية القائمة، ويحدد الأصناف والدوال غير المختبَرة، ويرتب التوليد حسب الثغرات الفعلية بدل التوليد العشوائي.
- تشغيل النموذج اللغوي على نسخة GPT خاصة مستضافة على Azure، حتى لا تصل الشيفرة المملوكة إلى أي واجهة عامة.
- التحقق عبر عدة مشاريع بمقاييس تغطية كمية وبتقييم من خبراء.
النتائج
- ارتفعت تغطية الاختبارات بنسبة 33 بالمئة في المشاريع التي جرى تقييمها
- انخفض جهد كتابة الاختبارات بنسبة تصل إلى 95 بالمئة مقارنة بالتطوير اليدوي
- انخفضت كلفة مجموعة الاختبارات الواحدة من نحو 566 € من وقت المطوّر إلى نحو 2,13 € من كلفة الواجهة البرمجية
- ثبت أن هندسة التوجيه تؤثر تأثيرًا قابلًا للقياس في جودة الشيفرة التقنية المولَّدة
- نتج عن العمل إطار قابل لإعادة الاستخدام لدمج النماذج اللغوية في سير تطوير البرمجيات داخل المؤسسات
التقنيات المستخدمة
- Java
- Maven
- Spring Boot
- JUnit 5
- JaCoCo
- OpenAI GPT-3.5 و GPT-4
- Azure OpenAI
هل لديك عمليات مشابهة في شركتك؟
اكتب لي أي سير عمل يستهلك أكبر وقت لديك. أما الباقي فنوضحه في المحادثة.
ابدأ مشروعًا