2025-11-21T20:19:23.757806

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-अनुकूलित प्रॉम्प्ट अनुकूलन

मूल जानकारी

  • पेपर ID: 2501.01329
  • शीर्षक: प्रॉम्प्ट एल्केमिस्ट: टेस्ट केस जेनरेशन के लिए स्वचालित LLM-अनुकूलित प्रॉम्प्ट अनुकूलन
  • लेखक: Shuzheng Gao, Chaozheng Wang, Cuiyun Gao, Xiaoqian Jiao, Chun Yong Chong, Shan Gao, Michael R. Lyu
  • वर्गीकरण: cs.SE cs.AI cs.CL
  • प्रकाशन समय/सम्मेलन: JOURNAL OF LATEX CLASS FILES, VOL. 18, NO. 9, SEPTEMBER 2020
  • पेपर लिंक: https://arxiv.org/abs/2501.01329

सारांश

टेस्ट केस सॉफ्टवेयर अनुप्रयोगों की विश्वसनीयता और गुणवत्ता को सत्यापित करने के लिए महत्वपूर्ण हैं। हाल के शोध से पता चलता है कि बड़े भाषा मॉडल (LLMs) दिए गए स्रोत कोड के लिए उपयोगी टेस्ट केस उत्पन्न करने की क्षमता रखते हैं। हालांकि, मौजूदा कार्य मुख्य रूप से मानव-लिखित सरल प्रॉम्प्ट पर निर्भर करते हैं, जिससे अक्सर उप-इष्टतम परिणाम मिलते हैं, क्योंकि LLMs का प्रदर्शन प्रॉम्प्ट की गुणवत्ता पर अत्यधिक निर्भर करता है। इसके अलावा, ये विधियां सभी LLMs के लिए एक ही प्रॉम्प्ट का उपयोग करती हैं, इस तथ्य को नजरअंदाज करते हुए कि विभिन्न LLMs के लिए विभिन्न प्रॉम्प्ट सर्वोत्तम हो सकते हैं। यह पेपर MAPS विधि प्रस्तावित करता है, जो विविधता-निर्देशित प्रॉम्प्ट जेनरेशन, विफलता-संचालित नियम प्रेरण और डोमेन संदर्भ ज्ञान निष्कर्षण के तीन मुख्य मॉड्यूल के माध्यम से विभिन्न LLMs के लिए स्वचालित प्रॉम्प्ट अनुकूलन को सक्षम बनाता है।

अनुसंधान पृष्ठभूमि और प्रेरणा

1. मुख्य समस्या

टेस्ट केस जेनरेशन सॉफ्टवेयर इंजीनियरिंग में एक महत्वपूर्ण कार्य है। Evosuite और Randoop जैसी पारंपरिक विधियां खोज और बाधा तकनीकों पर निर्भर करती हैं, जबकि LLM-आधारित विधियां संभावनाएं दिखाती हैं, लेकिन निम्नलिखित समस्याएं हैं:

  • मानव-लिखित सरल प्रॉम्प्ट पर निर्भरता, जिससे प्रदर्शन उप-इष्टतम है
  • सभी LLM के लिए एक ही प्रॉम्प्ट का उपयोग, LLM के बीच अंतर को नजरअंदाज करते हुए
  • टेस्ट केस जेनरेशन कार्य के लिए विशेष अनुकूलन की कमी

2. समस्या की महत्ता

  • टेस्ट केस को मैन्युअल रूप से लिखना समय लेने वाला और कठिन है
  • उच्च गुणवत्ता वाले टेस्ट केस सॉफ्टवेयर गुणवत्ता आश्वासन के लिए महत्वपूर्ण हैं
  • कोड समझ और जेनरेशन में LLM की शक्तिशाली क्षमता को प्रॉम्प्ट अनुकूलन के माध्यम से पूरी तरह से उपयोग करने की आवश्यकता है

3. मौजूदा विधियों की सीमाएं

