• Airbnb ने लगभग 3,500 Enzyme-आधारित test files को React Testing Library(RTL) में अपने-आप migrate करने में सफलता पाई
  • मूल रूप से 1.5 साल लगने का अनुमान था, लेकिन LLM और automation pipeline की मदद से सिर्फ 6 हफ्तों में 3.5K test files अपडेट पूरी की गईं
  • automated validation, retry loop, dynamic prompts और large-scale context composition के जरिए automation की उच्च success rate हासिल की गई
  • अंततः कुल files में से 97% को अपने-आप convert किया गया, और बाकी को manually पूरा करके 100% कार्य समाप्त किया गया
  • इस अनुभव के आधार पर और जटिल migration कार्यों तथा LLM-आधारित development tools के विस्तार की योजना बनाई जा रही है

Airbnb का LLM-आधारित बड़े पैमाने का test migration

पृष्ठभूमि

  • Airbnb 2020 से नए tests के लिए React Testing Library(RTL) का उपयोग करते हुए Enzyme से transition शुरू कर चुका था
  • Enzyme का internal implementation तक गहराई से पहुँचने वाला तरीका आधुनिक React दर्शन से मेल नहीं खाता था, इसलिए इसे धीरे-धीरे हटाने की ज़रूरत उभरी
  • केवल हटाना test coverage में खालीपन पैदा कर सकता था, इसलिए intent और coverage को बनाए रखते हुए conversion आवश्यक था

migration रणनीति

1. चरण-आधारित validation और refactoring

  • files को state-based pipeline में व्यवस्थित किया गया, ताकि हर चरण की validation pass होने पर अगला चरण शुरू हो
  • failure होने पर LLM को बुलाकर fix की कोशिश की जाती थी; चरणों के उदाहरण: enzyme हटाना → jest संशोधन → lint/tsc pass → complete mark करना
  • सैकड़ों files को parallel process किया जा सकता था, सरल files जल्दी निपटती थीं, जबकि जटिल files को क्रमिक रूप से हल किया जाता था

2. retry loop और dynamic prompts

  • असफल चरणों को अधिकतम retry count तक बार-बार चलाया गया
  • हर प्रयास में, error message और संशोधित file को prompt में शामिल करके LLM को feedback दिया गया
  • सरल से मध्यम कठिनाई वाली अधिकांश files 10 से कम प्रयासों में सफल रहीं

3. prompt context का विस्तार

  • जटिल files केवल साधारण retry से हल नहीं हुईं, इसलिए अधिक समृद्ध context देने के तरीके पर स्विच किया गया
  • अधिकतम 100K tokens तक context बनाया गया, जिसमें शामिल थे:
    • संबंधित component का source code
    • मौजूदा Enzyme tests
    • पास की tests और examples (few-shot prompting)
    • टीम की internal style और common patterns
  • मुख्य बात उच्च-गुणवत्ता वाली संबंधित files का चयन था; prompt की भाषा से ज़्यादा महत्वपूर्ण यह था कि "क्या शामिल किया जाए"

4. 75% से 97% तक पहुँचना: व्यवस्थित सुधार

  • automation से 75% conversion के बाद, बाकी 25% में 900 files failure state में थीं
  • समस्या विश्लेषण और सुधार का दोहराव:
    1. failed files की common issues इकट्ठा करना
    2. representative samples चुनना (5~10)
    3. prompts/scripts में सुधार
    4. samples पर test लागू करने के बाद पूरे सेट पर फिर से प्रयास
  • 4 दिनों तक यह प्रक्रिया दोहराने से automation completion rate 97% तक पहुँच गई

बाकी 3% को manually संभाला गया

  • कुछ files 100 से अधिक retries के बाद भी सफल नहीं हुईं, इसलिए automated refactoring के परिणामों के आधार पर manual fixes किए गए
  • automation की वजह से यह भी न्यूनतम प्रयास में अंतिम रूप से पूरा किया गया

परिणाम और प्रभाव

  • automation की पहली run में 4 घंटे के भीतर 75% migration पूरा हो गया
  • 4 दिनों के iterative improvements के बाद 97% automation पूरा हुआ
  • बाकी manual work सहित पूरी transition 6 हफ्तों के भीतर 100% पूरी हुई
  • test intent और coverage को बनाए रखते हुए Enzyme को पूरी तरह हटाया गया
  • LLM API लागत और engineering resources शामिल करने पर भी यह हाथ से किए जाने वाले काम की तुलना में बहुत अधिक efficient approach थी

अगले चरण

  • इस अनुभव के आधार पर LLM का उपयोग करके और बड़े पैमाने पर code transformation automation शुरू करने की तैयारी है
  • जटिल refactoring, structural changes आदि में भी इसके उपयोग की संभावना तलाश की जा रही है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.