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

LLMs में सॉफ्टवेयर टेस्टिंग को स्वचालित करने की संभावना: जनरेशन से रिपोर्टिंग तक

मूल जानकारी

  • पेपर ID: 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) की हाल की प्रगति ने सॉफ्टवेयर इंजीनियरिंग को महत्वपूर्ण रूप से प्रभावित किया है, विशेष रूप से आवश्यकता विश्लेषण, टेस्ट ऑटोमेशन और डिबगिंग जैसे क्षेत्रों में। यह पेपर एक एजेंट-उन्मुख स्वचालित सॉफ्टवेयर टेस्टिंग दृष्टिकोण का अन्वेषण करता है, जो मानवीय हस्तक्षेप को कम करने और टेस्टिंग दक्षता में सुधार के लिए LLMs का उपयोग करता है। प्रस्तावित ढांचा यूनिट टेस्ट जनरेट करने, कॉल ग्राफ को विज़ुअलाइज़ करने, और टेस्ट निष्पादन और रिपोर्टिंग को स्वचालित करने के लिए LLMs को एकीकृत करता है। Python और Java में कई एप्लिकेशन पर मूल्यांकन से पता चलता है कि सिस्टम उच्च टेस्ट कवरेज और कुशल निष्पादन क्षमता प्रदान करता है।

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

समस्या परिभाषा

  1. मुख्य समस्या: पारंपरिक सॉफ्टवेयर टेस्टिंग विधियों में दक्षता की कमी, उच्च लागत और अत्यधिक मानवीय हस्तक्षेप की समस्या है
  2. वास्तविक आवश्यकता: सॉफ्टवेयर गुणवत्ता आश्वासन के लिए व्यापक सत्यापन और पुष्टिकरण प्रक्रिया की आवश्यकता है, लेकिन मैनुअल टेस्टिंग आधुनिक सॉफ्टवेयर विकास की दक्षता आवश्यकताओं को पूरा नहीं कर सकती

महत्व विश्लेषण

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

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

  • मैनुअल टेस्टिंग: यद्यपि प्रभावी है लेकिन समय लेने वाली और महंगी है
  • पारंपरिक स्वचालित टेस्टिंग: मैनुअल विधि को पूरी तरह से प्रतिस्थापित नहीं कर सकती, GUI टेस्टिंग जैसे परिदृश्यों में अभी भी मानवीय भागीदारी की आवश्यकता है
  • पारंपरिक एजेंट-आधारित सॉफ्टवेयर टेस्टिंग (ABST): बुद्धिमान टेस्ट केस जनरेशन क्षमता की कमी है

अनुसंधान प्रेरणा

LLMs की शक्तिशाली क्षमताओं का लाभ उठाते हुए, बहु-एजेंट सिस्टम के साथ संयोजन में, एक ऐसा बुद्धिमान टेस्टिंग ढांचा बनाना जो गतिशील रूप से टेस्ट केस जनरेट कर सके, मानवीय इनपुट को महत्वपूर्ण रूप से कम कर सके, और टेस्ट केस निर्माण और निष्पादन समय को कम कर सके।

मुख्य योगदान

  1. LLM-आधारित बहु-एजेंट सॉफ्टवेयर टेस्टिंग ढांचा प्रस्तावित किया, जो टेस्ट जनरेशन से रिपोर्टिंग तक एंड-टू-एंड स्वचालन को लागू करता है
  2. चार-स्तरीय आर्किटेक्चर सिस्टम डिज़ाइन किया, जिसमें ऑडियो वेब क्लाइंट, सॉफ्टवेयर टेस्टिंग एजेंट, LLMs और विकास वातावरण शामिल है
  3. गतिशील टेस्ट केस जनरेशन लागू किया, जो LLMs का उपयोग करके स्वचालित रूप से अनुकूलित यूनिट टेस्ट और टेस्ट तर्क जनरेट करता है
  4. विज़ुअलाइज़ेशन कार्यक्षमता एकीकृत की, जो DOT ग्राफ प्रारूप में कॉल ग्राफ को स्वचालित रूप से जनरेट करता है ताकि एप्लिकेशन इंटरैक्शन को प्रदर्शित किया जा सके
  5. सिस्टम प्रभावशीलता को सत्यापित किया, Python और Java प्रोजेक्ट पर उच्च टेस्ट कवरेज (औसत 93.45%-97.71%) प्राप्त किया

विधि विवरण

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

इनपुट: उपयोगकर्ता द्वारा वॉयस या टेक्स्ट के माध्यम से प्रदान किए गए टेस्टिंग अनुरोध (प्रोजेक्ट नाम, सबफोल्डर, प्रोग्रामिंग भाषा आदि जानकारी सहित) आउटपुट: टेस्ट परिणाम, कवरेज विश्लेषण, टेस्ट तर्क और कॉल ग्राफ युक्त व्यापक PDF रिपोर्ट बाधाएं: Python और Java प्रोजेक्ट का समर्थन करता है, यूनिट टेस्ट स्तर पर ध्यान केंद्रित करता है

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