लेखकों ने प्रारंभिक प्रयोगों के माध्यम से पाया कि टेस्ट केस जेनरेशन कार्य पर मौजूदा स्वचालित प्रॉम्प्ट अनुकूलन (APO) विधियों की तीन मुख्य समस्याएं हैं:

  • कम विविधता: उत्पन्न प्रॉम्प्ट में विविधता की कमी, स्थानीय इष्टतम में फंसने की प्रवृत्ति
  • दोहराई गई त्रुटियां: अनुकूलित प्रॉम्प्ट अभी भी मूल प्रॉम्प्ट के समान त्रुटियां उत्पन्न करते हैं
  • डोमेन ज्ञान की कमी: आवश्यक प्रोजेक्ट-स्तरीय संदर्भ जानकारी की कमी, जैसे विरासत संबंध और वर्ग कॉल जानकारी

मुख्य योगदान

  1. पहला अध्ययन: लेखकों के ज्ञान के अनुसार, यह टेस्ट केस जेनरेशन कार्य के लिए LLM अनुकूलित प्रॉम्प्ट अनुकूलन पर पहला विशेष अध्ययन है
  2. नवीन विधि: MAPS विधि प्रस्तावित करता है, जो विविधता-निर्देशित प्रॉम्प्ट जेनरेशन, विफलता-संचालित नियम प्रेरण और डोमेन संदर्भ ज्ञान निष्कर्षण को एकीकृत करता है
  3. महत्वपूर्ण सुधार: तीन लोकप्रिय LLM पर प्रयोगों से पता चलता है कि MAPS सबसे मजबूत आधारभूत विधि की तुलना में औसतन 6.19% लाइन कवरेज और 5.03% शाखा कवरेज में सुधार करता है
  4. LLM अनुकूलन: विभिन्न LLM के लिए अनुकूलित प्रॉम्प्ट उत्पन्न करने की प्रभावशीलता को प्रमाणित करता है

विधि विवरण

कार्य परिभाषा

ब्लैक-बॉक्स मॉडल M, छोटे विकास सेट Ddev, टेस्ट सेट Dtest और स्कोरिंग फ़ंक्शन s(·) दिए गए, APO का लक्ष्य Ddev के आधार पर प्राकृतिक भाषा स्थान से एक अनुकूलित प्रॉम्प्ट p खोजना है, जो टेस्ट सेट Dtest पर M के प्रदर्शन को अधिकतम करता है।

मॉडल आर्किटेक्चर

MAPS में तीन मुख्य मॉड्यूल हैं:

1. डोमेन संदर्भ ज्ञान निष्कर्षण (Domain Contextual Knowledge Extraction)

यह मॉड्यूल LLM को प्रासंगिक प्रोजेक्ट-स्तरीय संदर्भ जानकारी प्रदान करता है:

फ़ाइल के भीतर संदर्भ ज्ञान:

  • वर्ग हस्ताक्षर: फोकस विधि वाले वर्ग का प्रकार और नाम
  • फोकस विधि: जिसके लिए टेस्ट केस उत्पन्न करने की आवश्यकता है
  • सदस्य विधि हस्ताक्षर: वर्ग के भीतर अन्य विधियों के फ़ंक्शन हस्ताक्षर

फ़ाइल के पार संदर्भ ज्ञान:

  • वर्ग विरासत जानकारी: अमूर्त या निजी वर्गों के लिए, पूरे प्रोजेक्ट को स्कैन करके उनके उप-वर्ग खोजें
  • वर्ग कॉल जानकारी: फोकस विधि पैरामीटर प्रकारों की पहचान करें, उपयोगकर्ता-परिभाषित प्रकारों की परिभाषा और निर्माणकर्ता को ट्रैक करें

2. विविधता-निर्देशित प्रॉम्प्ट जेनरेशन (Diversity-guided Prompt Generation)

यह मॉड्यूल विभिन्न संशोधन पथों की खोज के माध्यम से विविध प्रॉम्प्ट बनाता है:

एल्गोरिदम 2: PROMPTIMPROVEMENT
1. प्रदर्शन में सर्वश्रेष्ठ K प्रॉम्प्ट का चयन करें
2. N विभिन्न संशोधन विधियां उत्पन्न करें
3. प्रत्येक संशोधन विधि के आधार पर नए प्रॉम्प्ट उत्पन्न करें
4. चयनित प्रॉम्प्ट और नई उत्पन्न प्रॉम्प्ट को मर्ज करें

3. विफलता-संचालित नियम प्रेरण (Failure-driven Rule Induction)

यह मॉड्यूल विफल टेस्ट केस का विश्लेषण करके नियमों को प्रेरित करता है ताकि दोहराई गई त्रुटियों से बचा जा सके:

