আপনার টেস্ট স্যুটটি অকেজো যদি কেউ এর ব্যর্থতাগুলোকে বিশ্বাস না করে। টিমগুলো আরও বেশি টেস্ট, উন্নত ড্যাশবোর্ড বা প্যারালাল এক্সিকিউশন যোগ করে, তবুও ডেভেলপাররা লাল বক্সটি অদৃশ্য হওয়ার আশায় বারবার পাইপলাইন পুনরায় রান করেন। এই অভ্যাসটি একটি সম্ভাব্য মূল্যবান সংকেতকে ব্যয়বহুল নয়েজে (noise) পরিণত করে।
আসল সমস্যা হলো বিশ্বাসযোগ্যতা, কভারেজ নয়
বেশিরভাগ ইঞ্জিনিয়ারিং গ্রুপ টেস্টের অভাব বা অপর্যাপ্ত ব্রাউজার কভারেজকে দোষারোপ করে। বাস্তবে, ব্যর্থতাগুলোকে কেবল 'নয়েজ' হিসেবে দেখা হয়। ড্যাশবোর্ডে ৯৬% পাস রেট দেখতে চিত্তাকর্ষক মনে হলেও, এটি আপনাকে কিছুই জানায় না যে সেই ৪% ব্যর্থতা কি প্রকৃত ত্রুটি শনাক্ত করেছে নাকি সেগুলো প্রকাশ পেতে বারবার রিট্রাই (retry) করতে হয়েছে। যখন ডেভেলপাররা ব্যর্থতাগুলোকে উপেক্ষা করেন, তখন টেস্ট স্যুটটি কোনো সিদ্ধান্ত নিতে সাহায্য না করেই সময় এবং কম্পিউট রিসোর্স অপচয় করে।
কেন পাস রেট বিভ্রান্তিকর হতে পারে
পাস-রেট মেট্রিক্স সমস্ত ফলাফলকে একটি মাত্র সংখ্যায় সংকুচিত করে ফেলে, যা দুটি গুরুত্বপূর্ণ প্রশ্নকে আড়াল করে রাখে:
- ব্যর্থতাগুলো কি প্রকৃত ত্রুটি প্রকাশ করেছে? একটি ফ্ল্যাকি টেস্ট (flaky test) যা কখনোই কোনো বাগ ধরতে পারে না, তার কোনো মূল্য নেই।
- কতবার রিট্রাই করতে হয়েছে? একটি টেস্ট স্যুট যদি তিনটি অটোমেটিক রিট্রাইয়ের পর পাস হয়, তবে চূড়ান্ত পাস রেট বেশি হলেও সেটি অনির্ভরযোগ্য।
একটি টেস্ট স্যুট যা ৯৯% সাফল্যের রিপোর্ট দেয় কিন্তু বারবার চেকআউট ফেইলিওর মিস করে, সেটি তার চেয়ে অনেক বেশি খারাপ যা ৯২% সময় পাস করে কিন্তু রেভিনিউ বা আয়কে প্রভাবিত করে এমন প্রতিটি বাগ শনাক্ত করতে পারে। লক্ষ্য কোনো উচ্চ শতাংশ অর্জন করা নয়; বরং ঝুঁকি সম্পর্কে সঠিক ধারণা পাওয়া।
গুরুত্বপূর্ণ মেট্রিক্স
পাস-রেটের ওপর মনোযোগ না দিয়ে এমন কিছু পরিমাপের দিকে নজর দিন যা টেস্ট স্যুটের উপযোগিতা প্রতিফলিত করে:
- Failure recurrence (ব্যর্থতার পুনরাবৃত্তি) – পরপর কতবার একই টেস্ট ব্যর্থ হচ্ছে।
- Defect detection rate (ত্রুটি শনাক্তকরণ হার) – ব্যর্থতাগুলোর মধ্যে কত শতাংশ নিশ্চিত বাগ (bug) হিসেবে প্রমাণিত হয়।
- Time to diagnosis (নির্ণয় করার সময়) – একটি ব্যর্থ টেস্ট কত দ্রুত বোঝা এবং ব্যবস্থা নেওয়া সম্ভব।
- Retry dependence (রিট্রাই-এর ওপর নির্ভরতা) – পাস করার জন্য কত ঘনঘন টেস্টগুলোকে অটোমেটিক পুনরায় রান করতে হয়।
- Escaped regressions (এস্কেপড রিগ্রেশন) – টেস্ট স্যুট থাকা সত্ত্বেও যে ত্রুটিগুলো ধরা পড়েনি।
এই সংকেতগুলো ট্র্যাক করলে আপনি বুঝতে পারবেন যে একটি ব্যর্থতা কি আপনার জন্য কোনো সতর্কবার্তা নাকি এটি কেবল একটি ফ্ল্যাক (flake)।
রক্ষণাবেক্ষণের লুকানো খরচ
একটি টেস্ট লিখতে দশ মিনিট সময় লাগলেও সেটি ঠিক করতে মাসে তিন ঘণ্টা সময় লাগলে তা একটি খারাপ বিনিয়োগ। যখন টেস্টগুলো ভঙ্গুর হয়, ক্রমাগত ডেটা আপডেট করতে হয় বা ভঙ্গুর UI সিলেক্টর-এর ওপর নির্ভর করে, তখন রক্ষণাবেক্ষণের খরচ বেড়ে যায়। AI যখন টেস্ট জেনারেট করে, তখন এই খরচ আরও প্রকট হয়ে ওঠে। জেনারেশনের গতি খুব একটা কাজে আসে না যদি জেনারেট করা টেস্টগুলো UI পরিবর্তনের সাথে সাথেই ভেঙে পড়ে।
AI-জেনারেটেড টেস্টগুলো মূল্যায়ন করার সময় নিজেকে প্রশ্ন করুন:
- কত ঘনঘন টেস্টটিতে ম্যানুয়াল এডিটিং প্রয়োজন হয়?
- এটি কেন ব্যর্থ হয়েছে তা কত স্পষ্টভাবে ব্যাখ্যা করে?
- ব্যর্থতাটি ঠিক করার জন্য একজন মানুষের কতটুকু কনটেক্সট বা প্রেক্ষাপট প্রয়োজন?
যদি উত্তরগুলো বারবার মানুষের হস্তক্ষেপের দিকে নির্দেশ করে, তবে অটোমেশনের আসল সুফল হারিয়ে যায়।
অবজারভেবিলিটি: ব্যর্থতাকে কার্যকর করে তোলা
একটি ৪,০০০ লাইনের লগ যা বিশ্লেষণ করতে চল্লিশ মিনিট সময় লাগে, তা লগ না থাকার মতোই অকেজো। ভালো অবজারভেবিলিটি আপনাকে দ্রুত তিনটি প্রশ্নের উত্তর দিতে সাহায্য করে:
- টেস্টটি কী প্রত্যাশা করেছিল?
- আসলে কী ঘটেছে?
- মূল কারণটি কি প্রোডাক্ট বাগ, ডেটা সমস্যা নাকি ইনফ্রাস্ট্রাকচার সমস্যা?
AI এজেন্টদের টেস্টিংয়ের জন্য আরও গভীর যাচাইকরণ প্রয়োজন
যখন টেস্ট করা সিস্টেমটি একটি AI-চালিত এজেন্ট হয়, তখন একটি পাস হওয়া টেস্ট একটি ত্রুটিপূর্ণ অভ্যন্তরীণ প্রক্রিয়াকে আড়াল করতে পারে। একটি এজেন্ট ভুল শর্টকাট নিয়ে, ভুল টুল নির্বাচন করে বা তার মেমরি সঠিকভাবে আপডেট করতে না পেরেও সঠিক উত্তরে পৌঁছাতে পারে। তাই নির্ভরযোগ্য টেস্টিংয়ের জন্য নিচের বিষয়গুলো পরীক্ষা করা প্রয়োজন:
- টুল সিলেকশন লজিক
- মেমরি আপডেট করার আচরণ
- ত্রুটির পর রিকভারি মেকানিজম
শুধুমাত্র যখন একটি এজেন্ট ব্যর্থতার পরিস্থিতিতেও পূর্বাভাসযোগ্যভাবে আচরণ করে, তখনই তার আউটপুটকে বিশ্বাস করা যায়।
টেস্ট রক্ষণাবেক্ষণকে প্রোডাক্টের কাজ হিসেবে বিবেচনা করুন
অস্থির টেস্টগুলোকে অন্য যেকোনো কোডের মতোই কঠোরভাবে পরিচালনা করুন:
- যে টেস্টগুলো আর ব্যবসায়িক মূল্য বহন করে না সেগুলো সরিয়ে ফেলুন।
- যে টেস্টগুলোতে ঘনঘন রিট্রাই করতে হয় সেগুলো রিভিউ এবং রিফ্যাক্টর করুন।
- ডেটা ভেঙে যাওয়ার আগেই প্রোঅ্যাক্টিভলি টেস্ট ডেটা আপডেট করুন।
- ফ্ল্যাকি বা উচ্চ-ঝুঁকিপূর্ণ ক্ষেত্রগুলোর জন্য স্পষ্ট মালিকানা (ownership) নির্ধারণ করুন।
পরবর্তীতে যা খেয়াল রাখতে হবে
AI-জেনারেটেড টেস্ট টুলিংয়ের দিকে নজর রাখুন: এর মূল্য টেস্টের সংখ্যা দিয়ে নয়, বরং ম্যানুয়াল এডিটিংয়ের হ্রাস এবং ব্যর্থতার স্পষ্ট ব্যাখ্যার মাধ্যমে বিচার করা হবে।
সারসংক্ষেপ
একটি টেস্ট স্যুট প্রতিটি কার্যকর ব্যর্থতার মাধ্যমে বিশ্বাস অর্জন করে। যখন ব্যর্থতাগুলো আর কার্যকর থাকে না, তখন আরও বেশি টেস্ট যোগ করা সমস্যাটিকে আরও বাড়িয়ে দেয়। চকচকে পাস পার্সেন্টেজের পরিবর্তে বাস্তবসম্মত ঝুঁকি-কেন্দ্রিক মেট্রিক্সের দিকে মনোযোগ দিন, অবজারভেবিলিটিতে বিনিয়োগ করুন এবং টেস্ট রক্ষণাবেক্ষণকে একটি মূল প্রোডাক্ট কার্যক্রম হিসেবে বিবেচনা করুন। এর ফলে আপনি একটি হালকা এবং আরও নির্ভরযোগ্য অটোমেশন লেয়ার পাবেন যা টিমকে নয়েজে ডুবিয়ে না দিয়ে বরং সঠিক সিদ্ধান্ত নিতে সাহায্য করবে।
