কখনো এমন হয়েছে—একটা ছোট বাগ ঠিক করলেন, আর হঠাৎ করে পেমেন্ট বা চেকআউট সিস্টেম কাজ করা বন্ধ?
হ্যাঁ, আমরা সবাই কখনো না কখনো এই ফাঁদে পড়েছি।
ইউনিট টেস্ট দেখতে হয়তো একটু বিরক্তিকর লাগে, কিন্তু এগুলোই নীরবে আপনার সময়, মাথাব্যথা আর প্রোডাকশন বাগ থেকে বাঁচায়। এই লেখায় আমরা জানব—
- ইউনিট টেস্ট আসলে কী
- কীভাবে সহজভাবে ইউনিট টেস্ট লেখা যায়
- কোন জায়গায় টেস্ট করা দরকার
- আর কোন ভুলগুলো এড়িয়ে চলা উচিত
ইউনিট বলতে আসলে কী বোঝায়?
ইউনিট হলো আপনার কোডের সবচেয়ে ছোট অংশ, যেটা আলাদা করে পরীক্ষা করা যায়।
যেমন—
- একটি ফাংশন
- কোনো ক্লাসের একটি মেথড
- ইউটিলিটি ফাইল
- ইনপুট ভ্যালিডেশন লজিক
- ডাটাবেস কুয়েরি তৈরি করার ফাংশন
যেটা চালাতে পুরো অ্যাপ দরকার হয় না, সেটাই ইউনিট।
একটি ভালো ইউনিট টেস্ট সবসময় হবে—
- দ্রুত → মিলিসেকেন্ডে শেষ হবে
- নির্ভরযোগ্য → নেটওয়ার্ক, রিয়েল টাইম বা র্যান্ডম কিছু থাকবে না
- ফোকাসড → এক টেস্টে একটাই কাজ পরীক্ষা করবে
AAA প্যাটার্ন: ইউনিট টেস্ট লেখার সবচেয়ে সহজ ফর্মুলা
আপনার মনে রাখার দরকার শুধু তিনটি শব্দ—
Arrange → Act → Assert
1️⃣ Arrange
যা যা লাগবে, আগে সেটআপ করুন।
ইনপুট, মক ডেটা, ফেক ফাংশন—সবকিছু।
2️⃣ Act
যে ফাংশনটা টেস্ট করছেন, সেটাকে কল করুন।
3️⃣ Assert
আউটপুট ঠিক আছে কিনা যাচাই করুন।
একটা টেস্ট পড়েই যেন বোঝা যায়—
“হ্যাঁ, এই ফাংশনটা এটাই করে।”
কী টেস্ট করবেন (আর কী করবেন না)
যেগুলো টেস্ট করা উচিত
আপনার ইউনিটের বাইরের আচরণ (public behavior)।
অর্থাৎ—
- কী ইনপুট নিলে কী আউটপুট দেয়
- ভুল ইনপুটে কী হয়
- কোনো সাইড ইফেক্ট হয়েছে কিনা
বিশেষ করে নজর দিন—
- Happy path → স্বাভাবিক অবস্থায় কাজ করছে কিনা
- Failure path → ভুল ইনপুটে সঠিকভাবে ব্যর্থ হচ্ছে কিনা
- Edge case → খালি ভ্যালু, ০, অনেক বড় সংখ্যা, বিশেষ ক্যারেক্টার
- Interaction → লগ লেখা হলো কিনা, ক্যাশ আপডেট হলো কিনা
যেগুলো এড়িয়ে চলবেন
❌ প্রাইভেট ভ্যারিয়েবল বা ভিতরের লজিক টেস্ট করা
❌ সবকিছু মক করে ফেলা
❌ এক টেস্টে অনেক কাজ যাচাই করা
মনে রাখবেন—
ইমপ্লিমেন্টেশন বদলালে টেস্ট ভাঙা উচিত না,
আচরণ বদলালে টেস্ট ভাঙবে।
টেস্ট লেখার আগে ছোট একটি চেকলিস্ট
এই লিস্টটা সত্যি সত্যি কাজে দেয় 👇
ইনপুট
- সাধারণ মান
- খালি মান
- null / undefined
- খুব বড় ডেটা
সংখ্যা
- ০
- নেগেটিভ
- সর্বোচ্চ / সর্বনিম্ন মান
- রাউন্ডিং সমস্যা
স্ট্রিং
- ইউনিকোড ও ইমোজি
- স্পেস
- SQL / HTML বিশেষ চিহ্ন
লিস্ট বা অবজেক্ট
- ডুপ্লিকেট ভ্যালু
- কোনো কী না থাকা
- অর্ডার বদলালে কী হয়
সময়
- টাইমজোন
- মাসের শেষ দিন
- লিপ ইয়ার
এলোমেলো বিষয়
- র্যান্ডম নাম্বার → ফিক্সড সিড বা মক ব্যবহার করুন
রিট্রাই লজিক
- ফেক টাইমার
- সীমিত সংখ্যক চেষ্টা
👉 এই চেকলিস্টটা চাইলে প্রিন্ট করে ডেস্কে লাগিয়ে রাখতে পারেন।
শেষ কথা
ইউনিট টেস্ট মানে পারফেক্ট কোড লেখা নয়।
ইউনিট টেস্ট মানে—
ভবিষ্যতের নিজের জন্য একটা সেফটি নেট তৈরি করা।
আজ একটু সময় দিলে, কাল অনেক বড় বিপদ থেকে বাঁচবেন।
ছোট ছোট, পরিষ্কার আর নির্ভরযোগ্য ইউনিট টেস্ট লিখুন—
আপনার কোড নিজেই আপনাকে ধন্যবাদ দেবে 🙂