टेस्ट जनरेशनसाठी AI: कुठे मदत करते आणि कुठे फसवते

AI वेगाने टेस्ट्स लिहितो. पण ते अशा टेस्ट्स देखील लिहितो ज्या खऱ्या वाटतात पण चुकीच्या गोष्टी तपासतात.

तुम्ही एखादे फंक्शन AI मध्ये पेस्ट करता. तीस सेकंदात तुमच्याकडे बारा पास झालेल्या टेस्ट्स तयार असतात. तुमचा कव्हरेज स्कोअर वाढतो. तुम्हाला वाटते की तुम्ही खूप उत्पादक (productive) आहात.

मग प्रोडक्शनमध्ये एक बग येतो. तुम्ही त्या बारा टेस्ट्स पाहता आणि तुम्हाला जाणीव होते की त्यांपैकी एकही टेस्ट तो बग पकडू शकली नसती.

AI ने तुमचे कोड काय करत आहे ते तपासले, तुमचे कोड काय करायला हवे ते नाही.

AI उपयुक्त आहे, पण तुम्हाला ते कसे वापरायचे हे माहित असणे आवश्यक आहे.

AI कुठे यशस्वी ठरते:

  • सेटअप आणि टीअरडाउन ब्लॉक्ससारखे बॉयलरप्लेट (boilerplate) कोड तयार करणे.
  • वारंवार लागणारे फॅक्टरी हेल्पर्स आणि डेटा ऑब्जेक्ट्स लिहिणे.
  • एका चांगल्या टेस्ट पॅटर्नचे अनेक प्रकार तयार करणे.
  • null, रिकाम्या स्ट्रिंग्स (empty strings) किंवा शून्य (zero) सारखे स्पष्ट एज केसेस (edge cases) हाताळणे.

AI कुठे अपयशी ठरते:

  • इम्प्लीमेंटेशन-आधारित टेस्ट्स: ते बिझनेस लॉजिकऐवजी कोडच्या स्ट्रक्चरनुसार टेस्ट्स लिहिते. जर तुम्ही कोड रिफॅक्टर (refactor) केला, तर रिझल्ट योग्य असूनही टेस्ट्स फेल होतात.
  • वरवरचे एज केसेस: ते स्पष्ट चुका शोधते पण डोमेन-विशिष्ट (domain-specific) बग्स misses करते. त्याला तुमचे टाइमझोनचे बारकावे, डेटाबेसचे निर्बंध (constraints) किंवा तुमचे विशिष्ट बिझनेस रूल्स माहित नसतात.
  • नाजूक मॉक्स (Brittle mocks): ते अशा अंतर्गत सेवांचे (internal services) मॉकिंग करते ज्या खऱ्या असायला हव्यात. यामुळे टेस्ट्स मेंटेन करणे कठीण होते आणि रिफॅक्टरिंग दरम्यान त्या सहज तुटतात.

"test theater" तयार न करता AI कसे वापरावे:

  1. प्रथम कॉन्ट्रॅक्ट (contract) परिभाषित करा. टेस्टने काय सिद्ध केले पाहिजे याबद्दल साध्या इंग्रजीत एक वाक्य लिहा. उदाहरण: "An expired code must return the original amount."
  2. ते वाक्य AI ला द्या. AI ला कोड लिहू द्या, पण त्यामागचा उद्देश (intent) तुमचा असावा.
  3. फक्त बाउंड्रीवर (boundary) मॉकिंग करा. तुमच्या अंतर्गत मॉड्यूल्ससाठी रिअल इन्स्टन्स वापरा. फक्त बाह्य (external) APIs किंवा डेटाबेसचे मॉकिंग करा.
  4. एक डोमेन एज केस स्वतः हाताने लिहा. AI "स्पष्ट" एज केसेस हाताळते. तुम्हाला "रात्री ३ वाजताच्या" (3 AM) अशा एज केसेस हाताळाव्या लागतील ज्या खरोखर प्रोडक्शनमध्ये समस्या निर्माण करतात.

टेस्ट काय तपासते हे ठरवण्याचा निर्णय AI ला घेऊ देऊ नका. कोड टाईप करण्यासाठी त्याचा वापर करा, पण लॉजिक तुम्ही द्या.

स्रोत: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm