සොෆ්ට්වෙයා සංවර්ධකයින්ට වැඩේ තවත් කාලයක් ගත නොකළ හැකි ප්රධාන ගැටළුවක් තිබුණා – CI (Continuous Integration) පරීක්ෂණ පද්ධතිය 45 මිනිත්තු පමණ දිගුවීම. කේතයක් හෝ ගොනුවක් එක්කෙනා වෙනස් කරනවාට පමණක්, සියලු 2,000 පරීක්ෂණ ධාවනය කරලා බලන්න ඕනේද? නැත්නම් නාමය ගැලපෙන පරීක්ෂණවලට පමණක්? ඒකත් වැරදියි. එම ගැටළුවට උත්තරයක් සොයා ගත්තා TRUE Coverage නම් නව ක්රමයක්.
ඇත්තේ මොකද්ද?
ඉතිහාසයේ පරීක්ෂණ ආවරණ (coverage) මෙවලම් පරීක්ෂණයක් ක්රියාත්මක කළ විට එම කේත කොටස් කුමක්ද යන්න සටහන් කරයි. නමුත් ඒවා සාමාන්යයෙන් ගොනු මට්ටමින් වාර්තා කරයි, තනි පරීක්ෂණ මට්ටමින් නොව. TRUE Coverage මේ අඩුවුම පිරවීම සඳහා, එක් එක් පරීක්ෂණය ධාවනය වූ පසු ආවරණ දත්ත සුරකිමින්, එම පරීක්ෂණය කුමන කේත ගොනු තැවූද යන්න සම්බන්ධිත සිතියමක් (reverse map) සකස් කරයි.
මෙම සිතියම නිර්මාණය කරගැනීමේ පියවර පහක්:
- පියවර 1: කේතය instrument කර coverage plugin එක්ක සකස් කිරීම.
- පියවර 2: පරීක්ෂණ පසුකාලීන hook (afterEach) භාවිතයෙන් ආවරණ දත්ත JSON ගොනුවක් ලෙස සුරැකීම.
- පියවර 3: සියලු ආවරණ ගොනුවන් විශ්ලේෂණය කර, පරීක්ෂණ නාමය ↔︎ ගොනු සම්බන්ධිත සිතියම ගොඩනැගීම.
- පියවර 4: Git diff මඟින් වෙනස් වූ ගොනු ලැයිස්තුව ගෙන, සිතියමෙන් අදාල පරීක්ෂණ හඳුනාගැනීම.
- පියවර 5: සිතියම ස්වයංක්රීයව යාවත්කාලීන කර Git commit එකක් ලෙස සුරකින්න.
ඉතින්, 43 මිනිත්තු CI කාලය 4 මිනිත්තුකට කඩා වැටුනි. පරීක්ෂණ ගණන 47 සිට 4 දක්වා, වියදම $12 සිට $1.20 දක්වා අඩු වුණා. නිරවද්යතාව 15% සිට 95%+ දක්වා ඉහළ ගියේය.
ශ්රී ලංකාවට ඇති වැදගත්කම
- විශ්ව විද්යාල සහ පශ්චාත් උපාධි සිසුන්ට CI ක්රමවේදය තේරුම් ගැනීමට ප්රායෝගික උදාහරණයක්.
- දේශීය සොෆ්ට්වෙයා සංවර්ධකයින්ට පරීක්ෂණ කාලය අඩු කර, නිෂ්පාදන වේගය වැඩි කරගැනීමට සරල ක්රමයක්.
- ව්යාපාරිකයන්ට CI පිරිවැය $10කට අඩු කර, වසරකට හදාරන පිරිවැය ඉතා වැදගත් ලෙස අඩු කිරීමේ හැකියාව.
- ආවරණ මට්ටම 95%+ වෙයි කියලා, ගුණාත්මක කේතය රැකගැනීමේ විශ්වාසය වැඩි වේ.
මෙම ක්රමය JavaScript, Python, Ruby, Java වැනි බහුභාෂා පරිසර වලට ගැළපේ. ඒ නිසා ශ්රී ලංකාවේ විවිධ තාක්ෂණික කණ්ඩායම් එකම උපකරණය භාවිතා කර, CI කාලය අඩු කරගත හැකිය.
ඉදිරියේදී, නවතම CI/CD මෙවලම් සමඟ ඒකාබද්ධ කර, ස්වයංක්රීය පරීක්ෂණ තේරීමේ නීති රීති තවත් දියුණු කළ හැකි බවට අපේක්ෂා කරනවා.