தோழர்,
அடுத்த பதிவில் ‘பிழை வாழ்க்கை வட்டம்‘ பற்றிப் பார்ப்போம் என்று சென்ற பதிவில் சொல்லியிருக்கிறீர்கள். ஆனால், அதற்கு முன் எனக்கு ஒரு சந்தேகம் – டெஸ்ட் கேஸ் எழுதுவது பற்றிப் (www.kaniyam.com/software-testing-8-write-test-case/) படித்து விட்டு, ஜிமெயிலில் பயனர் உருவாக்கும் பக்கத்திற்கு டெஸ்ட் கேஸ்களை எழுதலாம் என நினைத்து ஆர்வத்தில் டெஸ்ட் கேஸ் எழுதத் தொடங்கினேன். இன்னும் முடிக்க முடியவில்லை. எழுத எழுத டெஸ்ட் கேஸ்கள் வந்து கொண்டே இருக்கின்றன; நானும் பக்கம் பக்கமாக டெஸ்ட் கேஸ்கள் எழுதிவிட்டேன். இப்படித்தான் நிறுவனங்களிலும் திட்டப்பணியில் செய்வார்களா? இல்லை டெஸ்ட் கேஸ்கள் எழுதுவதற்கு ஏதாவது எளிய வழிமுறைகள் இருக்கின்றனவா? சொல்லுங்களேன்.
இப்படிக்கு,
முகிலன்.
—-!!!!—-
தோழர் முகிலனுக்கு,
வணக்கம். நல்ல கேள்வியைக் கேட்டிருக்கிறீர்கள். டெஸ்ட் கேஸ்கள் எழுதுவதற்கு எளிய பல வழிமுறைகள் இருக்கின்றன. அவற்றை முதலில் இங்கு விளக்கி விடுகிறேன். பிறகு, நாம் ‘பிழை வாழ்க்கை வட்டம்‘ பற்றிப் பார்க்கலாம்.
டெஸ்ட் கேஸ் எழுத எளிய வழிமுறைகள் :
டெஸ்ட் கேஸ் என்பது, பொதுவாக, பயனர் எந்தெந்த விதமான உள்ளீடுகளைக் கொடுப்பார் என்பதை உணர்ந்து குறிப்பெடுத்து வைத்துக் கொள்வது தான்! ஆனாலும் எல்லாச் சூழல்களிலும் எல்லா விதமான உள்ளீடுகளையும் கொடுத்துச் சோதிப்பது என்பது இயலாத காரியம். அதே சமயம், எல்லா வகைகளிலும் சோதிப்பது என்பது இன்றியமையாதது. குழப்புகிறதா? விரிவாகவே பார்ப்போம்.
டெஸ்ட் கேஸ் எழுதுவதற்கு உத்திகள் ஏன் தேவை?
மட்டைப்பந்துப் போட்டி நடந்து கொண்டிருக்கிறது. சச்சின் டெண்டுல்கர் மட்டையோடு நின்று கொண்டிருக்கிறார். எதிரணியில் இருக்கும் அனைவரும் கூடிப் பந்து வீச்சாளரிடம் பேசி, சச்சினை வீழ்த்த உத்திகள் வகுக்கிறார்கள். அதே சமயம், மட்டையோடு நிற்பவர் பதினோராவது ஆளாகக் களம் இறங்குபவராக இருந்தால் எந்தவித உத்திகளுக்கும் தேவையே இருக்காது. சரி தானே! ஆக, சிக்கலான செயல்களை எளிதாக முடிப்பதற்குத் தான் உத்திகள் தேவைப்படுகின்றன.
டெஸ்ட் கேஸ் எழுதுவது என்பது சிக்கலான ஒன்றா?
டெஸ்ட் கேஸ் எழுதுவது சிக்கலான ஒன்று இல்லை தான்! ஆனால் பயனர் எந்தெந்த விதமான உள்ளீடுகளை எல்லாம் கொடுப்பார் என்று சிந்தித்துச் சிந்தித்து டெஸ்ட் கேஸ்களை எழுதுவது என்பது அதிக நேரத்தை எடுக்கும் செயல்! எனவே விரயமாகும் நேரத்தை மிச்சப்படுத்திக் குறைந்த நேரத்தில் நேர்த்தியாக டெஸ்ட் கேஸ்களை உருவாக்கி, அதிக நேரத்தை உண்மையான சோதித்தலில் செலவழிப்பது தான் நிறைய பிழைகளைக் கண்டுபிடிக்க உதவும்! எவ்வளவுக்கு எவ்வளவு பிழைகளைக் கண்டுபிடிக்கிறோமோ அந்த அளவு மென்பொருளின் தரம் உயரும்! அதற்காகக் தான் டெஸ்ட் கேஸ்களுக்கு உத்திகள் வகுத்துச் செயல்படுகிறோம். அவற்றில் சிலவற்றை இப்போது பார்ப்போம்.
1. எல்லைகளைச் சோதிப்போம்: :
மட்டைப் பந்துப் போட்டி நடந்து கொண்டிருக்கிறது. மட்டையாளர் பந்தைத் தூக்கி அடிக்கிறார். அடித்த பந்து, பார்வையாளர்களுக்கு நடுவில் நேரே சென்று விழுகிறது. இப்போது நடுவர் எளிதாக ‘ஆறு‘ எனக் கைகளைத் தூக்கிக் காட்டிவிட முடியும். அடுத்த பந்து – மட்டையாளர் மீண்டும் முழுவீச்சில் அடிக்கிறார் – பந்து, இப்போது எல்லைக் கோட்டை ஒட்டிப் போய் விழுகிறது. இப்போது நடுவர் முன்பு கொடுத்தது போல, எளிதாக நான்கு அல்லது ஆறு எனக் கொடுத்து விட முடியாது. மூன்றாவது நடுவரிடம் கலந்து பேசி, பந்து
-
எல்லைக் கோட்டிற்கு அப்பால் விழுந்ததா
-
எல்லைக் கோட்டின் மேல் விழுந்ததா
-
எல்லைக் கோட்டிற்கு உள்பக்கம் விழுந்ததா
என்று தெரிந்து கொண்டு முடிவை அறிவிப்பார் அல்லவா? எல்லைகளை நெருங்கும் போது இவை போன்ற சிக்கல்கள் வருவது இயல்பு!
எல்லைச் சிக்கலும் பேருந்தில் அரைக்கட்டணமும் :
நாம் பேருந்தில் பயணித்துக் கொண்டிருக்கிறோம் என்று வைத்துக் கொள்ளுங்கள். பேருந்தில் பன்னிரண்டு வயதுக்கு உட்பட்ட அல்லது 135 செ.மீ உயரத்திற்குக் கீழ் உள்ள குழந்தைகளுக்கு அரைக்கட்டணம் வாங்குகிறார்கள். இங்கு, நடத்துநருக்கு,
-
4 வயதுக் குழந்தைக்கு அரைக்கட்டணம் வாங்குவதில் சிக்கல் இருக்காது
-
15 வயது சிறுவனுக்கு முழுக்கட்டணம் வாங்குவதிலும் எந்தச் சிக்கலும் இருக்காது.
எங்குச் சிக்கல் வரும்?
அரைக்கட்டணத்திற்கு வந்து நிற்கும் குழந்தையோ சிறுவனோ
-
பன்னிரண்டு வயதோ அதை ஒட்டியோ உள்ள வயதினர் போல் தோற்றமளிக்கும் போது
-
135 செ.மீ. உயரத்தை ஒட்டி அவர்கள் உயரம் அமையும் போது
இந்த இரண்டு இடங்களில் தான் நடத்துநர் குழம்பிப் போவார். இதே கதை தான் மென்பொருளிலும்!
எடுத்துக்காட்டாக, ஐந்து இலட்சம் வரை சம்பளம் இருந்தால் வருமான வரி கிடையாது என்று வாடிக்கையாளர் தேவை ஆவணத்தில் குறிப்பிட்டிருப்பார்கள். நம்முடைய உருவாக்குநர், ஐந்து இலட்சம் வருமானம் ஈட்டும் ஒருவருக்கு வருமான வரி உண்டா? இல்லையா? என்பதில் குழம்பிப் போய் இருப்பார்.
எனவே, இந்த எல்லைகளை முறைப்படிச் சோதிப்பது தான் எல்லைச் சோதனை முறையாகும்.
மேலும் சில எ.கா. கள்:
-
பத்து இலக்க அலைபேசி எண்ணைக் கேட்கும் உரைப் பெட்டிகளில் முறையே,
-
ஒன்பது இலக்க எண்ணைக் கொடுத்துச் சோதிப்பது
-
பத்து இலக்க எண்ணைக் கொடுத்துச் சோதிப்பது
-
பதினோர் இலக்க எண்ணைக் கொடுத்துச் சோதிப்பது
-
ஆகிய மூன்றிற்கும் டெஸ்ட் கேஸ்களை எழுதி வைத்துக் கொள்வது! முறைப்படி இந்தச் சோதனையை நாம் செய்வதாக இருந்தால், ஓரிலக்க எண்ணில் தொடங்கி, ஈரிலக்க எண், மூவிலக்க எண் எனத் தொடர்ந்து, பதினைந்து, இருபது இலக்க எண்கள் வரை சோதிப்பதற்கு டெஸ்ட் கேஸ்கள் எழுத வேண்டும். அதற்கு எளிய மாற்றாக,
பத்து இலக்க எண்ணைச் சோதிக்க,
-
பத்து இலக்க எண்ணைக் கொண்டு ஒரு சோதனை – முறையான உள்ளீடு
-
ஒன்பது இலக்க எண்ணைக் கொண்டு ஒரு சோதனை – முறையற்ற உள்ளீடு (முறையான உள்ளீட்டிற்குக் கீழ்)
-
பதினோர் இலக்க எண்ணைக் கொண்டு ஒரு சோதனை – முறையற்ற உள்ளீடு (முறையான உள்ளீட்டிற்கு மேல்)
ஆகிய மூன்று டெஸ்ட் கேஸ்களை மட்டுமே எழுதி வைத்துக் கொள்வது தான் எல்லைச் சோதனை உத்தியாகும். இதை ஆங்கிலத்தில் ‘பவுண்டரி வேல்யூ அனாலிசிஸ்‘ (‘Boundary Value Analysis’) என்று சொல்வார்கள்.
2. சரிவிகிதப் பிரிப்பு முறை :
நாம் ஒரு தெருவில் நடந்து போய்க் கொண்டிருக்கிறோம் என்று வைத்துக் கொள்ளுங்கள். தெருவின் இரு பக்கங்களிலும் இருபது இருபது வீடுகள் இருக்கின்றன. ஒரு பக்கத்தில் வீட்டு எண்கள் ஒன்றில் தொடங்கி இருபதில் முடிகின்றன. மறு பக்கத்தில் வீட்டு எண்கள் இருபத்து ஒன்றில் தொடங்கி, நாற்பதில் முடிகின்றன. உங்களுக்குக் கொடுக்கப்பட்டிருக்கும் வேலை, முப்பதாவது எண்ணுடைய வீட்டைக் கண்டுபிடிக்க வேண்டும். என்ன செய்வீர்கள்?
இரு எளிய தீர்வுகள் :
அ. தெருவில் ஒரு பக்கத்தைப் பார்த்துக் கொண்டே முதல் இருபது வீடுகளைப் பார்த்து மறு முனையை அடைந்து, மீண்டும் அங்கிருந்து மறுபக்கத்தில் இருக்கும் வீடுகளில் முப்பதாம் எண்ணுடைய வீட்டைக் கண்டுபிடிக்கலாம்.
ஆ. தெருவில் வீட்டு எண்கள் எப்படிக் கொடுக்கப்பட்டிருக்கின்றன என்பதை ஊகித்து, தெருவின் மறுபக்கத்தில் இருக்கும் முப்பதாம் எண்ணுடைய வீட்டைக் கண்டுபிடிக்கலாம்.
இந்த இரண்டு தீர்வுகளில் எந்தத் தீர்வு எளிதானது? இதென்ன கேள்வி – இரண்டாவது தீர்வு தானே! என்கிறீர்களா? சரி தான்!
இதே போல் ஒரு தீர்வை டெஸ்ட் கேஸ் உருவாக்கத்தில் பின்பற்றுவதற்காகத் தான் சரிவிகிதப் பிரிப்பு உத்தியைப் பார்க்கிறோம். மேலே, நாம் பார்த்த எடுத்துக்காட்டைப் போல, பயனர் கொடுக்கவிருக்கும் உள்ளீட்டைச் சரிவிகிதத்தில் பிரித்துக் கொள்வார்கள்.
காப்பீட்டுக் கழகம் ஒன்றிற்குரிய மென்பொருளை நம் நிறுவனம் உருவாக்குவதாக வைத்துக் கொள்ளுங்கள். காப்பீட்டுக் கழகம், வாடிக்கையாளரின் வயது 18 வயதில் இருந்து 60 வயது வரை இருந்தால் சிறப்புச் சலுகை ஒன்றைக் கொடுக்கிறது என்று வாடிக்கையாளர் தேவை ஆவணம் சொல்கிறது. இந்தச் சோதனைக்கு எத்தனை டெஸ்ட் கேஸ்கள் எழுதுவது?
-
ஒரு வயதில் இருந்து பதினேழு வயது வரை பதினேழு டெஸ்ட் கேஸ்கள்
-
பதினெட்டு வயதில் இருந்து அறுபது வயது வரை நாற்பதிற்கும் அதிகமான டெஸ்ட் கேஸ்கள்
-
அறுபத்தோரு வயதில் இருந்து இன்னும் எண்ணற்ற டெஸ்ட் கேஸ்கள்
என்று எழுதினால் டெஸ்ட் கேஸ்களை எழுதி முடிப்பதற்குள்ளாகவே நம்முடைய வயதும் மாறி, வாடிக்கையாளரின் வயதும் மாறிவிடும்! அவ்வளவு நேரம் பிடிக்கும். இது போன்ற சூழலில்,
18 – 60 வயது என்பது தான் தகுதியான உள்ளீடு. எனவே
-
18 வயதுக்கு முன் ஏதேனும் ஒரு வயதுக்கு டெஸ்ட் கேஸ்
-
18 – 60 வயது வரம்புக்குள் ஏதேனும் ஒரு வயதுக்கு டெஸ்ட் கேஸ்
-
60 வயதுக்கு மேல் ஏதேனும் ஒரு வயதுக்கு டெஸ்ட் கேஸ்
என்று மூன்றே மூன்று டெஸ்ட் கேஸ்கள் எழுதிச் சோதனையைச் செய்வது தான் கால விரயத்தையும் தவிர்க்கும்; அதே வேளையில் பயனர் கொடுக்கப் போகும் எல்லாவித உள்ளீட்டையும் சோதிக்கவும் உதவும். அதாவது,
-
தகுதியான எல்லையில் உள்ளீடு கொண்டு ஒரு டெஸ்ட் கேஸ்
-
தகுதி எல்லைக்கு மேல் ஒரு டெஸ்ட் கேஸ்
-
தகுதி எல்லைக்குக் கீழ் ஒரு டெஸ்ட் கேஸ்
இந்த உத்தியைத் தான் சரிவிகிதப் பிரிப்பு உத்தி என்கிறோம். ஆங்கிலத்தில் இந்த உத்திக்கு ‘ஈக்குவலன்ஸ் கிளாஸ் பார்ட்டிஷனிங்‘ (‘Equivalence Class Partitioning’) என்று பெயர்.
இதுவரை நாம் பார்த்ததில் இருந்து, டெஸ்ட் கேஸ்கள் எழுதும் வேலையை எளிமையாக்க உத்திகள் வெகுவாக உதவுகின்றன என்பது தெளிவாகி விட்டது. இப்போது சொல்லுங்கள் – இந்த இரண்டு உத்திகள் போதுமா? இல்லை டெஸ்ட் கேஸ்கள் உருவாக்கத்தை எளிமையாக்க இன்னும் உத்திகள் வேண்டுமா? வேண்டும் தானே! மேலும் சில உத்திகளை வரும் பதிவுகளில் பார்ப்போம்!
– முத்து (muthu@payilagam.com)
தொடரின் பிற பகுதிகள் இங்கே www.kaniyam.com/category/software-testing/