சாப்ட்வேர் டெஸ்டிங் -15 – வெள்ளைப் பெட்டி உத்திகள் – 3

இந்தப் பதிவில் நாம் பார்க்கவிருப்பது வழிச் சோதனை முறை தான்!

3) வழிச் சோதனை முறை (Path Coverage)

ஒரு நிரலின் எல்லா வழிகளையும் சோதித்துப் பார்ப்பது தான் வழிச் சோதனை முறை ஆகும்.

நாம் இது வரை பார்த்த சோதனை முறைகளை எல்லாம் வைத்து சுழல் முறை  கடினத்தன்மை (‘Cyclomatic Complexity’)யைக் கண்டுபிடிக்கலாம்.  அதென்ன ‘சுழல் முறை கடினத்தன்மை’ – பேரே புதிதாக இருக்கிறது – ஒன்றுமே புரியவில்லை – என்றெல்லாம் நினைக்கத் தொடங்கி விடாதீர்கள்.  இன்னும் அடுத்த ஐந்து நிமிடங்களுக்குள் புரிந்து விடும். கீழுள்ள படத்தைப் பாருங்கள்.

வெள்ளைப்பெட்டி உத்திகள்

ஒரு நிரலைத் தான் இப்படிப் படமாக வரைந்து வைத்திருக்கிறோம்.

இங்கு மொத்தம் உள்ள மூடிய பகுதிகள் 5, வெளிப்பகுதி 1 என மொத்தப் பகுதிகள் 6.  சுழல்முறை கடினத்தன்மை என்பது எப்படிச் சுழன்றாலும் இந்த நிரலைச் சோதிப்பதற்கு என்னென்ன வழிமுறைகள் இருக்கின்றன என்று சொல்வது!  அவ்வளவுதான்!  மேல் உள்ள நிரலில் மொத்தப் பகுதிகள் 6.  அதாவது, ஆக, இதன் கடினத்தன்மை சற்றுக் கூடுதல் தான்!  இதே போல் கீழ் உள்ள நிரலைப் பாருங்கள்.  ஒரே நேர்கோட்டில் இந்த நிரல் பயணிக்கிறது.

சுழல்முறை கடினத்தன்மை – கண்டுபிடிப்பது எப்படி?

முதல் நிரலில் உள்ள வட்டங்கள் 13.  இந்த வட்டங்களை ‘Nodes’ என்று குறிப்பிடுவார்கள்.  மொத்தமுள்ள அம்புக்குறிகள் 17.  அம்புக்குறிகள் ‘Edges’  எனப்படும்.  பிரிக்கும் வட்டங்கள் – அதாவது எந்தெந்த வட்டங்களில் இருந்து ஒன்றுக்கு மேற்பட்ட அம்புக்குறிகள் வருகின்றனவோ (அந்த அம்புக்குறிகள் – புது வழிகளைக் காட்ட வேண்டும்) அவை – பிரிக்கும் வட்டங்கள் (Predicate Nodes) எனச் சொல்லப்படுகின்றன.  அவற்றின் எண்ணிக்கை இங்கு, 5.

இங்கு சுழல்முறை கடினத்தன்மை(Cyclomatic ComplexityCC) என்பது,

CC = E-N+2

CC -> Cyclomatic Complexity, E – Edges, N – Nodes

அதாவது, CC = 17-13+2 => 6.  அதாவது 6 வழிகளில் இந்த நிரல் கட்டாயம் சோதிக்கப்பட வேண்டும்.  எவையெவை அந்த ஆறு வழிகள்?

  • 1-2-3-5-7-11-13
  • 1-2-3-5-8-11-13
  • மேல் உள்ள 2 வழிகளில் 11இல் இருந்து (படத்தைப் பார்க்கவும்) 2க்குப் போய் மீண்டும் அதே வழியில் வருவது
  • 1-2-4-6-9-12-13
  • 1-2-4-6-10-12-13
  • மேல் உள்ள 2 வழிகளில் 12இல் இருந்து (படத்தைப் பார்க்கவும்) 4க்குப் போய் மீண்டும் அதே வழியில் வருவது

