மென்பொருள் சோதனை (Software testing) என்பது எப்போதும் காலத்திற்கு எதிரான ஒரு ஓட்டமாகும். வெளியீட்டு காலங்கள் (Release windows) குறைகின்றன. குறியீட்டுத் தொகுப்புகள் (Codebases) வளர்கின்றன. எதையும் உடைக்காமல் மென்பொருளை விரைவாக வெளியிட வேண்டும் என்று குழுக்களிடம் எதிர்பார்க்கப்படுகிறது. சமீபகாலமாக, AI இந்த அழுத்தமான சூழலில் நிம்மதியைத் தரும் என்று கூறி உள்ளே நுழைந்துள்ளது. இது வினாடிகளில் சோதனை நிகழ்வுகளை (test cases) உருவாக்கவும், ஆயிரக்கணக்கான வரிக் குறியீடுகளைத் தேடிப் பிழைகளைக் கண்டறியவும், உங்கள் குழு தூங்கும் போது மீண்டும் மீண்டும் செய்யப்படும் சோதனைகளை (repetitive suites) இயக்கவும் முடியும். வேகம் உண்மையானதுதான். ஆனால் திசை தெரியாத வேகம் என்பது விபத்தை நோக்கி வேகமாகச் செல்வதற்குச் சமம்.
உண்மை என்னவென்றால், சோதனையில் AI என்பது ஒரு வேகமூட்டியாக (accelerator) செயல்படவே சிறந்தது, தானியங்கி விமானியாக (autopilot) அல்ல. சரியாகப் பயன்படுத்தினால், இது கடினமான வேலைகளைக் குறைத்து, பிழைகளை முன்கூட்டியே வெளிச்சத்திற்குக் கொண்டு வரும். கவனக்குறைவாகப் பயன்படுத்தினால், இது கண்ணுக்குத் தெரியாத இடங்களை (blind spots) உருவாக்கி, உங்களுக்கு ஒரு தவறான பாதுகாப்பு உணர்வைத் தரும். AI எங்கே உதவுகிறது மற்றும் எங்கே தோல்வியடைகிறது என்பதைப் புரிந்துகொள்வதுதான், நிலையான மென்பொருளை வெளியிடுவதற்கும், காலக்கெடுவுக்குள் வந்த ஆனால் பழுதான குறியீட்டை வெளியிடுவதற்கும் இடையிலான வேறுபாடாகும்.
AI எங்கே தனது இடத்தைப் பெறுகிறது
AI எதைச் சிறப்பாகக் கையாள்கிறது என்பதிலிருந்து தொடங்குவோம். மீண்டும் மீண்டும் செய்யப்படும் பின்னடைவுச் சோதனை (Repetitive regression testing) என்பது ஒரு தெளிவான வெற்றியாகும். டஜன் கணக்கான உலாவிகள் (browsers) மற்றும் சாதனங்களின் (devices) சேர்க்கைகளில் ஒரே மாதிரியான login flows, படிவச் சரிபார்ப்புகள் (form validations) மற்றும் checkout படிகளை இயக்குவது மனிதர்களுக்குச் சலிப்பைத் தரும், ஆனால் இயந்திரங்களுக்கு அது மிக எளிதானது. AI-ஆல் இயக்கப்படும் test runners இந்தச் சோதனைகளை இரவு முழுவதும் செயல்படுத்தி, ஒரு சோர்வடைந்த பொறியாளர் கவனிக்கத் தவறும் காட்சி மாற்றங்கள் (visual regressions) அல்லது செயல்திறன் குறைபாடுகளைக் (performance dips) கண்டறிய முடியும்.
சோதனைத் தரவு உருவாக்கம் (Test data generation) மற்றொரு பலமாகும். உங்களுக்குப் போலியான ஆனால் யதார்த்தமான பெயர்கள், முகவரிகள், பரிவர்த்தனை வரலாறு மற்றும் நேர மண்டலங்களுடன் கூடிய பத்தாயிரம் பதிவுகள் தேவைப்படும்போது, AI அதை உடனடியாக உருவாக்கிவிடும். நீங்கள் ஒரு database-ஐ load-testing செய்யும்போதோ அல்லது உங்கள் analytics dashboard அதிக அளவிலான தரவுகளை எவ்வாறு கையாள்கிறது என்பதைச் சரிபார்க்கும்போதோ இது முக்கியமானது. இவ்வளவு பெரிய அளவிலான தரவை கைமுறையாக உருவாக்குவது மெதுவானது மட்டுமல்ல, அது யதார்த்தமற்றதுமாகும்.
AI அடிப்படை test scripts எழுதுவதையும் வேகப்படுத்துகிறது. ஒரு புதிய API endpoint-க்கான நிலையான unit test அல்லது ஒரு பக்கம் சரியாகத் திறக்கப்படுகிறதா என்பதைச் சரிபார்க்க ஒரு அடிப்படை ஸ்கிரிப்ட் உங்களுக்குத் தேவைப்பட்டால், ஒரு AI உதவியாளர் அதன் கட்டமைப்பை (scaffold) உருவாக்கித் தர முடியும். நீங்கள் ஆரம்பத்திலிருந்து ஒவ்வொன்றையும் தட்டச்சு செய்யாமல், அதன் கட்டமைப்பு, மாதிரி உள்ளீடுகள் (dummy inputs) மற்றும் assertion placeholders ஆகியவற்றைப் பெற்றுவிடலாம். இது ஒரு சிறந்த தொடக்கப் புள்ளியாகும்.
இந்த நன்மைகள் கண்கூடாகத் தெரிகின்றன. பரந்த அளவிலான சோதனைகளைச் செய்வதற்கான செலவு குறைவதால், பிழைகள் முன்கூட்டியே கண்டறியப்படுகின்றன. மீண்டும் மீண்டும் செய்யப்படும் வேலைகள் மனித நேரத்தை வீணாக்குவதை நிறுத்துகின்றன. குழு சிக்கலான பிரச்சனைகளில் கவனம் செலுத்த முடியும்.
யாரும் பேசாத மறைமுகப் பிரச்சனைகள்
குழுக்கள் பரந்த கவரேஜை (broad coverage) ஆழமான கவரேஜுடன் (deep coverage) குழப்பிக்கொள்ளும்போது பிரச்சனை தொடங்குகிறது. AI வடிவங்களைக் (patterns) கண்டறிகிறது. அது பயிற்சி பெற்ற தரவுகளின் அடிப்படையில் ஒரு சாதாரணப் பிழை எப்படி இருக்கும் என்று கணிக்கிறது. அதாவது, அது சாதாரணமான விஷயங்களில் சிறந்து விளங்குகிறது, ஆனால் விசித்திரமான விஷயங்களில் மீண்டும் மீண்டும் தோல்வியடைகிறது.
விளிம்பு நிலைச் சூழல்களை (edge cases) கருத்தில் கொள்ளுங்கள். நிலையான பயனர் பயணங்களின் (user journeys) அடிப்படையில் பயிற்சி பெற்ற ஒரு மாடல், ஒரு பயனர் மூன்று modal dialogs-களைத் திறந்து, உலாவியின் back பொத்தானை அழுத்தி, ஒரு asynchronous save-ன் போது பக்கத்தைப் புதுப்பிக்கும்போது மட்டுமே ஏற்படும் பிழையைத் தவறவிட வாய்ப்புள்ளது. இவை கற்பனையானவை அல்ல. புள்ளிவிவர ரீதியாக அரிதானவை என்பதால், எந்தப் பயிற்சித் தரவும் சரியாகப் பிரதிநிதித்துவப்படுத்தாத வரிசைகளிலிருந்தே பெரும்பாலும் உற்பத்திச் சிக்கல்கள் (production incidents) உருவாகின்றன. AI பெல் கர்வின் (bell curve) மையப்பகுதியைத் தேடுகிறது. ஆனால் உங்கள் மோசமான பிழைகள் அதன் ஓரங்களில்தான் (tails) உள்ளன.
இங்கே மனித உள்ளுணர்வு (human intuition) முக்கியமானது. அனுபவம் வாய்ந்த ஒரு டெஸ்டர் ஒரு புதிய அம்சத்தைப் பார்த்து வணிக அபாயத்தைப் (business risk) பற்றிச் சிந்திப்பார். ஒரு விரக்தியடைந்த பயனர் ஒரு படிவத்தை எவ்வாறு தவறாகப் பயன்படுத்தக்கூடும் அல்லது விடுமுறை காலப் போக்குவரத்து அதிகரிப்பின் போது ஒரு payment gateway காலாவதியானால் என்ன நடக்கும் என்று அவர் கேட்பார். இது சூழல் சார்ந்த சிந்தனை (contextual thinking). AI வணிக அழுத்தத்தை உணர முடியாது. பல ஆண்டுகளுக்கு முன்பு செய்யப்பட்ட ஒரு legacy integration-ஆல் உங்கள் inventory system பலவீனமாக உள்ளது என்பதை அது அறியாது. அது சரியாகத் தோன்றுவதைத் தான் எழுதும், உங்கள் குறிப்பிட்ட துறைக்கு எது சரியோ அதை அல்ல.
மாயத்தோற்றம் (hallucination) மற்றும் உடையக்கூடிய ஆட்டோமேஷன் (brittle automation) என்பதும் ஒரு பிரச்சனையாகும். AI-ஆல் உருவாக்கப்பட்ட test scripts நம்பகமானதாகத் தோன்றலாம், ஆனால் அவற்றில் தவறான selectors, தவறான assertions அல்லது அடுத்த sprint-இல் மாறக்கூடிய DOM கட்டமைப்பைப் பற்றிய தவறான அனுமானங்கள் இருக்கலாம். நீங்கள் இவற்றை வாசிக்காமல் இயக்கினால், நேரத்தை வீணடிக்கும் false positives அல்லது பிழைகளைத் தப்பவிடும் false negatives உங்களுக்குக் கிடைக்கும். சோதனை உண்மையில் சரியான நடத்தையைச் சரிபார்க்கவில்லை என்றால், ஒரு test dashboard-இல் பச்சை நிறக் குறியீடு (green checkmark) என்பது அர்த்தமற்றது.
