सॉफ्टवेअर टेस्टिंग नेहमीच वेळेविरुद्धची एक शर्यत राहिली आहे. रिलीज विंडो कमी होत आहेत. कोडबेस वाढत आहेत. गोष्टी न बिघडवता टीमला अधिक वेगाने काम पूर्ण करण्याची अपेक्षा असते. अलीकडे, AI ने या दबावाच्या परिस्थितीत दिलासा देण्याचे आश्वासन देत प्रवेश केला आहे. ते काही सेकंदात टेस्ट केसेस तयार करू शकते, हजारो ओळींच्या कोडमधील त्रुटी शोधू शकते आणि तुमचा संघ झोपलेला असताना पुनरावृत्ती होणारे टेस्ट सूट्स (test suites) चालवू शकते. वेग खरोखर आहे, पण दिशाहीन वेग म्हणजे अपघाताचा अधिक वेगवान मार्ग आहे.
वास्तव हे आहे की टेस्टिंगमधील AI हे 'एक्सेलेरेटर' (accelerator) म्हणून सर्वोत्तम काम करते, 'ऑटोपायलट' (autopilot) म्हणून नाही. योग्य वापर केल्यास, ते कंटाळवाणी कामे (grunt work) कमी करते आणि सुरुवातीच्या टप्प्यावरच बग्स (bugs) समोर आणते. निष्काळजीपणे वापरल्यास, ते अंधत्त्व (blind spots) निर्माण करते आणि तुम्हाला सुरक्षेचा खोटा आभास देते. AI कुठे मदत करते आणि कुठे अपयशी ठरते हे समजून घेणे, हे स्थिर सॉफ्टवेअर वितरित करणे आणि वेळेवर पोहोचलेले पण बिघडलेले कोड वितरित करणे यामधील फरक आहे.
AI जिथे आपले स्थान सिद्ध करते
AI काय चांगले हाताळते यापासून सुरुवात करूया. पुनरावृत्ती होणारे रिग्रेशन टेस्टिंग (regression testing) हा एक स्पष्ट फायदा आहे. डझनभर ब्राउझर आणि डिव्हाइस कॉम्बिनेशनमध्ये तेच लॉगिन फ्लो, फॉर्म व्हॅलिडेशन आणि चेकआउट स्टेप्स चालवणे हे मानवांसाठी कंटाळवाणे आहे आणि मशीनसाठी अत्यंत सोपे आहे. AI-चालित टेस्ट रनर्स हे सूट्स रात्रभर चालवू शकतात आणि व्हिज्युअल रिग्रेशन किंवा परफॉर्मन्स मधील घटकांकडे लक्ष वेधू शकतात, जे कदाचित एखादा थकलेला इंजिनिअर दुर्लक्षित करू शकेल.
टेस्ट डेटा जनरेशन (Test data generation) हे आणखी एक बलस्थान आहे. जेव्हा तुम्हाला वास्तववादी पण बनावट नावे, पत्ते, व्यवहाराचा इतिहास आणि टाइम झोनसह दहा हजार रेकॉर्ड्सची आवश्यकता असते, तेव्हा AI ते त्वरित तयार करू शकते. जेव्हा तुम्ही डेटाबेसचे लोड-टेस्टिंग करत असता किंवा तुमचे ॲनालिटिक्स डॅशबोर्ड हाय-कार्डिनॅलिटी डेटा कसा हाताळतात हे तपासत असता, तेव्हा हे महत्त्वाचे ठरते. इतक्या मोठ्या प्रमाणात डेटा मॅन्युअली तयार करणे केवळ संथ नाही, तर ते अवास्तव आहे.
AI बॉयलरप्लेट टेस्ट स्क्रिप्ट्स (boilerplate test scripts) लिहिण्याचा वेग देखील वाढवते. जर तुम्हाला नवीन API एंडपॉइंटसाठी स्टँडर्ड युनिट टेस्ट किंवा एखादे पेज लोड होते की नाही हे तपासण्यासाठी बेसिक स्क्रिप्ट हवी असेल, तर AI असिस्टंट त्याचा आराखडा (scaffold) तयार करू शकतो. तुम्हाला शून्यापासून टाईप न करता स्ट्रक्चर, डमी इनपुट्स आणि अॅसर्शन प्लेसहोल्डर्स (assertion placeholders) मिळतात. ही एक चांगली सुरुवात आहे.
हे फायदे प्रत्यक्ष आहेत. बग्स लवकर पकडले जातात कारण व्यापक चाचण्या (broad tests) चालवण्याचा खर्च कमी होतो. पुनरावृत्ती होणारी कामे मानवी वेळेचा अपव्यय करणे थांबवतात. टीम अधिक कठीण समस्यांवर लक्ष केंद्रित करू शकते.
ज्या अंधत्त्वावर (Blind Spots) कोणीही बोलत नाही
समस्या तेव्हा सुरू होते जेव्हा टीम्स 'व्यापक कव्हरेज' (broad coverage) आणि 'सखोल कव्हरेज' (deep coverage) यामध्ये गोंधळतात. AI पॅटर्न शोधते. ज्या डेटावर त्याला प्रशिक्षित केले गेले आहे, त्या आधारावर सामान्य बग कसा दिसतो याचे ते भाकीत करते. याचा अर्थ असा की ते सामान्य गोष्टींमध्ये उत्कृष्ट आहे आणि विचित्र गोष्टींमध्ये वारंवार अपयशी ठरते.
एज केसेसचा (edge cases) विचार करा. मानक युजर जर्नीवर प्रशिक्षित केलेले मॉडेल बहुधा अशा बगला misses करेल जो तेव्हाच ट्रिगर होतो जेव्हा वापरकर्ता तीन मोडल डायलॉग्स उघडतो, ब्राउझरचा बॅक बटण दाबतो आणि असिंक्रोनस सेव्ह दरम्यान रिफ्रेश करतो. या केवळ काल्पनिक गोष्टी नाहीत. प्रोडक्शन इन्सिडेंट्स (production incidents) अनेकदा अशा क्रियांमुळे उद्भवतात ज्यांचे प्रतिनिधित्व कोणताही ट्रेनिंग डेटासेट पुरेसा करत नाही कारण ते सांख्यिकीयदृष्ट्या दुर्मिळ असतात. AI बेल कर्वच्या (bell curve) मध्यभागाचा पाठलाग करते. तुमचे सर्वात वाईट बग्स त्याच्या टोकांवर (tails) असतात.
येथे मानवी अंतर्ज्ञान (human intuition) महत्त्वाचे ठरते. एक अनुभवी टेस्टर नवीन फीचरकडे पाहतो आणि बिझनेस रिस्कचा विचार करतो. एखादा नाराज वापरकर्ता फॉर्मचा गैरवापर कसा करू शकतो, किंवा सुट्ट्यांच्या काळात ट्रॅफिक वाढल्यामुळे पेमेंट गेटवे टाइमआउट झाल्यास काय होईल, असे प्रश्न ते विचारतात. हे संदर्भात्मक विचार (contextual thinking) आहे. AI ला बिझनेस प्रेशर जाणवत नाही. अनेक वर्षांपूर्वीच्या लेगसी इंटिग्रेशनमुळे तुमची इन्व्हेंटरी सिस्टिम नाजूक आहे, हे त्याला माहित नसते. ते जे बरोबर वाटते ते लिहिते, जे तुमच्या विशिष्ट डोमेनसाठी बरोबर आहे ते नाही.
हॅल्युसिनेशन (hallucination) आणि ठिसूळ ऑटोमेशन (brittle automation) ही देखील एक समस्या आहे. AI-जनरेटेड टेस्ट स्क्रिप्ट्स पाहण्यात पटण्यासारख्या वाटू शकतात, परंतु त्यामध्ये चुकीचे सिलेक्टर्स, चुकीचे अॅसर्शन्स किंवा DOM स्ट्रक्चरबद्दल असे गृहितक असू शकतात जे पुढच्या स्प्रिंटमध्ये बदलू शकतात. जर तुम्ही त्या स्क्रिप्ट्स न वाचता चालवल्या, तर तुम्हाला चुकीचे पॉझिटिव्ह (false positives) मिळतील ज्यामुळे वेळ वाया जाईल किंवा चुकीचे निगेटिव्ह (false negatives) मिळतील ज्यामुळे बग्स सुटून जातील. जर टेस्ट प्रत्यक्षात योग्य वर्तन तपासत नसेल, तर टेस्ट डॅशबोर्डवरील ग्रीन चेकमार्कचा काहीही अर्थ उरत नाही.