विफलता जानकारी चयन:

  • विफल टेस्ट केस और त्रुटि जानकारी एकत्र करें
  • DBSCAN क्लस्टरिंग एल्गोरिदम का उपयोग करके विफलता जानकारी को एकत्रित करें
  • क्लस्टर आकार और ऐतिहासिक विफलताओं के साथ समानता के आधार पर भारित नमूनाकरण करें

त्रुटि प्रतिबिंब:

  • प्रतिबिंब प्रॉम्प्ट बनाने के लिए प्रतिनिधि विफलता मामलों का चयन करें
  • LLM को विस्तृत व्याख्या और समाधान प्रदान करने के लिए कहें
  • व्याख्या और समाधान को संक्षिप्त नियमों में परिवर्तित करें

नियम सत्यापन:

  • प्रत्येक नई उत्पन्न नियम की वैधता को सत्यापित करें
  • सर्वोत्तम प्रदर्शन वाले नियमों को बनाए रखें

तकनीकी नवाचार बिंदु

  1. विविधता आश्वासन: विभिन्न संशोधन विधियों के अनिवार्य उपयोग के माध्यम से प्रॉम्प्ट विविधता सुनिश्चित करता है, स्थानीय इष्टतम से बचता है
  2. विफलता से सीखना: विफल मामलों से सीखता है, नियम प्रेरण के माध्यम से अनुकूलन प्रक्रिया को निर्देशित करता है
  3. संदर्भ वृद्धि: प्रोजेक्ट-स्तरीय संदर्भ जानकारी प्रदान करता है, LLM को सटीक टेस्ट केस उत्पन्न करने में मदद करता है
  4. नरम एकीकरण: प्रतिबिंब आउटपुट को संक्षिप्त नियमों में परिवर्तित करता है, लंबे प्रॉम्प्ट से प्रदर्शन में गिरावट से बचता है

प्रयोगात्मक सेटअप

डेटासेट

व्यापक रूप से अपनाए गए Defects4J बेंचमार्क का उपयोग करता है, जिसमें 5 Java प्रोजेक्ट हैं:

  • Apache Commons CLI (29 बग)
  • Apache Commons CSV (15 बग)
  • Google Gson (17 बग)
  • JFreeChart (26 बग)
  • Apache Commons Lang (60 बग)
  • कुल: 147 बग, 85 फोकस वर्ग, 5,278 फोकस विधियां

मूल्यांकन मेट्रिक्स

  • लाइन कवरेज (%): परीक्षण के दौरान निष्पादित कोड लाइनों का प्रतिशत
  • शाखा कवरेज (%): परीक्षण के दौरान निष्पादित शाखाओं का प्रतिशत

तुलना विधियां

LLM मॉडल:

  • ChatGPT (gpt-3.5-turbo-0125)
  • Llama-3.1-70B-Instruct
  • Qwen2-72B-Instruct

आधारभूत विधियां:

  • Basic: सर्वश्रेष्ठ बीज प्रॉम्प्ट प्रदर्शन
  • APE: LLM से सीधे शब्दार्थ-संरक्षण प्रॉम्प्ट वेरिएंट उत्पन्न करने के लिए कहें
  • OPRO: प्रदर्शन जानकारी के साथ नए प्रॉम्प्ट उत्पन्न करें
  • EVOPROMPT (GA/DE): विकासवादी एल्गोरिदम पर आधारित नवीनतम प्रॉम्प्ट अनुकूलन विधि

कार्यान्वयन विवरण

  • बीज प्रॉम्प्ट संख्या: 5
  • प्रति राउंड उत्पन्न प्रॉम्प्ट संख्या: 2
  • अधिकतम पुनरावृत्ति संख्या: 5
  • विकास सेट: 10 बग का यादृच्छिक नमूनाकरण
  • औसत परिणाम रिपोर्ट करने के लिए 3 बार प्रयोग दोहराएं

प्रयोगात्मक परिणाम

मुख्य परिणाम

ChatGPT पर प्रदर्शन:

  • लाइन कवरेज: MAPS 53.80% तक पहुंचता है, सबसे मजबूत आधारभूत EVOPROMPT(GA) 46.63% है, 7.17% सुधार
  • शाखा कवरेज: MAPS 41.84% तक पहुंचता है, सबसे मजबूत आधारभूत 35.88% है, 5.96% सुधार

Llama-3.1 पर प्रदर्शन:

  • लाइन कवरेज: MAPS 50.59% तक पहुंचता है, सबसे मजबूत आधारभूत 46.52% है, 4.07% सुधार
  • शाखा कवरेज: MAPS 39.50% तक पहुंचता है, सबसे मजबूत आधारभूत 35.07% है, 4.43% सुधार

Qwen2 पर प्रदर्शन:

  • लाइन कवरेज: MAPS 45.51% तक पहुंचता है, सबसे मजबूत आधारभूत 39.41% है, 6.10% सुधार
  • शाखा कवरेज: MAPS 32.71% तक पहुंचता है, सबसे मजबूत आधारभूत 28.92% है, 3.79% सुधार

विलोपन प्रयोग

मॉड्यूल योगदान विश्लेषण (ChatGPT के उदाहरण के रूप में):

  • डोमेन संदर्भ ज्ञान निष्कर्षण को हटाएं: लाइन कवरेज 9.64% गिरता है, शाखा कवरेज 8.53% गिरता है
  • विविधता-निर्देशित प्रॉम्प्ट जेनरेशन को हटाएं: लाइन कवरेज 8.21% गिरता है, शाखा कवरेज 7.80% गिरता है
  • विफलता-संचालित नियम प्रेरण को हटाएं: लाइन कवरेज 6.94% गिरता है, शाखा कवरेज 4.76% गिरता है

LLM अनुकूलन प्रभाव

प्रयोग ने सत्यापित किया कि MAPS विभिन्न LLM के लिए अनुकूलित प्रॉम्प्ट उत्पन्न कर सकता है:

  • प्रत्येक LLM अपने विशेष अनुकूलित प्रॉम्प्ट पर सर्वश्रेष्ठ प्रदर्शन करता है
  • ChatGPT का अंतिम प्रॉम्प्ट ChatGPT पर अन्य LLM के प्रॉम्प्ट की तुलना में क्रमशः 2.45% और 2.66% अधिक लाइन कवरेज है
  • MAPS द्वारा अनुकूलित प्रॉम्प्ट सभी मैन्युअल रूप से डिज़ाइन किए गए प्रॉम्प्ट से बेहतर हैं

केस विश्लेषण

केस 1 - Llama-3.1: दूसरे प्रेरित नियम के माध्यम से, मॉडल सही तरीके से अपवाद हैंडलिंग वाले टेस्ट केस उत्पन्न करता है केस 2 - ChatGPT: फ़ाइल के पार संदर्भ ज्ञान के माध्यम से, मॉडल अमूर्त वर्गों को सही तरीके से शुरू कर सकता है

संबंधित कार्य

स्वचालित प्रॉम्प्ट अनुकूलन

  • APE: LLM से सीधे शब्दार्थ-संरक्षण प्रॉम्प्ट वेरिएंट उत्पन्न करने के लिए कहें
  • OPRO: प्रदर्शन जानकारी के साथ प्रॉम्प्ट जेनरेशन को निर्देशित करें
  • EVOPROMPT: विकासवादी एल्गोरिदम पर आधारित नवीनतम विधि

टेस्ट केस जेनरेशन

  • पारंपरिक विधियां: Randoop (यादृच्छिक फजिंग), Evosuite (खोज एल्गोरिदम)
  • गहन शिक्षा विधियां: AthenaTest (सूक्ष्म-ट्यून BART), A3Test (अभिकथन ज्ञान वृद्धि)
  • LLM विधियां: ChatUniTest, ChatTESTER आदि

निष्कर्ष और चर्चा

मुख्य निष्कर्ष

  1. MAPS सभी LLM पर मौजूदा प्रॉम्प्ट अनुकूलन विधियों से महत्वपूर्ण रूप से बेहतर है
  2. विभिन्न LLM को वास्तव में अनुकूलित प्रॉम्प्ट की आवश्यकता है
  3. तीनों मुख्य मॉड्यूल प्रदर्शन सुधार में महत्वपूर्ण योगदान देते हैं, जिसमें डोमेन संदर्भ ज्ञान निष्कर्षण सबसे बड़ा योगदान देता है

