The Prompt Alchemist: Automated LLM-Tailored Prompt Optimization for Test Case Generation
Gao, Wang, Gao et al.
Test cases are essential for validating the reliability and quality of software applications. Recent studies have demonstrated the capability of Large Language Models (LLMs) to generate useful test cases for given source code. However, the existing work primarily relies on human-written plain prompts, which often leads to suboptimal results since the performance of LLMs can be highly influenced by the prompts. Moreover, these approaches use the same prompt for all LLMs, overlooking the fact that different LLMs might be best suited to different prompts. Given the wide variety of possible prompt formulations, automatically discovering the optimal prompt for each LLM presents a significant challenge. Although there are methods on automated prompt optimization in the natural language processing field, they are hard to produce effective prompts for the test case generation task. First, the methods iteratively optimize prompts by simply combining and mutating existing ones without proper guidance, resulting in prompts that lack diversity and tend to repeat the same errors in the generated test cases. Second, the prompts are generally lack of domain contextual knowledge, limiting LLMs' performance in the task.
academic
خيميائي الطلب: تحسين الطلب الآلي المخصص لنماذج اللغة الكبيرة لتوليد حالات الاختبار
تعتبر حالات الاختبار حاسمة للتحقق من موثوقية وجودة تطبيقات البرامج. أظهرت الأبحاث الحديثة أن نماذج اللغة الكبيرة (LLMs) لديها القدرة على توليد حالات اختبار مفيدة للكود المصدري المعطى. ومع ذلك، تعتمد الأعمال الموجودة بشكل أساسي على طلبات بسيطة مكتوبة يدويًا، مما يؤدي غالبًا إلى نتائج دون المستوى الأمثل، لأن أداء نماذج اللغة الكبيرة تعتمد بشكل كبير على جودة الطلب. علاوة على ذلك، تستخدم هذه الطرق نفس الطلب لجميع نماذج اللغة الكبيرة، متجاهلة حقيقة أن نماذج اللغة المختلفة قد تكون مناسبة بشكل أفضل لطلبات مختلفة. تقترح هذه الورقة طريقة MAPS التي تحقق تحسينًا آليًا للطلب مخصصًا لنماذج اللغة الكبيرة المختلفة من خلال ثلاث وحدات أساسية: توليد الطلب الموجه بالتنوع، واستقراء القواعد المدفوع بالفشل، واستخراج معرفة السياق المجالي.
يعتبر توليد حالات الاختبار مهمة حاسمة في هندسة البرمجيات. تعتمد الطرق التقليدية مثل Evosuite و Randoop على تقنيات البحث والقيود، بينما تظهر الطرق القائمة على نماذج اللغة الكبيرة إمكانيات، لكنها تعاني من المشاكل التالية:
الاعتماد على طلبات بسيطة مكتوبة يدويًا، مما يؤدي إلى أداء دون المستوى الأمثل
استخدام نفس الطلب لجميع نماذج اللغة الكبيرة، متجاهلة الاختلافات بين نماذج اللغة
بالنظر إلى نموذج الصندوق الأسود M، مجموعة تطوير صغيرة Ddev، مجموعة اختبار Dtest، ودالة تسجيل s(·)، يهدف APO إلى اكتشاف طلب محسّن p من فضاء اللغة الطبيعية بناءً على Ddev بحيث يتم تعظيم أداء M على مجموعة الاختبار Dtest.
تنشئ هذه الوحدة طلبات متنوعة من خلال استكشاف مسارات تعديل مختلفة:
الخوارزمية 2: تحسين الطلب
1. اختيار أفضل K طلب من حيث الأداء
2. توليد N طريقة تعديل مختلفة
3. توليد طلبات جديدة بناءً على كل طريقة تعديل
4. دمج الطلبات المختارة والطلبات المولدة الجديدة
الحالة 1 - Llama-3.1: من خلال القاعدة المستقرأة الثانية، ينجح النموذج في توليد حالات اختبار تتضمن معالجة الاستثناءات
الحالة 2 - ChatGPT: من خلال معرفة السياق عبر الملفات، يمكن للنموذج تهيئة الفئات المجردة بشكل صحيح
تستشهد الورقة بـ 48 مرجعًا ذا صلة، تغطي أعمالًا مهمة في مجالات الاختبار البرمجي، هندسة الطلب، ونماذج اللغة الكبيرة، مما يوفر أساسًا نظريًا متينًا للبحث.
التقييم الإجمالي: هذه ورقة بحثية عالية الجودة في مجال هندسة البرمجيات، ذات قيمة نظرية وعملية مهمة في مجال توليد حالات اختبار نموذج اللغة الكبيرة. تتمتع الطريقة بتصميم معقول، وتقييم تجريبي شامل، ونتائج مقنعة. على الرغم من وجود بعض القيود، فإن المساهمة الإجمالية كبيرة وتوفر دفعة مهمة لتطور هذا المجال.