एजंटद्वारे लिहिलेल्या कोडसाठी म्यूटेशन टेस्टिंग
LLM-द्वारे तयार केलेले टेस्ट सूट्स (test suites) १००% लाईन आणि ब्रांच कव्हरेज गाठू शकतात, परंतु एका अलीकडील अभ्यासानुसार म्यूटेशन टेस्टिंगमध्ये त्यांचा स्कोअर केवळ ४% आहे, ज्यामुळे विश्वासार्हतेतील अशी तफावत समोर येते जी डेव्हलपर्स कदाचित स्प्रिंट रिव्ह्यूमध्ये (sprint reviews) मिस करू शकतात.
संशोधकांनी HumanEval-Java बेंचमार्कवर लार्ज-लँग्वेज-मॉडेल कोडिंग एजंट्सद्वारे तयार केलेल्या टेस्ट सूट्सचे मूल्यमापन केले. एका सूटमध्ये कोडची प्रत्येक लाईन कव्हर झाली होती आणि प्रत्येक कंडिशनल ब्रांच (conditional branch) तपासली गेली होती. जेव्हा त्याच सूटवर म्यूटेशन टेस्टिंग—एक अशी पद्धत ज्यामध्ये टेस्ट्स दोष शोधू शकतात की नाही हे पाहण्यासाठी लहान दोष (faults) टाकले जातात—केले गेले, तेव्हा त्याने इंजेक्ट केलेल्या बग्सपैकी (bugs) केवळ अत्यल्प भागच पकडला.
कव्हरेज चांगले दिसते, पण त्याचा खरा अर्थ काय?
पारंपारिक कव्हरेज मेट्रिक्स (coverage metrics) एखादी टेस्ट किती स्टेटमेंट्स किंवा ब्रँचेस रन करते याची गणना करतात. स्प्रिंट डेमोमध्ये (sprint demos) दिसणारे हे मोठे आकडे टीम्सना खूप आवडतात. तथापि, कोड चुकीचा असल्यास टेस्ट फेल होईल की नाही, याबद्दल हे मेट्रिक काहीही सांगत नाही. म्यूटेशन टेस्टिंगमध्ये मुद्दाम दोष (mutants) निर्माण केले जातात आणि त्यातील किती मुटंट्समुळे टेस्ट फेल होते—याचे प्रमाण मोजले जाते, ज्याला "म्यूटेशन स्कोअर" (mutation score) म्हणतात; यामुळे ही तफावत भरून निघते.
या अभ्यासात, १००% कव्हरेज असलेल्या सूटने लीप-इयरच्या तारखा हाताळण्यातील चुकांसारख्या साध्या लॉजिक एरर्ससह (logic errors) जवळजवळ प्रत्येक म्यूटंट मिस केला. ४% म्यूटेशन स्कोअरचा अर्थ असा आहे की, हा सूट केवळ काही मोजकेच वास्तविक बग्स शोधू शकेल.
AI-आधारित डेव्हलपमेंटसाठी हे का महत्त्वाचे आहे
- खोटा आत्मविश्वास: डेव्हलपर्स कागदावर परिपूर्ण दिसणाऱ्या टेस्ट सूटवर विश्वास ठेवू शकतात.
- लपलेले दोष: अनेक बग्स न समजताच सुटून जातात.
- दुरुस्तीचा खर्च: बग्स सुरुवातीला पकडण्यापेक्षा नंतर दुरुस्त करणे खूप महाग पडते.
प्रतिवाद: कव्हरेज निरुपयोगी नाही
कव्हरेज अजूनही तुम्हाला कोड पाथ्स (code paths) रन होतात की नाही हे सांगते, परंतु ते दोष शोधण्याची (fault detection) खात्री देत नाही.
पुढे काय पाहावे
- टूलिंग इंटिग्रेशन: म्यूटेशन टेस्टिंग CI पाइपलाइन्समध्ये (CI pipelines) समाविष्ट करा.
- LLM सुधारणा: म्यूटंट्स शोधू शकतील असे टेस्ट्स तयार करण्यासाठी एजंट्सना प्रशिक्षित करा.
- इंडस्ट्री मार्गदर्शक तत्त्वे: कव्हरेज आणि म्यूटेशन स्कोअर यांची जोडी लावणारे मानके (standards) स्वीकारा.
निष्कर्ष (Takeaway): AI-द्वारे तयार केलेल्या टेस्ट्समधील उच्च कव्हरेज आकडे आता गुणवत्तेचा पुरेसा पुरावा राहिलेले नाहीत; कमी म्यूटेशन स्कोअर हे सूचित करतो की टेस्ट्स वास्तविक बग्स पकडू शकणार नाहीत, ज्यामुळे डेव्हलपर्सना 'सेफ्टी नेट' म्हणून म्यूटेशन टेस्टिंगचा अवलंब करण्याची गरज भासते.