सीमाएं

  1. LLM सीमाएं: केवल तीन प्रतिनिधि LLM पर मूल्यांकन किया गया
  2. भाषा सीमाएं: प्रयोग केवल Java प्रोजेक्ट तक सीमित हैं, अन्य प्रोग्रामिंग भाषाओं को शामिल नहीं करते
  3. डेटासेट रेंज: केवल Defects4J बेंचमार्क का उपयोग किया गया

भविष्य की दिशाएं

  1. अधिक LLM और प्रोग्रामिंग भाषाओं तक विस्तार करें
  2. मौजूदा LLM टेस्ट जेनरेशन विधियों के साथ संयोजन करें
  3. अधिक जटिल प्रोजेक्ट-स्तरीय संदर्भ जानकारी की खोज करें

गहन मूल्यांकन

शक्तियां

  1. समस्या परिभाषा स्पष्ट: LLM टेस्ट केस जेनरेशन के प्रॉम्प्ट अनुकूलन समस्या का पहला व्यवस्थित अध्ययन
  2. विधि नवाचार मजबूत: तीन मॉड्यूल का डिज़ाइन तर्कसंगत है, मौजूदा विधियों की मुख्य समस्याओं को हल करता है
  3. प्रयोग व्यापक: कई LLM, कई प्रोजेक्ट पर व्यापक मूल्यांकन किया गया
  4. व्यावहारिक मूल्य उच्च: विधि सामान्य है, विभिन्न LLM और प्रोजेक्ट पर लागू की जा सकती है

कमियां

  1. कम्प्यूटेशनल लागत: पुनरावृत्तीय अनुकूलन प्रक्रिया को बड़ी संख्या में API कॉल की आवश्यकता हो सकती है, लागत अधिक है
  2. नियम गुणवत्ता: विफलता-संचालित नियम प्रेरण LLM की प्रतिबिंब क्षमता पर निर्भर करता है, नियम गुणवत्ता अस्थिर हो सकती है
  3. संदर्भ निष्कर्षण: फ़ाइल के पार संदर्भ निष्कर्षण की पूर्णता और सटीकता को आगे सत्यापित करने की आवश्यकता है

प्रभाव

  1. शैक्षणिक योगदान: LLM टेस्ट केस जेनरेशन के प्रॉम्प्ट अनुकूलन अनुसंधान दिशा को शुरू करता है
  2. व्यावहारिक मूल्य: वास्तविक सॉफ्टवेयर विकास में टेस्ट केस जेनरेशन पर सीधे लागू किया जा सकता है
  3. पुनरुत्पादनीयता: पूर्ण पुनरुत्पादन पैकेज प्रदान करता है, बाद के अनुसंधान को सुविधाजनक बनाता है

लागू परिदृश्य

  1. उच्च गुणवत्ता वाले टेस्ट केस स्वचालित रूप से उत्पन्न करने की आवश्यकता वाली सॉफ्टवेयर प्रोजेक्ट
  2. कोड जेनरेशन के लिए विभिन्न LLM का उपयोग करने वाली टीमें
  3. LLM प्रदर्शन को अनुकूलित करने की आवश्यकता वाले सॉफ्टवेयर इंजीनियरिंग कार्य

संदर्भ

पेपर ने सॉफ्टवेयर परीक्षण, प्रॉम्प्ट इंजीनियरिंग, बड़े भाषा मॉडल और अन्य कई क्षेत्रों के महत्वपूर्ण कार्यों को शामिल करते हुए 48 संबंधित संदर्भों का हवाला दिया है, जो अनुसंधान के लिए एक ठोस सैद्धांतिक आधार प्रदान करता है।


समग्र मूल्यांकन: यह सॉफ्टवेयर इंजीनियरिंग अनुसंधान का एक उच्च गुणवत्ता वाला पेपर है, जिसमें LLM टेस्ट केस जेनरेशन क्षेत्र में महत्वपूर्ण सैद्धांतिक और व्यावहारिक मूल्य है। विधि डिज़ाइन तर्कसंगत है, प्रयोगात्मक मूल्यांकन व्यापक है, परिणाम विश्वसनीय हैं। हालांकि कुछ सीमाएं हैं, लेकिन समग्र योगदान महत्वपूर्ण है और इस क्षेत्र के विकास के लिए महत्वपूर्ण प्रेरणा प्रदान करता है।