টেস্ট জেনারেশনের জন্য AI: যেখানে এটি সাহায্য করে এবং যেখানে এটি বিভ্রান্তিকর

AI দ্রুত টেস্ট লিখতে পারে। এটি এমন টেস্টও লিখে যা দেখতে আসল মনে হলেও আসলে ভুল জিনিস যাচাই করে।

আপনি একটি ফাংশন AI-তে পেস্ট করলেন। ত্রিশ সেকেন্ড পরে, আপনার কাছে বারোটি পাস করা টেস্ট রয়েছে। আপনার কভারেজ স্কোর বেড়ে যায়। আপনি নিজেকে প্রোডাক্টিভ মনে করেন।

তারপর প্রোডাকশনে একটি বাগ (bug) দেখা দেয়। আপনি সেই বারোটি টেস্টের দিকে তাকান এবং বুঝতে পারেন যে এর কোনোটিই সেটি ধরতে পারত না।

AI আপনার কোড কী করছে তা টেস্ট করেছে, আপনার কোড যা করার কথা ছিল তা নয়।

AI দরকারী, তবে আপনাকে জানতে হবে এটি কীভাবে ব্যবহার করতে হয়।

যেখানে AI সফল:

  • সেটআপ (setup) এবং টিয়ারডাউন (teardown) ব্লকের মতো বয়েলারপ্লেট (boilerplate) তৈরি করা।
  • পুনরাবৃত্তিমূলক ফ্যাক্টরি হেল্পার (factory helpers) এবং ডেটা অবজেক্ট লেখা।
  • একটি ভালো টেস্ট প্যাটার্নের অনেকগুলো ভ্যারিয়েশন তৈরি করা।
  • null, empty string বা শূন্যের মতো স্পষ্ট এজ কেসগুলো (edge cases) হ্যান্ডেল করা।

যেখানে AI ব্যর্থ হয়:

  • ইমপ্লিমেন্টেশন-ভিত্তিক টেস্ট: এটি বিজনেস লজিকের পরিবর্তে কোড স্ট্রাকচার অনুসরণ করে টেস্ট লেখে। আপনি যদি কোড রিফ্যাক্টর (refactor) করেন, তবে ফলাফল সঠিক হওয়া সত্ত্বেও টেস্টগুলো ভেঙে যায়।
  • অগভীর এজ কেস: এটি স্পষ্ট ভুলগুলো খুঁজে পায় কিন্তু ডোমেইন-নির্দিষ্ট বাগগুলো মিস করে। এটি আপনার টাইমজোনের জটিলতা, ডেটাবেস কনস্ট্রেইন্ট বা আপনার নির্দিষ্ট বিজনেস রুলস সম্পর্কে জানে না।
  • ভঙ্গুর মক (Brittle mocks): এটি এমন ইন্টারনাল সার্ভিসগুলোকে মক (mock) করে যেগুলোকে আসল রাখা উচিত। এটি টেস্ট রক্ষণাবেক্ষণ করা ধীর করে দেয় এবং রিফ্যাক্টরের সময় সহজেই ভেঙে যাওয়ার সম্ভাবনা তৈরি করে।

"টেস্ট থিয়েটার" (test theater) তৈরি না করে কীভাবে AI ব্যবহার করবেন:

  1. প্রথমে কন্ট্রাক্ট (contract) সংজ্ঞায়িত করুন। টেস্টটি কী প্রমাণ করতে হবে সে সম্পর্কে সাধারণ ইংরেজিতে একটি বাক্য লিখুন। উদাহরণ: "An expired code must return the original amount."
  2. সেই বাক্যটি AI-কে দিন। AI-কে কোড লিখতে দিন, কিন্তু এর উদ্দেশ্য বা ইনটেন্ট (intent) আপনার নিয়ন্ত্রণে থাকতে হবে।
  3. শুধুমাত্র বাউন্ডারিতে (boundary) মক করুন। আপনার ইন্টারনাল মডিউলগুলোর জন্য রিয়েল ইনস্ট্যান্স ব্যবহার করুন। শুধুমাত্র এক্সটারনাল API বা ডেটাবেস মক করুন।
  4. একটি ডোমেইন এজ কেস হাতে লিখুন। AI "স্পষ্ট" এজ কেসগুলো সামলায়। আপনাকে সেই "রাত ৩টার" (3 AM) এজ কেসগুলো সামলাতে হবে যা আসলে প্রোডাকশনে সমস্যা তৈরি করে।

টেস্ট কী যাচাই করবে তা AI-এর ওপর ছেড়ে দেবেন না। কোড টাইপ করার জন্য এটি ব্যবহার করুন, কিন্তু লজিকটি আপনার হতে হবে।

উৎস: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm