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
प्रॉम्प्ट एल्केमिस्ट: टेस्ट केस जेनरेशन के लिए स्वचालित LLM-अनुकूलित प्रॉम्प्ट अनुकूलन
टेस्ट केस सॉफ्टवेयर अनुप्रयोगों की विश्वसनीयता और गुणवत्ता को सत्यापित करने के लिए महत्वपूर्ण हैं। हाल के शोध से पता चलता है कि बड़े भाषा मॉडल (LLMs) दिए गए स्रोत कोड के लिए उपयोगी टेस्ट केस उत्पन्न करने की क्षमता रखते हैं। हालांकि, मौजूदा कार्य मुख्य रूप से मानव-लिखित सरल प्रॉम्प्ट पर निर्भर करते हैं, जिससे अक्सर उप-इष्टतम परिणाम मिलते हैं, क्योंकि LLMs का प्रदर्शन प्रॉम्प्ट की गुणवत्ता पर अत्यधिक निर्भर करता है। इसके अलावा, ये विधियां सभी LLMs के लिए एक ही प्रॉम्प्ट का उपयोग करती हैं, इस तथ्य को नजरअंदाज करते हुए कि विभिन्न LLMs के लिए विभिन्न प्रॉम्प्ट सर्वोत्तम हो सकते हैं। यह पेपर MAPS विधि प्रस्तावित करता है, जो विविधता-निर्देशित प्रॉम्प्ट जेनरेशन, विफलता-संचालित नियम प्रेरण और डोमेन संदर्भ ज्ञान निष्कर्षण के तीन मुख्य मॉड्यूल के माध्यम से विभिन्न LLMs के लिए स्वचालित प्रॉम्प्ट अनुकूलन को सक्षम बनाता है।
टेस्ट केस जेनरेशन सॉफ्टवेयर इंजीनियरिंग में एक महत्वपूर्ण कार्य है। Evosuite और Randoop जैसी पारंपरिक विधियां खोज और बाधा तकनीकों पर निर्भर करती हैं, जबकि LLM-आधारित विधियां संभावनाएं दिखाती हैं, लेकिन निम्नलिखित समस्याएं हैं:
मानव-लिखित सरल प्रॉम्प्ट पर निर्भरता, जिससे प्रदर्शन उप-इष्टतम है
सभी LLM के लिए एक ही प्रॉम्प्ट का उपयोग, LLM के बीच अंतर को नजरअंदाज करते हुए
टेस्ट केस जेनरेशन कार्य के लिए विशेष अनुकूलन की कमी
लेखकों ने प्रारंभिक प्रयोगों के माध्यम से पाया कि टेस्ट केस जेनरेशन कार्य पर मौजूदा स्वचालित प्रॉम्प्ट अनुकूलन (APO) विधियों की तीन मुख्य समस्याएं हैं:
कम विविधता: उत्पन्न प्रॉम्प्ट में विविधता की कमी, स्थानीय इष्टतम में फंसने की प्रवृत्ति
दोहराई गई त्रुटियां: अनुकूलित प्रॉम्प्ट अभी भी मूल प्रॉम्प्ट के समान त्रुटियां उत्पन्न करते हैं
डोमेन ज्ञान की कमी: आवश्यक प्रोजेक्ट-स्तरीय संदर्भ जानकारी की कमी, जैसे विरासत संबंध और वर्ग कॉल जानकारी
पहला अध्ययन: लेखकों के ज्ञान के अनुसार, यह टेस्ट केस जेनरेशन कार्य के लिए LLM अनुकूलित प्रॉम्प्ट अनुकूलन पर पहला विशेष अध्ययन है
नवीन विधि: MAPS विधि प्रस्तावित करता है, जो विविधता-निर्देशित प्रॉम्प्ट जेनरेशन, विफलता-संचालित नियम प्रेरण और डोमेन संदर्भ ज्ञान निष्कर्षण को एकीकृत करता है
महत्वपूर्ण सुधार: तीन लोकप्रिय LLM पर प्रयोगों से पता चलता है कि MAPS सबसे मजबूत आधारभूत विधि की तुलना में औसतन 6.19% लाइन कवरेज और 5.03% शाखा कवरेज में सुधार करता है
LLM अनुकूलन: विभिन्न LLM के लिए अनुकूलित प्रॉम्प्ट उत्पन्न करने की प्रभावशीलता को प्रमाणित करता है
ब्लैक-बॉक्स मॉडल M, छोटे विकास सेट Ddev, टेस्ट सेट Dtest और स्कोरिंग फ़ंक्शन s(·) दिए गए, APO का लक्ष्य Ddev के आधार पर प्राकृतिक भाषा स्थान से एक अनुकूलित प्रॉम्प्ट p खोजना है, जो टेस्ट सेट Dtest पर M के प्रदर्शन को अधिकतम करता है।
यह मॉड्यूल विभिन्न संशोधन पथों की खोज के माध्यम से विविध प्रॉम्प्ट बनाता है:
एल्गोरिदम 2: PROMPTIMPROVEMENT
1. प्रदर्शन में सर्वश्रेष्ठ K प्रॉम्प्ट का चयन करें
2. N विभिन्न संशोधन विधियां उत्पन्न करें
3. प्रत्येक संशोधन विधि के आधार पर नए प्रॉम्प्ट उत्पन्न करें
4. चयनित प्रॉम्प्ट और नई उत्पन्न प्रॉम्प्ट को मर्ज करें
केस 1 - Llama-3.1: दूसरे प्रेरित नियम के माध्यम से, मॉडल सही तरीके से अपवाद हैंडलिंग वाले टेस्ट केस उत्पन्न करता है
केस 2 - ChatGPT: फ़ाइल के पार संदर्भ ज्ञान के माध्यम से, मॉडल अमूर्त वर्गों को सही तरीके से शुरू कर सकता है
पेपर ने सॉफ्टवेयर परीक्षण, प्रॉम्प्ट इंजीनियरिंग, बड़े भाषा मॉडल और अन्य कई क्षेत्रों के महत्वपूर्ण कार्यों को शामिल करते हुए 48 संबंधित संदर्भों का हवाला दिया है, जो अनुसंधान के लिए एक ठोस सैद्धांतिक आधार प्रदान करता है।
समग्र मूल्यांकन: यह सॉफ्टवेयर इंजीनियरिंग अनुसंधान का एक उच्च गुणवत्ता वाला पेपर है, जिसमें LLM टेस्ट केस जेनरेशन क्षेत्र में महत्वपूर्ण सैद्धांतिक और व्यावहारिक मूल्य है। विधि डिज़ाइन तर्कसंगत है, प्रयोगात्मक मूल्यांकन व्यापक है, परिणाम विश्वसनीय हैं। हालांकि कुछ सीमाएं हैं, लेकिन समग्र योगदान महत्वपूर्ण है और इस क्षेत्र के विकास के लिए महत्वपूर्ण प्रेरणा प्रदान करता है।