আপনি আপনার বানানো অ্যাপ্লিকেশনকে लेकर উদ্বেগে আছেন। শুধু একটা সমস্যা - কোনো টেস্ট নেই। আপনি টেস্ট-ড্রিভেন ডেভেলপমেন্ট ব্যবহার করে লিখতে চেয়েছিলেন, কিন্তু কোথা থেকে শুরু করবেন সেটা জানতেন না। তাই আপনি আটকে পড়েছেন। কোনো টেস্ট না থাকা অ্যাপ্লিকেশন থেকে, TDD ব্যবহার করে অ্যাপ্লিকেশন লিখতে কীভাবে যাবেন?
আপনার আছে কোডটি টেস্ট করুন
আপনার কাছে টেস্ট ছাড়া অনেক কোড আছে। কিন্তু সেটা মানে না আপনি এখন টেস্ট লিখতে পারবেন না, বিদ্যমান কোডের বিরুদ্ধে। তাই আপনার আছে কোডটি টেস্ট করা শুরু করুন, নিশ্চিত করতে আপনার কোড আপনার আশা অনুযায়ী কাজ করছে কিনা।
এটা TDD নয়। তবে বিদ্যমান কোড টেস্ট করলে আপনি TDD শিখতে পারবেন:
-
আপনি এজ কেস এবং এরর কন্ডিশন নিয়ে চিন্তা করার প্র্যাকটিস করবেন।
প্রতিটি সম্ভাব্য ইনপুট টেস্ট করতে বছরখানি না বিতাতে, আপনাকে চিন্তা করতে হবে কোডটি কোথায় সবচেয়ে বেশি ভাঙতে পারে। যদি আপনি যে মেথডটি টেস্ট করছেন সেটা স্ট্রিং নেয়, তবে সিম্বল পাস করলে কী হবে?
nilপাস করলে কী হবে? এবং আপনি যদি একটি ফাংশন টেস্ট করেন যা নম্বর ভাগ করে, তবে ০ দিয়ে টেস্ট করতে হবে। কিন্তু ১ এবং ২ দিয়ে টেস্ট করা প্রয়োজন নেই।যথেষ্ট টেস্ট লিখলে, আপনি আপনার মেথডগুলো কোথায় সবচেয়ে বেশি ভাঙতে পারে সেটা প্রিডিক্ট করতে শুরু করবেন। এবং একবার TDD শুরু করলে, আপনি এই স্কিল ব্যবহার করে রোবাস্ট টেস্ট লিখতে পারবেন যা আপনার কোডকে এজ কেস হ্যান্ডেল করতে বাধ্য করবে।
-
আপনি ভালো স্ট্রাকচার্ড টেস্ট লেখার প্র্যাকটিস করবেন।
যখন আপনি পরে টেস্ট লিখেন, আপনি টেস্ট স্ট্রাকচার করার বিভিন্ন প্যাটার্ন ট্রাই করতে পারেন। যেহেতু টেস্ট করা কোডটি ইতিমধ্যে আছে, আপনি আপনার টেস্ট ওপর ফোকাস করতে পারেন, এবং সেটা কীভাবে লেখা হয়েছে। এবং একবার কিছু ভালো প্যাটার্ন শিখলে, আপনি কোড ছাড়া টেস্ট লিখতে পারবেন।
-
আপনি কী জিনিস কোডকে টেস্ট করা কঠিন করে সেটা আবিষ্কার করবেন।
আরো টেস্ট লিখতে লিখতে, আপনি অনুভব করতে শুরু করবেন আপনার সিস্টেমের কোন এলাকাগুলো সবচেয়ে কঠিন হবে টেস্ট করা। যখন সেগুলো লক্ষ্য করবেন, আপনি সেগুলো হাইলাইট করতে পারেন রিফ্যাক্টরিংয়ের জন্য। আরও ভালো, আপনি প্রথমবার থেকেই আরও টেস্টেবল কোড লিখতে শুরু করবেন।
একবার আপনি জানলে সহজে টেস্ট করা কোড কেমন দেখায়, আপনি সেই জ্ঞান দিয়ে TDD করে সহজে টেস্টেবল API বানাতে পারবেন। এবং সেটা আপনাকে দ্রুত অ্যাপ্লিকেশন বানাতে সাহায্য করবে।
TDD-তে সহজে প্রবেশ করুন
আপনি টেস্ট-আফ্টার ব্যবহার করে সেই স্কিলগুলো বিল্ড করতে পারেন যা আপনাকে TDD শিখতে সাহায্য করবে। কিন্তু আপনি আপনার অ্যাপ্লিকেশনের টুকরো টুকরো TDD করতে চান। এবং TDD-তে সহজে প্রবেশ করার একটি সহজ উপায় আছে, এবং বিদ্যমান কোডের ওপর নির্ভর করে: রিগ্রেশন টেস্ট লিখুন।
রিগ্রেশন টেস্ট আপনাকে ইতিমধ্যে ফিক্স করা কোড ভাঙতে দেয় না। আইডিয়া খুব সহজ। যখনই কোনো বাগ শুনেন, ব্রাউজারে ক্লিক করে রিপ্রডিউস করার বদলে:
- একটি ফেইলিং টেস্ট লিখুন বাগ রিপ্রডিউস করতে।
- টেস্টগুলো রান করুন, এবং নিশ্চিত হন সেগুলো ফেইল করছে (কারণ বাগটি এখনও আছে)।
- বাগটি ফিক্স করুন সেরা সহজ উপায়ে।
- টেস্টগুলো রান করুন, এবং নিশ্চিত হন সেগুলো পাস করছে।
- রিফ্যাক্টর আপনার ফিক্স, যদি প্রয়োজন হয়।
এটা স্ক্র্যাচ থেকে নতুন সিস্টেম TDD করার চেয়ে অনেক সহজ, কারণ আপনি শুধু বিদ্যমান কোডের একটি পরিবর্তন টেস্ট-ড্রাইভ করছেন। আপনি "রেড, গ্রিন, রিফ্যাক্টর" অভ্যাস বিল্ড করছেন যা TDD-এর অপরিহার্য লুপ। এখান থেকে, TDD স্ক্র্যাচ থেকে কোনো টেস্ট ছাড়া সরাসরি TDD-এ যাওয়ার চেয়ে ছোট একটা ধাপ দূরে।
কিছু না থেকে TDD-এ
টেস্ট ছাড়া একটি অ্যাপ্লিকেশন খারাপ শুরু করার জায়গা নয়। বিদ্যমান কোড টেস্ট করলে, আপনি ভালো TDD টেস্ট লিখতে যা যা দরকার সেটার অনেক কিছু শিখবেন। টেস্ট-আফ্টার TDD-র চেয়ে শুরুতে সহজ, কারণ আপনাকে এপিআই ইম্যাজিন করতে হয় না যা আপনি ডিজাইন করতে জানেন না। এবং একবার আপনি আপনার অ্যাপ্লিকেশনে TDD আনার সিদ্ধান্ত নিলে, আপনি রিগ্রেশন টেস্ট দিয়ে সহজে প্রবেশ করতে পারেন।
তাই, আপনি যদি না জানেন যে আপনি যে সিস্টেমটি কল্পনা করছেন সেটাকে কীভাবে TDD করবেন, টেস্ট লিখতে থাকুন। এমনকি কোড প্রথম লিখতে হলে।