1 पॉइंट द्वारा GN⁺ 2024-02-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Meta का नया LLM-आधारित टेस्ट जनरेटर डेवलपमेंट के भविष्य की एक झलक देता है

  • Meta ने "Automated Unit Test Improvement using Large Language Models at Meta" नामक एक पेपर प्रकाशित किया है.
  • यह पेपर दिखाता है कि AI का उपयोग करके डेवलपमेंट की गति कैसे बढ़ाई जा सकती है और सॉफ्टवेयर बग कैसे कम किए जा सकते हैं.
  • डेवलपर के workflow में LLM को इंटीग्रेट करते हुए, यह मौजूदा code coverage को बेहतर बनाने वाले सटीक और पूर्ण सॉफ्टवेयर सुधार प्रस्तावित करता है.

मुख्य बिंदु

  • TestGen-LLM 'Assured LLM-based Software Engineering' (Assured LLMSE) दृष्टिकोण का उपयोग करता है.
  • यह कई LLM, prompts और hyperparameters का उपयोग करके code improvement proposals बनाता है, और सबसे अच्छे सुधार को चुनने के लिए ensemble approach का उपयोग करता है.
  • TestGen-LLM को खास तौर पर मौजूदा मानव-लिखित tests को बेहतर बनाने के लिए डिज़ाइन किया गया है.

आँकड़े

  • Instagram के Reels और Stories प्रोडक्ट मूल्यांकन में, TestGen-LLM द्वारा बनाए गए 75% test cases सफलतापूर्वक build हुए, 57% भरोसेमंद तरीके से pass हुए, और 25% ने coverage बढ़ाया.
  • TestGen-LLM लागू किए गए सभी classes में से 10% को सुधार सका, और डेवलपर्स ने 73% test improvements को स्वीकार कर production में लागू किया.
  • Instagram की test coverage बढ़ाने के लिए tests बनाने वाले Meta इंजीनियरों के "test-a-thon" में, TestGen-LLM tests द्वारा जोड़ी गई code lines का median 2.5 था.

उपयोगी इनसाइट्स

  • यह एक अच्छा उदाहरण है कि LLM का उपयोग करके डेवलपमेंट productivity और software reliability को प्रभावी ढंग से कैसे बढ़ाया जा सकता है.
  • LLM की असली वैल्यू अप्रत्याशित edge cases को खोजने और पकड़ने में है.
  • LLM को production में इस्तेमाल करने के लिए orchestration, pipelines और processing की आवश्यकता होती है.

TestGen-LLM कैसे काम करता है

  • TestGen-LLM, Meta के internal LLM द्वारा तैयार किए गए candidate solutions पर semantic filters की एक श्रृंखला लागू करता है ताकि केवल सबसे मूल्यवान tests ही बचें.
  • फ़िल्टर 1: buildability, फ़िल्टर 2: execution (test pass हुआ या नहीं), फ़िल्टर 3: flakiness, फ़िल्टर 4: coverage improvement.
  • ये processing filters test suite में सुधार सुनिश्चित करते हैं.

निष्कर्ष

  • यह पेपर उन कई डेवलपर्स के लिए, जो पहले से LLM का उपयोग कर रहे हैं, software reliability क्षेत्र में LLM की प्रगति को ट्रैक करने का एक अच्छा तरीका है.
  • LLM धीरे-धीरे और अधिक जटिल software systems में bugs खोजने और tests करने में सक्षम होंगे.

GN⁺ की राय

  • यह लेख दिलचस्प इनसाइट देता है कि artificial intelligence सॉफ्टवेयर डेवलपमेंट के भविष्य को कैसे प्रभावित कर सकती है.
  • TestGen-LLM जैसे tools डेवलपर्स के काम को automate करने और efficiency बढ़ाने में बहुत मददगार हो सकते हैं.
  • ऐसी तकनीकों की प्रगति सॉफ्टवेयर डेवलपमेंट की जटिलता को कम करने, गुणवत्ता सुधारने और डेवलपर्स का समय बचाने की दिशा में बढ़ रही है.

