এজেন্ট দ্বারা লিখিত কোডের জন্য মিউটেশন টেস্টিং

LLM-জেনারেটেড টেস্ট স্যুটগুলো ১০০% লাইন এবং ব্রাঞ্চ কভারেজ (line and branch coverage) অর্জন করতে পারে, কিন্তু সাম্প্রতিক একটি গবেষণা দেখাচ্ছে যে মিউটেশন টেস্টিংয়ে এগুলোর স্কোর মাত্র ৪%, যা একটি নির্ভরযোগ্যতার ঘাটতি প্রকাশ করে যা ডেভেলপাররা স্প্রিন্ট রিভিউতে (sprint reviews) মিস করতে পারেন।

গবেষকরা HumanEval-Java বেঞ্চমার্কে লার্জ-ল্যাঙ্গুয়েজ-মডেল কোডিং এজেন্ট দ্বারা তৈরি টেস্ট স্যুটগুলো মূল্যায়ন করেছেন। একটি স্যুট কোডের প্রতিটি লাইন কভার করেছিল এবং প্রতিটি কন্ডিশনাল ব্রাঞ্চ (conditional branch) পরীক্ষা করেছিল। যখন একই স্যুট মিউটেশন টেস্টিংয়ের মুখোমুখি হয়—যা একটি কৌশল যেখানে ছোটখাটো ত্রুটি ইনজেক্ট করা হয় দেখার জন্য যে টেস্টগুলো সেগুলো শনাক্ত করতে পারে কি না—তখন এটি ইনজেক্ট করা বাগগুলোর মাত্র একটি ক্ষুদ্র অংশ ধরতে পেরেছিল।

কভারেজ দেখতে ভালো মনে হলেও, এর প্রকৃত অর্থ কী?

প্রথাগত কভারেজ মেট্রিক্স গণনা করে একটি টেস্ট কতগুলো স্টেটমেন্ট বা ব্রাঞ্চ রান করে। স্প্রিন্ট ডেমোতে (sprint demos) টিমগুলো এই বড় সংখ্যাগুলো দেখে খুব খুশি হয়। তবে, এই মেট্রিকটি কোড ভুল হলে টেস্টগুলো ফেইল করবে কি না সে সম্পর্কে কিছুই বলে না। মিউটেশন টেস্টিং ইচ্ছাকৃতভাবে ত্রুটি (mutants) তৈরি করে এবং সেই মিউট্যান্টগুলোর কত শতাংশ টেস্ট ফেইল করায় তা পরিমাপ করার মাধ্যমে সেই ঘাটতি পূরণ করে—যাকে বলা হয় "মিউটেশন স্কোর" (mutation score)।

গবেষণায় দেখা গেছে, ১০০% কভারেজ থাকা স্যুটটি লিপ-ইয়ার (leap-year) সংক্রান্ত তারিখের ভুল হ্যান্ডলিংয়ের মতো সাধারণ লজিক এররসহ প্রায় প্রতিটি মিউট্যান্টই মিস করেছে। ৪% মিউটেশন স্কোর মানে হলো এই স্যুটটি মাত্র হাতেগোনা কয়েকটি আসল বাগ শনাক্ত করতে পারবে।

এআই-সহায়তা সম্পন্ন (AI-assisted) ডেভেলপমেন্টের জন্য এটি কেন গুরুত্বপূর্ণ

  • ভুল আত্মবিশ্বাস: ডেভেলপাররা এমন একটি টেস্ট স্যুটকে বিশ্বাস করতে পারেন যা কাগজে-কলমে নিখুঁত মনে হয়।
  • লুকানো ত্রুটি: অনেক বাগ লক্ষ্য না করেই পার হয়ে যায়।
  • সমাধানের খরচ: পরে বাগ ঠিক করার খরচ শুরুতে ধরা পড়ার চেয়ে অনেক বেশি হয়।

পাল্টা যুক্তি: কভারেজ একেবারে অকেজো নয়

কভারেজ এখনও আপনাকে জানায় যে কোড পাথগুলো রান করছে কি না, কিন্তু এটি ত্রুটি শনাক্ত করার গ্যারান্টি দেয় না।

পরবর্তীতে যা খেয়াল রাখতে হবে

  • টুলিং ইন্টিগ্রেশন: CI পাইপলাইনে মিউটেশন টেস্টিং অন্তর্ভুক্ত করুন।
  • LLM উন্নয়ন: এজেন্টদের এমন টেস্ট তৈরি করতে প্রশিক্ষণ দিন যা মিউট্যান্টগুলোকে শনাক্ত করতে (kill mutants) পারে।
  • শিল্প নির্দেশিকা: এমন স্ট্যান্ডার্ড গ্রহণ করুন যা কভারেজের সাথে মিউটেশন স্কোরকেও যুক্ত করে।

সারকথা: এআই-জেনারেটেড টেস্ট থেকে প্রাপ্ত উচ্চ কভারেজ সংখ্যা এখন আর মানের পর্যাপ্ত প্রমাণ নয়; একটি নিম্ন মিউটেশন স্কোর নির্দেশ করে যে টেস্টগুলো আসল বাগ ধরতে না-ও পারে, যা ডেভেলপারদের একটি সেফটি নেট হিসেবে মিউটেশন টেস্টিং গ্রহণ করার তাগিদ দেয়।