उच्च-स्तरीय आर्किटेक्चर

सिस्टम में चार मुख्य घटक हैं:

  1. ऑडियो वेब क्लाइंट: उपयोगकर्ता इनपुट (वॉयस कमांड या टेक्स्ट) को कैप्चर करता है, HTTP GET अनुरोध के माध्यम से टेस्टिंग वर्कफ़्लो शुरू करता है
  2. सॉफ्टवेयर टेस्टिंग एजेंट: सिस्टम का मुख्य घटक, घटकों के बीच इंटरैक्शन को समन्वित करता है, टेस्ट स्क्रिप्ट जनरेशन, निष्पादन और रिपोर्ट निर्माण के लिए एक अमूर्त परत के रूप में कार्य करता है
  3. बड़े भाषा मॉडल (LLMs): इकाई निष्कर्षण, टेस्ट जनरेशन और DOT ग्राफ जनरेशन कार्य निष्पादित करता है
  4. विकास वातावरण: प्रोजेक्ट कोड तक पहुंच प्रदान करता है, जनरेट किए गए टेस्ट केस को निष्पादित करता है और परिणाम प्रदर्शित करता है

निम्न-स्तरीय आर्किटेक्चर वर्कफ़्लो

  1. आरंभीकरण: क्लाइंट टेस्ट जनरेटर API को वॉयस कमांड भेजता है
  2. इकाई निष्कर्षण: LLM उपयोगकर्ता प्रॉम्प्ट से प्रोजेक्ट नाम, सबफोल्डर और प्रोग्रामिंग भाषा निकालता है
  3. फाइल स्थान: FileLocator मॉड्यूल निर्दिष्ट प्रोजेक्ट फोल्डर का पता लगाता है और फाइल सामग्री निकालता है
  4. टेस्ट जनरेशन: LLM (Gemini का उपयोग करके) यूनिट टेस्ट और संबंधित तर्क जनरेट करता है
  5. ग्राफ जनरेशन: LLM कॉल ग्राफ को विज़ुअलाइज़ करने के लिए DOT ग्राफ स्ट्रिंग जनरेट करता है
  6. निष्पादन और रिपोर्टिंग: टेस्ट एक्सीक्यूटर टेस्ट चलाता है, PDF रिपोर्ट जनरेटर परिणाम, कवरेज और कॉल ग्राफ युक्त व्यापक रिपोर्ट बनाता है

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

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

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

डेटासेट

विभिन्न जटिलता स्तरों के चार एप्लिकेशन का उपयोग:

Python प्रोजेक्ट:

  • Experiment: बुनियादी कैलकुलेटर कार्यक्षमता (47 लाइन कोड)
  • Cinema: सिनेमा हॉल प्रबंधन प्रणाली (183 लाइन कोड)

Java प्रोजेक्ट:

  • StudentAverage: छात्र ग्रेड गणना (114 लाइन कोड)
  • LibrarySystem: पुस्तकालय प्रबंधन प्रणाली (269 लाइन कोड)

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

  1. निष्पादन सफलता दर: सभी चरणों (टेस्ट जनरेशन, निष्पादन, PDF रिपोर्ट जनरेशन) को पूरा करने वाले रन का अनुपात
  2. टेस्ट कवरेज: जनरेट किए गए टेस्ट केस द्वारा कवर किए गए कोड का प्रतिशत
  3. निष्पादन समय: विभिन्न ऑपरेशन चरणों का समय विश्लेषण
  4. भाषा तुलना: Python बनाम Java प्रोजेक्ट का प्रदर्शन अंतर

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

  • LLM मॉडल: मुख्य रूप से Google Gemini का उपयोग, तुलनात्मक प्रयोग ChatGPT का उपयोग करते हैं
  • टेस्ट संख्या: Python प्रोजेक्ट 20 निष्पादन, Java प्रोजेक्ट 24 निष्पादन
  • इनपुट प्रारूप: कई प्राकृतिक भाषा प्रॉम्प्ट प्रारूप परीक्षण

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

मुख्य परिणाम

