10 சான்றிதழ்கள் இருந்தும் ஒரு பிழையைக் கண்டுபிடிக்க முடியாத டெஸ்டர்
உங்களிடம் எல்லா சான்றிதழ்களும் உள்ளன. ISTQB, ScrumMaster, Cloud மற்றும் Security. உங்கள் ரெஸ்யூம் (Resume) சுருக்க எழுத்துக்களின் (Acronyms) ஒரு சுவரால் சூழப்பட்டுள்ளது.
ஆனால் ஒரு உண்மையான பிழையைக் (Bug) கண்டறியும் ஒரு சோதனையைக்கூட உங்களால் எழுத முடியாது.
கடந்த காலாண்டில் நான் ஒரு வேட்பாளரை நேர்காணல் செய்தேன். அவர் கோட்பாட்டு ரீதியாக (Theory) மட்டுமே பேசினார். V-model மற்றும் shift-left பற்றி அவர் குறிப்பிட்டார். ஒரு பிழையைக் கண்டறிந்த அவர் எழுதிய ஒரு சோதனையை என்னிடம் காட்டச் சொன்னபோது, அவர் மௌனமாக இருந்தார்.
எதையாவது உடைக்கும் (Break) ஒரு சோதனையை அவர் ஒருபோதும் எழுதியதில்லை. அவர் தேர்ச்சி பெறும் (Pass) சோதனைகளை மட்டுமே எழுதினார்.
சான்றிதழ்கள் உங்கள் நினைவாற்றலைச் சோதிக்கின்றன. பிழைகள் (Bugs) உங்கள் சிந்தனையைச் சோதிக்கின்றன.
சான்றிதழ்கள் உங்களுக்குத் தேவையான கலைச்சொற்களையும் கட்டமைப்பையும் வழங்குகின்றன. அவை ஆட்சேர்ப்புத் தேர்வுகளை (Recruiter screens) கடக்க உதவுகின்றன. ஆனால் குறைபாடுகளை (Defects) எவ்வாறு கண்டறிவது என்பதை அவை உங்களுக்குக் கற்றுக்கொடுப்பதில்லை.
தேர்வு வினாக்கள் ஒரு பாடத்திட்டத்தைப் (Syllabus) பின்பற்றுகின்றன. ஆனால் நிஜமான பயன்பாடுகள் (Real applications) அவ்வாறு இல்லை. ஒரு லாகின் படிவத்திற்கு (Login form) என்று தனியாகப் பாடத்திட்டம் கிடையாது. சர்வர் கடிகாரங்கள் நான்கு நிமிடங்கள் முன்னதாகவோ அல்லது பின்னதாகவோ இருப்பது அல்லது குறிப்பிட்ட நேரச் சிக்கல்கள் போன்ற விசித்திரமான விளிம்பு நிலைச் சூழல்கள் (Edge cases) அதில் இருக்கும்.
சான்றிதழ் பெற்ற டெஸ்டர் ஒரு சரிபார்ப்புப் பட்டியலைப் (Checklist) பின்பற்றுகிறார். அவர்கள் தேவைகளின் (Requirements) அடிப்படையில் சோதனைகளை எழுதி, அவற்றை 'pass' அல்லது 'fail' என்று குறிக்கிறார்கள்.
ஒரு 'Bug hunter' சோதனையை ஒரு புலனாய்வு போலக் கருதுகிறார். அவர் ஒரு கருதுகோளுடன் (Hypothesis) தொடங்குகிறார். பயன்பாடு தவறானது என்பதை நிரூபிக்க அவர் முயற்சி செய்கிறார்.
மனப்பான்மையில் உள்ள வித்தியாசத்தைப் பாருங்கள்.
ஒரு சாதாரண சோதனை 'happy path'-ஐச் சரிபார்க்கிறது:
- தயாரிப்புகளுக்குச் செல்லவும் (Go to products).
- கூடையில் சேர்க்கவும் (Add to cart).
- சரியான கார்டு விவரங்களை உள்ளிடவும் (Enter valid card details).
- ஆர்டர் உறுதிப்படுத்தலை எதிர்பார்க்கவும் (Expect order confirmation).
அனைத்தும் சரியாக இருக்கும்போது அந்த அம்சம் (Feature) வேலை செய்கிறது என்பதை இந்தச் சோதனை நிரூபிக்கிறது. இது ஒருபோதும் ஒரு பிழையைக் கண்டுபிடிக்காது.
ஒரு 'bug hunter' சோதனை சந்தேகத்துடன் இருக்கும்:
- தட்டச்சுப் பிழையுடன் (Typo) ஒரு கார்டு எண்ணை உள்ளிடவும்.
- ஒரு பிழைச் செய்தியை (Error message) எதிர்பார்க்கவும்.
- இருந்தபோதிலும் ஆர்டர் உறுதிப்படுத்தல் தோன்றவில்லை என்பதைச் சரிபார்க்கவும்.
இரண்டாவது சோதனை, பயன்பாடு தோல்வியடையும் என்று கருதுகிறது. அது கேட்கிறது: "இது எங்கே முறியும் (Break)?"
பல டெஸ்டர்களுக்கு அனுபவத்தில் இடைவெளி உள்ளது, அவர்களின் ரெஸ்யூமில் அல்ல. தவறான தரவு (Bad data) அல்லது செயலிழந்த சூழல்களால் (Down environments) சோதனைகள் தோல்வியடைவதைக் கண்டிருக்கலாம். ஆனால் தர்க்கத்தில் (Logic) உள்ள குறைபாட்டைக் கண்டறிந்ததால் சோதனைகள் தோல்வியடைவதைக் கண்டிருக்க மாட்டீர்கள்.
புதிய தேர்வுகளுக்காகப் படிப்பதை நிறுத்துங்கள். தோல்வியடைய வடிவமைக்கப்பட்ட சோதனைகளை எழுதுவதன் மூலம் அந்த இடைவெளியை நிரப்புங்கள்.
இந்த பயிற்சியைச் செய்து பாருங்கள்: ஒரு அம்சத்தைத் (Feature) தேர்ந்தெடுங்கள். அதை உடைக்க முயற்சிப்பதில் ஒரு மணிநேரத்தைச் செலவிடுங்கள்.
ஒரு தேடல் அம்சத்திற்கு (Search feature):
- அர்த்தமற்ற வினவல்களை (Gibberish queries) சோதிக்கவும்.
- SQL injection எழுத்துக்களைச் சோதிக்கவும்.
- காலியான சரங்களை (Empty strings) சோதிக்கவும்.
ஒரு கோப்பு பதிவேற்றத்திற்கு (File upload):
- நீட்டிப்புகள் (Extensions) இல்லாத கோப்புகளைச் சோதிக்கவும்.
- மிகப்பெரிய கோப்பு அளவுகளைச் சோதிக்கவும்.
- தீங்கிழைக்கும் கோப்புப் பெயர்களைச் (Malicious file names) சோதிக்கவும்.
நான் ஒருமுறை 95% கவரேஜ் (coverage) கொண்ட ஒரு பேமெண்ட் சிஸ்டத்தில் (payment system) பணியாற்றினேன். ஒவ்வொரு டெஸ்டும் (test) வெற்றிகரமாக முடிந்தது. ஆனால், ஒரு ரவுண்டிங் பிழையினால் (rounding error) தயாரிப்புச் சூழலில் (production) அந்த சிஸ்டம் பணத்தை இழந்தது. எங்கள் டெஸ்ட்கள் வழக்கமான பாதைகளை (happy path) மட்டுமே சோதித்தன, ஆனால் கணித தர்க்கத்தை (math logic) சோதிக்க யாரும் நினைக்கவில்லை.
இப்போது, நான் ஒவ்வொரு டெஸ்டையும் ஒரு கேள்வியுடன் தொடங்குகிறேன்: "இந்த அம்சம் (feature) எந்தச் சூழ்நிலையில் எந்தத் தடயமும் இன்றித் தோல்வியடையும் (fail silently)?"
ஒரு போர்ட்ஃபோலியோ தளத்தை உருவாக்காதீர்கள். உங்கள் LinkedIn-ஐப் புதுப்பிக்காதீர்கள்.
தோல்வியடையும் வகையில் ஒரு டெஸ்டை எழுதுங்கள். அது வெற்றியடைந்தால், உங்களிடம் பாதுகாப்பு உத்தரவாதம் உள்ளது. அது தோல்வியடைந்தால், நீங்கள் ஒரு பிழையைக் (bug) கண்டுபிடித்துவிட்டீர்கள்.
நீங்கள் எதைச் சோதித்தீர்கள், அதை எப்படிச் சோதித்தீர்கள் மற்றும் எதைக் கண்டறிந்தீர்கள் என்பதை எழுதி வையுங்கள். உங்களால் சிந்திக்க முடியும் என்பதற்கான உண்மையான சான்று அதுதான்.
நீங்கள் பிழைகளைக் கண்டறிய முடியும் என்பதை நிரூபிக்க, இந்த வாரம் எழுதப்போகும் ஒரு டெஸ்ட் எது?
விருப்பத்தேர்வு கற்றல் சமூகம்: https://t.me/GyaanSetuAi