சுழல்முறை கடினத்தன்மையை முடிவு செய்வதில் ஒரு வட்டதையோ, அம்புக்குறியையோ நீங்கள் எண்ணாமல் விட்டால் கூட, கடினத்தன்மையின் மதிப்பு மாறி விடும்.  எனவே, ஏதாவது ஒரு மாற்று வழியில் அந்தக் கடினத்தன்மை மதிப்பு சரியானது தான்!  என்பதை உறுதிப்படுத்த வேண்டும் அல்லவா?

அந்தச் சூத்திரம் தான் –

CC = P + 2

P – Predicate Node – பிரிக்கும் வட்டம்

இங்கு பிரிக்கும் வட்டங்கள் – 2, 5, 4, 6 என மொத்தம் நான்கு.

எனவே CC = 4 + 2 => 6

இந்தக் கடினத் தன்மை மதிப்பும் இதற்கு முன் நாம் கண்டுபிடித்த மதிப்பும் பொருந்த வேண்டும்.  அப்போது தான், நாம் சரியான மதிப்பைக் கண்டுபிடித்திருக்கிறோம் என்று அர்த்தம்!

இப்போது மேல் உள்ள முதல் நிரலுக்கு, வரிவரிச் சோதனை, கிளைவரிச் சோதனை, வழிச்சோதனை ஆகியனவற்றின் மதிப்புகளைக் கொஞ்சம் யோசிக்கலாமா?

வழிச் சோதனை – 6 – இப்போது தான் பார்த்தோம் – எத்தனை வழிகள் இருக்கின்றன என்று!

வரிவரிச் சோதனை – இதற்கான எளிய வழிமுறை – எல்லா வட்டங்களையும் (Edges) இணைக்கும் வழிகள் எத்தனை இருக்கின்றன என்று பார்ப்பது – இங்கு

  • 1-2-3-5-7-11-13
  • 1-2-3-5-8-11-13
  • 1-2-4-6-9-12-13
  • 1-2-4-6-10-12-13

என்று நான்கு வழிகள் இருக்கின்றன.  எனவே, வரிவரிச் சோதனையின் மதிப்பு 4 ஆகும்.

 

கிளைவழிச் சோதனை – இதற்கான எளிய வழிமுறை – எல்லா அம்புக்குறிகளையும் (Nodes) இணைக்கும் வழிகள் எத்தனை இருக்கின்றன என்று பார்ப்பது – இங்கு

  • 1-2-3-5-7-11-13
  • 1-2-3-5-8-11-13
  • 1-2-4-6-9-12-13
  • 1-2-4-6-10-12-13
  • 1-2-3-5-7-11-2-மீண்டும் 13 வரை,
  • இதே போல், 1-2-4-6-9-12-4-மீண்டும் 13 வரை

எனக் கிளை வழிச் சோதனையின் மதிப்பு 6 ஆகும்.

 

முதன்மையான குறிப்பு:

100 % வழிச் சோதனை செய்தால் 100% கிளைவழிச் சோதனை செய்தது போல் ஆகும்.

100% கிளைவழிச் சோதனை செய்வது 100% வரிவரிச் சோதனை செய்தது போல் ஆகும்.

 

மாற்றவழிச் சோதனையை(Mutation Testing) யும் இப்போதே பேசி, எல்லை தாண்டிய பயங்கரவாதத்தில் இறங்க வேண்டாம் என்று நினைக்கிறேன்.  அதை வேண்டுமானால் அடுத்த பதிவில் பேசுவோம்.

– கி. முத்துராமலிங்கம் (muthu@payilagam.com)

பட உதவி: sites.google.com/

%d bloggers like this: