Test Driven Development – ஒரு அறிமுகம்
தகவெளிமை (agile) பற்றிய தொடரில் (www.kaniyam.com/agile-scrum-part-5/), அசோகன் அவர்கள் குறிப்பிடிருப்பது போல, XP என்பது மென்பொருளின் தரத்தையும், வாடிக்கையாளர்களின் தேவைகளுக்கு தக்கவாறு மென்பொருளில் மாற்றங்கள் கொண்டுவருவதையும், மேம்படுத்தும் நோக்கத்துடன் செயல்படும், மென்பொருள் உருவாக்க முறையாகும். இந்த முறை Kent Beck என்பவரால், உருவாக்கப்பட்டது. இதில், பல செயல்முறைகள் பரிந்துரைக்கப்படுள்ளன. அவற்றுள் TDD-க்கு ஒரு முக்கியமான இடமுண்டு.
TDD என்றால் என்ன?
TDD என்பது ஆங்கிலத்தில், Test Driven Development என்பதன் சுருக்கமாகும். அதாவது, நிரலானது, test-களின் வழிகாட்டுதலால் உருவாக்கப்படுகிறது.
1) நிரலாக்கத்தின் முதல்படியாக, ஒரு test எழுதவேண்டும். எழுதப்படவேண்டிய நிரலின் விவரக்குறிப்புகள் (specification) இந்த test-இல் வலியுறுத்தப்படுகின்றன (asserted). இந்த test இயக்கப்படும் பொழுது தோல்வியடைகிறது.
2) அடுத்ததாக, இந்த எதிர்பார்புகளை நிறைவேற்றும் நிரலை எழுதவேண்டும். இந்த நிரலானது test-ஐ வெற்றியடையச்செய்யவேண்டும்.
3) இறுதியாக, எழுதப்பட்ட நிரலை மேம்படுத்தவேண்டும்.
இதனை வரையறுத்தல் – உருவாக்கல் – சீர்படுத்தல் சுழற்சி (Red-Green-Refactor cycle) என அழைப்பர். இந்த மூன்று படிகளையும் மீண்டும் மீண்டும், முழு நிரலாக்கத்திற்கும், பின்பற்றுவதே TDD எனப்படும்.
நடைமுறையில் TDD
ஒரு எளிய உதாரணத்தை எடுத்துகொள்ளலாம். ஒரு சரத்தை (string) இடவலமாக திருப்பிஎழுதவேண்டுமென (reverse) வைத்துக்கொள்வோம். ரூபியில், இதற்க்கான, test-ஐ கீழ்கண்டவாறு எழுதலாம். இதற்கு rspec என்ற கட்டமைப்பு (framework) பயன்படுத்தப்பட்டுள்ளது.
இந்த test-ஐ இயக்கும் பொழுது, கீழ்கண்ட output-ஐ தரும்.
இந்த சிவப்புவண்ண output-ல், test எதிர்பார்த்தது (expected) என்ன என்பதையும் , நிரல் திருப்பியனுப்பிய மதிப்பு (got) என்ன என்பதையும் காணலாம். அடுத்து, இந்த test-ஐ வெற்றியடையச்செய்யும் நிரலை எழுதலாம்.
தற்போது இந்த test-ஐ இயக்கும் பொழுது, கீழ்கண்ட output-ஐ தரும்.
பச்சை வண்ணதிலுள்ள output, test-இன் எதிர்பார்புகளை, நிரல் நிறைவேற்றிவிட்டது என குறிக்கிறது. அனால், நிரல் நான்கைந்து வரிகளுக்கு நீண்டிருக்கிறது. நிரலை, சுருக்கமாக எழுதுவதே ரூபியின் சிறப்பம்சமாகும். ஆதலால், இந்த நிரலை மேம்படுத்த முயற்சிக்கலாம். ரூபியின் நிரல் ஆவணங்களிலிருந்து, String class-ல் reverse (ruby-doc.org/core-2.2.3/String.html#method-i-reverse) என்றொரு method இருப்பதாக அறிகிறோம். அதை நமது நிரலில் பயன்படுத்திப்பார்கலாம்.
மேற்கண்டவாறு நிரலை மாற்றியபின்னர், test -ஐ மீண்டும் இயக்கும்பொழுது, பச்சைவண்ண output-ஐ தருகிறது. இதனால், மாற்றப்பட்ட பின்னும், நிரலில், பிழையேதும் இல்லை என அறிகிறோம்.
TDD-யின் பயன்பாடுகள்
TDD-யின் முக்கிய நோக்கம், நிரலை எழுதவதற்குமுன், அதன் விவரங்கள் குறித்து ஒருமுறை பரிசீலனை செய்யும் வாய்ப்பை உருவாக்குநருக்கு (developer) வழங்குவதேயாகும். மேலும், test களின் தொகுப்பு (test suite), ஒரு வாழும் ஆவணமாக (living documentation) பயன்படுகிறது. பிற்காலத்தில், நிரலை மாற்றவேண்டிய அவசியம் ஏற்பட்டால், மாற்றப்பட்ட நிரல், ஆரம்பத்தில் கொடுக்கப்பட்ட விவரங்களுக்கு ஏற்றபடி உள்ளதா என சரிபார்க்கவும், test-கள், ஒரு பாதுகாப்பு வளையம் (safety net) போல பயன்படுகின்றன.
test-களின் வகைகள் என்ன?
ஒரு திட்டத்தில் TDD-ஐ பின்பற்ற, நிரலின் அமைப்பில், செய்யவேண்டிய மாற்றங்கள் என்ன?
rspec-ன் அடிப்படைக்கூறுகள் என்னென்ன?
இது போன்ற பல கேள்விகளுக்கான விடையை பின்வரும் பதிவுகளில் அறியலாம்.
கலாராணி – lkalarani@gmail.com