ইউনিট টেস্ট এআই গাইড: জিরো হ্যালুসিনেশন
এআই প্রায়শই ইউনিট টেস্টিংয়ে ব্যর্থ হয়। এটি কাল্পনিক মেথড তৈরি করে। এটি ভুল মক (mock) স্ট্রাকচার তৈরি করে। এটি অস্তিত্বহীন ইমপোর্ট ব্যবহার করে। এটি ঘটে কারণ এআই-এর কাছে কঠোর কন্টেক্সট (context) থাকে না।
একটি ডিটারমিনিস্টিক (deterministic) সিস্টেম ব্যবহার করে আপনি এটি বন্ধ করতে পারেন। আপনাকে অনুমানের পরিবর্তে প্রয়োগ করার (enforcing) দিকে এগোতে হবে।
পাঁচটি প্রধান স্ট্যাক জুড়ে জিরো-হ্যালুসিনেশন ইউনিট টেস্টের মানদণ্ড নিচে দেওয়া হলো।
টেক স্ট্যাক স্ট্যান্ডার্ড
প্রতিটি স্ট্যাকের জন্য একটি লাইব্রেরি বেছে নিন। সেগুলো মিশ্রিত করবেন না।
- Node.js (NestJS/Express): Jest
- React.js: Vitest + React Testing Library
- Python: pytest
- Angular: Jest
- Laravel: Pest
গোপন রহস্য: প্রজেক্ট-স্কোপড রুলস
সাধারণ প্রম্পট যথেষ্ট নয়। আপনাকে সরাসরি আপনার IDE-তে রুলস বা নিয়মগুলো ইনজেক্ট করতে হবে। আপনি যদি Cursor ব্যবহার করেন, তবে .cursor/rules/ ডিরেক্টরি ব্যবহার করুন।
প্রতিটি প্রযুক্তির জন্য নির্দিষ্ট রুল ফাইল তৈরি করুন:
- unit-test-global.mdc: AAA (Arrange, Act, Assert) প্যাটার্ন সেট করে।
- unit-test-nestjs.mdc: TestingModule এবং jest-mock-extended প্রয়োগ করে।
- unit-test-react.mdc: fireEvent-এর পরিবর্তে user-event ব্যবহার বাধ্যতামূলক করে।
- unit-test-python.mdc: pytest-mock প্যাটার্নগুলোকে স্ট্যান্ডার্ডাইজ করে।
- unit-test-laravel.mdc: Pest সিনট্যাক্স এবং Mockery ব্যবহার নিশ্চিত করে।
এই ফাইলগুলো একটি চুক্তি (contract) হিসেবে কাজ করে। এআই প্রতিটি প্রম্পটের আগে এগুলো পড়ে। এটি উৎস থেকেই হ্যালুসিনেশন প্রতিরোধ করে।
ইউনিট টেস্ট কন্ট্রাক্ট
প্রতিটি টেস্টকে অবশ্যই এই পাঁচটি নিয়ম অনুসরণ করতে হবে:
- আইসোলেশন (Isolation): সমস্ত এক্সটার্নাল ডিপেন্ডেন্সি মক (Mock) করুন। কোনো রিয়েল DB বা HTTP কল করবেন না।
- স্ট্রাকচার (Structure): AAA ব্যবহার করুন। আপনার Arrange, Act, এবং Assert ব্লকগুলোতে সবসময় কমেন্ট করুন।
- নামকরণ (Naming): "should [behavior] when [condition]" ফরম্যাট ব্যবহার করুন। "test 1"-এর মতো অস্পষ্ট নাম এড়িয়ে চলুন।
- কভারেজ (Coverage): হ্যাপি পাথ (happy path), নাল ইনপুট (null inputs), এরর পাথ (error paths) এবং এজ কেস (edge cases) টেস্ট করুন।
- গতি (Speed): প্রতিটি টেস্ট ১০০ মিলি-সেকেন্ডের (100ms) কম সময়ে সম্পন্ন হতে হবে।
বাস্তবায়নের ধাপসমূহ
- আপনার লাইব্রেরি এবং কনফিগারেশন ফাইল সেট আপ করুন।
- আপনার
.cursor/rules/ফোল্ডার তৈরি করুন। - পার্মানেন্ট মেমরি হিসেবে কাজ করার জন্য আপনার প্রজেক্ট রুট-এ একটি
CLAUDE.mdফাইল যোগ করুন। - আপনার CI পাইপলাইনে কভারেজ থ্রেশহোল্ড সেট করুন (৮০% লাইনের লক্ষ্য রাখুন)।
- কোনো আনটেস্টেড কোড রিপোজিটরিতে প্রবেশ করছে না তা নিশ্চিত করতে pre-commit hooks ব্যবহার করুন।
এআই-কে টেস্ট লেখার জন্য বলা বন্ধ করুন। এআই-কে কীভাবে টেস্ট লিখতে হয় তা বলা শুরু করুন।
সোর্স: https://dev.to/bhaumik-viitor/unit-test-ai-guide-zero-hallucination-cross-stack-standard-4mb2
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi