AI-দ্বারা তৈরি টেস্টগুলো অডিট করুন: অর্ধেক সবুজ CI আসলে কিছুই প্রমাণ করে না
একটি সফল টেস্ট প্রমাণ বলে মনে হয়। কিন্তু এটি সাধারণত আপনার ভাবনার চেয়েও কম কিছু।
একটি টেস্ট নিশ্চিত করে যে কোডটি ঠিক তেমনভাবেই কাজ করছে যেমনটি টেস্টটি প্রত্যাশা করে। যদি একই লেখক কোড এবং প্রত্যাশা (expectation) উভয়ই লেখেন, তবে প্রত্যাশাটি কোড দ্বারা প্রভাবিত হয়। টেস্টটি সফল হয় কারণ এটি সফল হওয়ার জন্যই লেখা হয়েছে।
একটি সবুজ টিক চিহ্ন প্রমাণ করে যে আপনার টেস্টগুলো কোডের সাথে একমত। এটি প্রমাণ করে না যে কোডটি সঠিক।
এই সমস্যাটি আরও বেড়ে যায় যখন AI এজেন্টরা সম্পূর্ণ pull request পাঠিয়ে দেয়। তারা একসাথেই ইমপ্লিমেন্টেশন এবং টেস্ট লিখে ফেলে। লেখক পরিবর্তন হলেও টিক চিহ্নের নির্ভরযোগ্যতা বাড়ে না।
এই ব্যবধানটি খুঁজে বের করার জন্য আমি mirror_audit.py তৈরি করেছি। এটি AST ব্যবহার করে টেস্টের সোর্স পড়ে। এটি কখনোই কোডটি রান করে না। এটি তিনটি সাধারণ প্যাটার্ন খোঁজে:
- দ্য রিকম্পিউট (The Recompute): টেস্টটি কোডের মতোই একই ফর্মুলা ব্যবহার করে। এটি আসলে ছদ্মবেশে থাকা f(x) == f(x)।
- দ্য গোল্ডেন লিটারেল (The Golden Literal): টেস্টটি পূর্ববর্তী কোনো রান থেকে কপি করা একটি সংখ্যা ব্যবহার করে। এটি টেস্টটিকে প্রথম দিনের কোডের ফলাফলের সাথে আটকে দেয়, যার মধ্যে বাগও (bugs) থাকতে পারে।
- দ্য স্মোক টেস্ট (The Smoke Test): টেস্টটি কেবল দেখে যে ফলাফলটি
Noneকি না, কিন্তু এতে কোনো প্রকৃত অ্যাসারশন (assertion) থাকে না।
আমি এটি দুটি সুইটের (suite) ওপর চালিয়েছি।
প্রথম সুইটটি ইমপ্লিমেন্টেশনকে অনুকরণ করার জন্য ডিজাইন করা হয়েছিল। এটি ৫০.০% mirror-ratio স্কোর করেছে। CI ব্যর্থ হয়েছে। অর্ধেক টেস্টের কোনো স্বতন্ত্র সংকেত (independent signal) ছিল না।
দ্বিতীয় সুইটটি ছিল সৎ। এটি নেগেটিভ কেস এবং স্বতন্ত্র প্রত্যাশা ব্যবহার করেছিল। এটি ০.০% স্কোর করেছে। CI সফল হয়েছে।
mirror-ratio আপনার বাগের হার পরিমাপ করে না। এটি পরিমাপ করে কতটুকু স্বতন্ত্র সংকেত অনুপস্থিত। এটি আপনাকে জানায় যে আপনার সবুজ CI-এর কতটুকু অংশ আসলে কোডের সাথে কেবল তাল মিলিয়ে চলা মাত্র।
যদি একটি টেস্ট ইমপ্লিমেন্টেশনের মতোই একই ত্রুটিপূর্ণ ফলাফল গণনা করে, তবে টেস্টটি সবুজই থাকে। কিন্তু যদি একটি টেস্ট প্রকৃত চুক্তি (contract) নিশ্চিত করে, তবে টেস্টটি লাল হয়ে যায় এবং বাগটি ধরে ফেলে।
শুধুমাত্র কভারেজের দিকে তাকানো বন্ধ করুন। নিজেকে প্রশ্ন করুন যে আপনার টেস্টগুলো কি আসলেই কোনো বাস্তব কারণে ব্যর্থ হতে পারে কি না।
Source: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Optional learning community: https://t.me/GyaanSetuAi
