கணியத்தில் சாப்ட்வேர் டெஸ்டிங் பற்றி ஒரு தொடர் வருகிறதே! அதில், மென்பொருள் உருவானால் தான் நம்மால் சோதனையைத்தொடங்க முடியும் என சொல்கிறார்கள். ஆனால், முந்தைய பதிவில், மென்பொருள் உருவாக்கத்தையே சோதனைகள் மூலம் வழிநடத்தலாம் என அறிந்தோம். இவையிரண்டும், முன்னுக்குப்பின் முரணாக அமைகிறதே என குழம்பவேண்டாம். மென்பொருள் சோதனைகளில் பல வகைகள் உள்ளன. அவற்றைப்புரிந்துகொண்டால், தெளிவு கிடைக்கும். அவை,
- ஓரலகு சோதனைகள் (Unit tests)
- ஒருங்கிணைப்பு சோதனைகள் (Integration tests)
- செயல்பாட்டுச்சோதனைகள் (Functional tests)
ஓரலகு சோதனைகள்
நாம் முந்தைய அத்தியாயத்தில் எழுதியது, ஓரலகு சோதனையாகும். ஒரு சிறிய, தர்க்கரீதியிலான தொகுதியின் (logical unit, எ.கா: செயற்கூறு (method)) செயல்பாட்டைச்சோதிப்பதே இதன் நோக்கம். ஒரு சிறிய அலகின் செயல்பாட்டில் கவனம் செலுத்துவதால், அதன் உண்மையான புறச்சார்புகளுக்கு (external dependencies) பதிலாக, போலிகளைப்பயன்படுத்தவேண்டும் (mocks or stubs). போலிகளைப்பற்றியும், அதை எப்படி பயன்படுத்துவது என்பதைப்பற்றியும் பிறிதொரு பதிவில் விளக்கமாக அறியலாம்.
இவ்வகை சோதனைகளை நிரலாளர்கள் எழுதுகிறார்கள். TDD-யை பின்பற்றும்பொழுது நிரலாக்கத்தின் சரிபாதி நேரம் இவ்வகை சோதனைகளில் செலவிடப்படுகிறது. இவற்றிலிருந்து கிடைக்கும் பின்னூட்டமே (feedback) நிரலாக்கத்தை வழிநடத்துகிறது. பொதுவாக, இந்தவகை சோதனைகள் நிரலில் அதிக அளவில் இருக்கவேண்டும். எண்ணிக்கையில் அதிக அளவு இருப்பதாலும், மிகவிரைவாக பின்னூட்டத்தை தரவேண்டிய அவசியத்தினாலும், இவை மிகவேகமாக இயங்கவேண்டும்.
ஒருங்கிணைப்பு சோதனைகள்
நிரல், அதன் புறச்சார்புகளுடன், சரியானவிதத்தில், ஒருங்கிணைந்து செயல்படுகிறதா என சோதிப்பதே , ஒருங்கிணைப்பு சோதனைகளின் நோக்கமாகும். பொதுவாக, நிரலில் ஒன்றுக்கும் மேற்பட்ட ஒருங்கிணைப்பு புள்ளிகள் (Integration points) இருக்கலாம். இதற்கு உதாரணமாக, தரவுதளம் (database), இணையசேவைகள் (webservices), கட்டண நுழைவாயில் (payment gateway) போன்றவற்றைச்சொல்லலாம்.
நாம் முந்தைய பதிவில் எடுத்துக்கொண்ட உதாரணத்தில் திருப்பியமைத்த சரத்தை (reversed string), தரவுதளத்தில் சேமித்துவைக்கவேண்டும் என வைத்துக்கொள்வோம். இதற்கான ஒருங்கிணைப்பு சோதனையை எழுத முயற்சிக்கலாம். ரூபி நிரலை தரவுதளத்தோடு ஒருங்கிணைக்க rails என்ற கட்டமைப்பையும், சோதனைகளுக்கு rspec-rails என்ற gem-ஐயும் பயன்படுத்தி, பின்வரும் சோதனையை எழுதலாம்.
இந்தவகை சோதனைகளையும் நிரலாலர்களே எழுதுகிறார்கள். புறக்கூறுகளைச்சார்ந்திருப்பதால், இந்த சோதனகளை இயக்க ஆகும் நேரமும், செலவும் அதிகரிக்கிறது. இதனால், ஒருங்கிணைப்பு சோதனைகள், குறைவான எண்ணிக்கையில் காணப்படுகின்றன.
செயல்பாட்டுச்சோதனைகள்
பயனாளர் எதிர்பார்த்தபடி, மென்பொருள் இயங்குகிறதா என கண்டறிய செயல்பாட்டுச்சோதனைகள் பயன்படுகின்றன. இவை பெரும்பாலும் வரைகலை பயனர் இடைமுகப்பு (GUI) மூலமாக செய்யப்படுகிறது. ஒரு வலைதளத்தை எடுத்துக்கொண்டால், அதிலுள்ள இணைப்புகளை சொடுக்கும்பொழுது சரியான பக்கத்திற்கு எடுத்துச்செல்கின்றனவா, ஒரு படிவத்தை நிரப்பி, சமர்ப்பிக்கும்பொழுது, அதில் அத்தியாவசிய விவரங்கள் எல்லாம் நிரப்பப்பட்டிருகின்றனவா, என்பது போன்ற சோதனைகள் இந்தவகையில் அடங்கும்.
ஒரு வலைதளத்தில், ஒரு சரத்தை உள்ளீடு செய்து, ஒரு பொத்தானை அழுத்தியவுடன், திருப்பியமைக்கப்பட்ட சரத்தை பயனருக்கு காண்பிக்கவேண்டும் என வைத்துக்கொள்ளலாம். அதற்கான செயல்பாட்டுச்சோதனையை பின்வருமாறு எழுதலாம். இதற்கு selenium என்ற கருவியைப்பயன்படுத்தலாம்.
இந்த சோதனைகள் தர ஆய்வாளர்களால் (Quality Analysts) எழுதப்படுகிறது. பயனரின் கண்ணோட்டத்திலிருந்து இவை எழுதப்படவேண்டும். மென்பொருள் சோதனைகளில் செலவாகும் மனித உழைப்பைப்பெருமளவில் குறைத்து உதவுவதால், இந்தவகை சோதனைகள், தானியங்கி சோதனைகள் (automation tests) என்றும் அழைக்கப்படுகின்றன. மற்றவகை சோதனைகளுடன் ஒப்பிடுகையில், இவை எண்ணிக்கையில் மிகக்குறைவாகவே இருக்கும்.
சாப்ட்வேர் டெஸ்டிங் தொடரில் இவ்வகை சோதனைகளைப்பற்றியே பேசப்படுகிறது.
சோதனைப்பிரமிடு
எண்ணிக்கைகளின் அடிப்படையில் சோதனைப்பிரமிடு என்ற கோட்பாட்டை Mike Cohn என்பவர் தன், Succeeding with Agile என்ற புத்தகத்தில் விவரித்துள்ளார். ஓரலகு சோதனைகள் அதிக அளவில் இருக்கவேண்டுமென்பதையும், ஒருங்கிணைப்பு மற்றும் செயல்பாட்டு சோதனைகள் அதைவிட குறைந்த எண்ணிக்கையில் இருக்கவேண்டுமென்பதையும், இதிலிருந்து எளிதாக அறிந்துகொள்ளலாம்.
மென்பொருள் சோதனைகளின் வகைகளையும், அவற்றிற்கிடையேயுள்ள வித்தியாசங்களையும் தெளிவாக அறிந்துகொண்டோம். மேற்கண்ட மூன்றுவகை சோதனைகள் மட்டுமல்லாது, இன்னும் சில சோதனைகளும் மென்பொருள் தரத்தையறிய உதவுகின்றன.
பிற சோதனைகள்
இவை செயல்பாடல்லாத பிற தேவைகளைப்பற்றிய (Non functional requirements) சோதனைகள். அவற்றுள் சில:
1) செயல்திறன் சோதனை (Performance testing)
2) பாதுகாப்பு சோதனை (Security testing)
3) பளுதாங்கும் சோதனை (Load testing)
4) பயன்மை சோதனை (Usability testing)
இந்த வகை சோதனைகளைப்பற்றி பிறிதொரு பதிவில் விவரமாக அறியலாம்.
இல. கலாராணி (lkalarani@gmail.com)