1 टिप्पणियां

 
GN⁺ 2024-02-25
Hacker News राय
  • यह राय है कि LLM (Large Language Model) का उपयोग करके test code लिखना implementation से पहले किया जा रहा है, जो दिलचस्प है। क्योंकि tests यह बताने का काम करते हैं कि system को कैसे काम करना चाहिए, इसलिए कुछ लोगों के अनुसार यह हिस्सा इंसानों द्वारा परिभाषित किया जाना चाहिए। हालांकि, LLM उन क्षेत्रों की ओर इशारा करने में उपयोगी हो सकता है जो स्पष्ट रूप से निर्दिष्ट नहीं हैं, और ऐसे क्षेत्रों के लिए unit tests सुझाना LLM का एक उचित उपयोग हो सकता है.
  • Meta के TestGen-LLM द्वारा बनाए गए test cases में से अधिकांश ने अतिरिक्त रूप से सिर्फ 2.5 lines of code को cover किया, लेकिन एक test case ने 1326 lines को cover किया—इस बारे में ब्लॉग पोस्ट की आलोचना की गई है। यह एक असाधारण मामला था, और paper में स्पष्ट रूप से कहा गया है कि अधिकांश test cases अपेक्षित code coverage से बहुत कम थे। paper के authors ने इसे 'jackpot' कहा है और साफ किया है कि ऐसा परिणाम सामान्य नहीं है.
  • यह राय है कि अच्छे tests लिखना कठिन है। Code coverage हमेशा अच्छी चीज़ नहीं होती, और बहुत ज़्यादा tests program को rigid बना सकते हैं। LLM का उपयोग करके tests को फिर से generate करना प्रगति जैसा लग सकता है, लेकिन अंततः यह सिर्फ एक change detector program बनाने जैसा हो सकता है.
  • यह इंगित किया गया है कि TestGen-LLM पर paper का summary उसके वास्तविक contents से मेल नहीं खाता। paper का summary test cases के success rate का उल्लेख करता है, जबकि असली report test classes के success rate पर बात करती है, जो बहुत अलग दावा है। conclusion में भी इस अंतर को गलत तरीके से प्रस्तुत किया गया है.
  • भविष्य के उन developers के लिए सहानुभूति व्यक्त की गई है जिन्हें LLM द्वारा generated code को maintain करना होगा। चिंता है कि ऐसा code संभालना कठिन होगा.
  • यह चिंता है कि LLM से generated test code developers के लिए एक शत्रुतापूर्ण वातावरण बना सकता है। ऐसी स्थिति आ सकती है जहाँ कठिनाई से maintain होने वाले LLM-generated test code को बार-बार approve कराना पड़े। Test writing तेज़ हो सकती है, लेकिन maintenance ज़रूरी नहीं कि आसान हो। Tests code design की समीक्षा में मदद करते हैं, और अगर tests लिखना आसान नहीं है, तो शायद design अच्छा नहीं है। Tests automated reassurance देते हैं और संभावित errors को रोकने का काम करते हैं, लेकिन coverage बढ़ने के साथ investment पर utility घटती जाती है। LLM सिर्फ तब समय बचा सकता है जब अनुभवी developer को पहले से पता हो कि क्या test करना है.
  • GPT-4 का उपयोग करके TypeScript module के लिए unit tests generate करने का एक अनुभव साझा किया गया है, और बताया गया है कि इससे सफलतापूर्वक काम करने वाले tests बने.
  • यह सवाल उठाया गया है कि AI को कैसे पता चलेगा कि कौन से tests लिखने चाहिए। AI सॉफ्टवेयर development में सबसे अच्छी तरह तब मदद कर सकता है जब programmer code के बारे में सवाल पूछे और AI जवाब दे। कभी उसमें code suggestions शामिल हो सकते हैं और कभी नहीं भी। AI को code को समझने और उसे बेहतर बनाने के तरीके समझने में मदद करनी चाहिए.
  • यह राय है कि AI code पर सार्थक राय तभी हो सकती है जब किसी ने वास्तव में tools का उपयोग किया हो और किसी अच्छी तरह ज्ञात codebase में outputs की समीक्षा की हो। AI code एक बहुत political topic है और बहुत से लोगों की इस पर कड़ी राय है। फिर भी, इसे वास्तव में आज़माने की इच्छा है। यह तकनीक बहुत महंगी है, इसलिए अगर AI tools में बड़ा सुधार नहीं होता, तो उसकी लागत को सही ठहराना कठिन हो सकता है। इसके बावजूद, भविष्य में हासिल होने वाली प्रगति को लेकर आशावाद है.
  • paper के audiobook summary का लिंक दिया गया है.