පරීක්ෂා කිරීම අවශ්ය වන්නේ ඇයි?
අපි මේ දක්වා මෘදුකාංගයක් සැලසුම් කර, එහි Frontend සහ Backend යන අංශ දෙකම නිර්මාණය කරන ආකාරය ඉගෙන ගත්තෙමු. නමුත්, අප ලියූ කේතය බලාපොරොත්තු වූ පරිදිම, දෝෂ රහිතව ක්රියාත්මක වේදැයි අප දන්නේ කෙසේද? මෘදුකාංගයක ඇති දෝෂ (Bugs) හඳුනාගෙන, එය පරිශීලක අවශ්යතා සපුරාලන්නේ දැයි තහවුරු කර ගැනීමේ ක්රියාවලිය මෘදුකාංග පරීක්ෂාව (Software Testing) ලෙස හැඳින්වේ.
තත්ත්ව සහතිකය (Quality Assurance - QA) යනු ඊට වඩා පුළුල් සංකල්පයකි. එහි අරමුණ දෝෂ හඳුනා ගැනීම පමණක් නොව, සංවර්ධන ක්රියාවලිය පුරාම ගුණාත්මකභාවය පවත්වා ගනිමින්, දෝෂ ඇතිවීම වැළැක්වීමයි. Testing යනු QA හි එක් වැදගත් කොටසකි. මෝටර් රථයක් නිර්මාණය කිරීමේදී, අවසානයේ එය පදවා බලා දෝෂ සෙවීම (Testing) වැනිය. නමුත්, නිෂ්පාදනයේදී භාවිතා කරන අමුද්රව්යවල සිට, සේවක පුහුණුව දක්වා වූ සම්පූර්ණ ක්රියාවලියම නිවැරදි ප්රමිතීන්ට අනුව සිදුවේදැයි බැලීම QA වැනිය.
සංවර්ධන ක්රියාවලියේ මුල් අවධියේදීම දෝෂයක් හඳුනා ගැනීම ඉතා ලාභදායී වේ. පරිශීලකයා අතට පත් වූ පසු දෝෂයක් හඳුනා ගතහොත්, එය නිවැරදි කිරීමට යන වියදම මෙන්ම, සමාගමේ කීර්තිනාමයට වන හානියද ඉතා ඉහළය.
ප්රධාන පරීක්ෂණ මට්ටම් (Levels of Testing)
මෘදුකාංගයක් විවිධ මට්ටම් වලදී පරීක්ෂාවට ලක් කෙරේ. මෙය පරීක්ෂණ පිරමීඩය (Testing Pyramid) ලෙසද හැඳින්වේ.
1. ඒකක පරීක්ෂාව (Unit Testing)
කුමක්ද?: මෘදුකාංගයේ ඇති කුඩාම, ස්වාධීන කොටස් (උදා: තනි function එකක් හෝ class එකක්) හුදකලාව පරීක්ෂා කිරීම.
කවුරුන් විසින්ද?: කේතය ලියූ සංවර්ධකයා (Developer) විසින්ම සිදු කරයි.
උපමාව: LEGO වලින් මාලිගාවක් සෑදීමට පෙර, එක් එක් LEGO කැබැල්ල නිවැරදි හැඩයෙන් සහ වර්ණයෙන් ඇත්දැයි පරීක්ෂා කිරීම වැනිය.
2. ඒකාබද්ධතා පරීක්ෂාව (Integration Testing)
කුමක්ද?: වෙන වෙනම පරීක්ෂා කළ ඒකක (units) එකට එකතු කළ විට, ඒවා එකිනෙක සමග නිවැරදිව සන්නිවේදනය කරමින්, බලාපොරොත්තු වූ පරිදි ක්රියා කරන්නේ දැයි පරීක්ෂා කිරීම.
කවුරුන් විසින්ද?: සංවර්ධකයන් හෝ QA ඉංජිනේරුවන් විසින් සිදු කරයි.
උපමාව: LEGO කැබලි කිහිපයක් එකට සම්බන්ධ කර, ඒවා එකිනෙකට හොඳින් සවි වේදැයි පරීක්ෂා කිරීම. (උදා: Login UI එක Authentication service එක සමග නිවැරදිව ක්රියා කරන්නේද?)
3. පද්ධති පරීක්ෂාව (System Testing)
කුමක්ද?: සම්පූර්ණයෙන්ම එකලස් කරන ලද මෘදුකාංගය, එකම පද්ධතියක් ලෙස, ආරම්භයේ සිට අවසානය දක්වා (end-to-end) පරීක්ෂා කිරීම. මෙහිදී, මෘදුකාංගය මුල් අවශ්යතා (requirements) සියල්ල සපුරාලන්නේ දැයි තහවුරු කර ගනී.
කවුරුන් විසින්ද?: ප්රධාන වශයෙන් QA කණ්ඩායම විසින් සිදු කරයි.
උපමාව: සම්පූර්ණයෙන්ම සාදා නිම කළ LEGO මාලිගාව, පෙට්ටියේ ඇති පින්තූරය මෙන් පෙනේද, එහි දොරටු, කුළුණු නිවැරදිව ක්රියා කරන්නේදැයි පරීක්ෂා කිරීම වැනිය.
Manual Testing vs. Automated Testing
- මානව පරීක්ෂාව (Manual Testing): QA ඉංජිනේරුවෙකු සැබෑ පරිශීලකයෙකු මෙන්, යෙදුම click කරමින්, දත්ත ඇතුලත් කරමින්, එහි ක්රියාකාරීත්වය පරීක්ෂා කිරීම. මෙය ගවේෂණාත්මක පරීක්ෂණ (exploratory testing) සඳහා සහ පරිශීලක-හිතකාමී බව (usability) මැනීමට ඉතා වැදගත් වේ. නමුත් එය කාලය ගතවන, මිනිස් වැරදි වලට ඉඩ ඇති ක්රමයකි.
- ස්වයංක්රීය පරීක්ෂාව (Automated Testing): විශේෂිත මෘදුකාංග (Selenium, Cypress වැනි) සහ scripts භාවිතා කර, පරීක්ෂණ ක්රියාවලිය ස්වයංක්රීයව සිදු කිරීම. මෙය වේගවත්, විශ්වාසනීය සහ නැවත නැවත සිදු කළ හැකි ක්රමයකි. විශේෂයෙන්ම, නව වෙනස්කම් නිසා පැරණි ක්රියාකාරීත්වයන් බිඳී ඇත්දැයි පරීක්ෂා කිරීමට (Regression Testing) මෙය අත්යවශ්ය වේ.
අවසාන වශයෙන්
පරීක්ෂාව සහ තත්ත්ව සහතිකය යනු සංවර්ධන ක්රියාවලිය අවසානයේ සිදු කරන දෙයක් නොව, එය ආරම්භයේ සිට අවසානය දක්වාම අඛණ්ඩව සිදුවිය යුතු ක්රියාවලියකි. එමගින් අප නිර්මාණය කරන මෘදුකාංගය පිළිබඳව විශ්වාසයක් ගොඩනගා ගැනීමටත්, පරිශීලකයාට උසස් තත්ත්වයේ අත්දැකීමක් ලබා දීමටත් හැකි වේ.
සංවර්ධකයන් කිහිප දෙනෙකු එකම ව්යාපෘතියක කේත ලියමින්, පරීක්ෂණ සිදු කරමින්, වෙනස්කම් සිදු කරන විට, එම සියලු වෙනස්කම් ගැටුම් වලින් තොරව කළමනාකරණය කිරීමට ක්රමයක් අවශ්ය වේ. ඒ සඳහා භාවිතා කරන "අනුවාද පාලනය (Version Control)" සහ Git, GitHub වැනි මෙවලම් පිළිබඳව අපි ඊළඟ මොඩියුලයෙන් ඉගෙන ගනිමු.