सफलता दर प्रदर्शन

  • Python प्रोजेक्ट: 20 निष्पादन सभी सफल (100% सफलता दर)
  • Java प्रोजेक्ट: 24 निष्पादन में 3 विफल (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.06s92.54s5.39s94.67%
StudentManagerJava11462.55s39.79s5.48s100.00%
CinemaPython183110.13s92.43s0.79s88.30%
ExperimentPython4749.78s34.17s0.96s98.60%

LLM तुलनात्मक प्रयोग

ChatGPT बनाम Gemini (LibrarySystem प्रोजेक्ट):

  • ChatGPT जनरेशन समय: ~180 सेकंड (Gemini का लगभग 2 गुना)
  • ChatGPT टेस्ट कवरेज: 98%
  • नोट: ChatGPT वेब एप्लिकेशन का उपयोग API के बजाय जनरेशन समय को प्रभावित कर सकता है

केस विश्लेषण

टेस्ट तर्क उदाहरण

Cinema प्रोजेक्ट - rent_movie फंक्शन:

  • बुनियादी केस: "उपलब्ध फिल्म को मौजूदा सदस्य को किराए पर देने का परीक्षण करें"
  • किनारे के केस: "गैर-मौजूद फिल्म किराए पर लेने का परीक्षण करें, फिल्म को गैर-मौजूद सदस्य को किराए पर दें, पहले से किराए पर दी गई फिल्म किराए पर लें"

Library प्रोजेक्ट - getTitle फंक्शन:

  • बुनियादी केस: "ऑब्जेक्ट निर्माण के बाद पुस्तक शीर्षक पुनः प्राप्त करने का परीक्षण करें"
  • किनारे के केस: लागू नहीं

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

पारंपरिक एजेंट-आधारित सॉफ्टवेयर टेस्टिंग (ABST)

  • विकास इतिहास: 1999 से ध्यान आकर्षित करना शुरू किया, पिछले दशक में महत्वपूर्ण चोटी तक पहुंचा
  • अनुप्रयोग फोकस: मुख्य रूप से सिस्टम-स्तरीय टेस्टिंग पर जोर, Java मुख्य लक्ष्य भाषा है
  • प्रतिनिधि कार्य:
    • वेब सिस्टम स्वचालित टेस्टिंग ढांचा (बहु-एजेंट सहयोग)
    • औद्योगिक कॉफी मशीन टेस्टिंग (फजी लॉजिक प्राथमिकता क्रमबद्धता)

LLM-संवर्धित सॉफ्टवेयर टेस्टिंग

  • उद्योग अनुप्रयोग सर्वेक्षण: 48% पेशेवरों ने पहले से ही LLMs को टेस्टिंग गतिविधियों में एकीकृत किया है
  • अनुप्रयोग क्षेत्र: आवश्यकता विश्लेषण, टेस्ट योजना विकास, टेस्ट स्वचालन
  • सामान्य उपकरण: ChatGPT, GitHub Copilot
  • अनुसंधान प्रवृत्ति: 102 संबंधित पेपर विश्लेषण से पता चलता है कि LLMs टेस्ट केस जनरेशन, अभिकथन निर्माण आदि में महत्वपूर्ण मूल्य रखते हैं

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

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

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

सीमाएं

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

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

  1. टेस्टिंग प्रकार विस्तार: एकीकरण टेस्टिंग और सिस्टम-स्तरीय टेस्टिंग समर्थन का परिचय दें
  2. भाषा समर्थन बढ़ाएं: अधिक प्रोग्रामिंग भाषाओं तक विस्तार करें
  3. विज़ुअलाइज़ेशन में सुधार: दोष प्रवृत्ति हीटमैप कवरेज जोड़ें
  4. आवश्यकता एकीकरण: सटीकता में सुधार के लिए आवश्यकता विनिर्देश दस्तावेज़ को प्रॉम्प्ट इनपुट के रूप में शामिल करें
  5. त्रुटि हैंडलिंग: अस्पष्ट प्रॉम्प्ट के लिए हैंडलिंग और त्रुटि पुनः प्राप्ति तंत्र में सुधार करें

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

शक्तियां

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

कमियां

  1. टेस्टिंग रेंज सीमा: केवल यूनिट टेस्टिंग का समर्थन करता है, संपूर्ण सॉफ्टवेयर टेस्टिंग आवश्यकताओं को पूरा नहीं कर सकता
  2. त्रुटि विश्लेषण अपर्याप्त: Java प्रोजेक्ट विफलता कारणों का गहन विश्लेषण सीमित है
  3. बेंचमार्क तुलना की कमी: मौजूदा स्वचालित टेस्टिंग उपकरणों के साथ विस्तृत तुलना की कमी है
  4. स्केलेबिलिटी सत्यापन: बड़े जटिल प्रोजेक्ट पर सिस्टम की स्केलेबिलिटी को सत्यापित नहीं किया गया है

प्रभाव

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

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

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

संदर्भ

पेपर 13 महत्वपूर्ण संदर्भों का हवाला देता है, जिसमें पारंपरिक ABST विधियां, सॉफ्टवेयर टेस्टिंग में LLM अनुप्रयोग, और सॉफ्टवेयर टेस्टिंग मौलिक सिद्धांत जैसे महत्वपूर्ण क्षेत्र शामिल हैं, जो अनुसंधान के लिए एक ठोस सैद्धांतिक आधार प्रदान करते हैं।


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