কম্পিউটার টিউটোরিয়াল

TDD থকান দূর করুন: টেস্টিং মোমেন্টাম বজায় রাখার প্রামাণিক টিপস

আপনি কোড টেস্ট-ড্রাইভ করতে চান, কিন্তু আটকে গিয়েছেন। হয়তো আপনার অবজেক্টের ইন্টারফেস কেমন হবে সেটা নিশ্চিত নন। হয়তো ধूप কাটা গ্রীষ্ম দিবসে মন ভালো নেই। আবার হয়তো যা বানাবেন সেটা টেস্ট করা যাবে কিনা সেটা নিশ্চিত নন। অথবা শুধু প্রক্রাস্টিনেশন করছেন, কারণ টেস্ট লিখতে ইচ্ছা করছে না। TDD-র সুবিধাগুলো কীভাবে পাবেন যখন TDD করার মন নেই?

প্রোটোটাইপিং, অথবা একটা বানিয়ে ফেলা

"নতুন সিস্টেম কনসেপ্ট বা টেকনোলজি ব্যবহার করা হলে, একটা সিস্টেম বানিয়ে ফেলতে হয়, কারণ সেরা প্ল্যানিংও প্রথমবার সঠিক করতে পারবে না। তাই একটা বানিয়ে ফেলার প্ল্যান করুন; আপনি যাকিই করবেন।" – ফ্রেড ব্রুকস

কখনো কখনো নতুন ফিচার শুরু করার সময় প্রথম টেস্ট লিখতে চিন্তা করলে লক্ড আপ ফিল করি। API কেমন দেখাবে, কোন প্যাটার্ন ও প্র্যাক্টিস উপযোগী, সব কীভাবে ফিট হবে - এত সিদ্ধান্ত নিতে হয়!

এই অবস্থায় আমার কয়েকটি উপায় আছে। প্রোটোটাইপ বানানোর পাশাপাশি।

প্রোটোটাইপ লিখতে সময় সেটাকে স্কেচ মনে করুন। ব্রেনস্টর্ম করুন, এক্সপেরিমেন্ট করুন। এখন টেস্ট বা TDD-র চিন্তা করবেন না। বরং কোড দিয়ে সিদ্ধান্তগুলো এক্সপ্লোর করুন। কয়েকটা প্যাটার্ন ট্রাই করুন, দেখুন কোনটা ফিচারটার সাথে ফিট হয়। বুঝতে পারবেন অ্যাপের কোথায় সমস্যা, কী চিন্তা করছিলেন বিনা কারণেই।

তারপর সেটা ফেলে দিন এবং পুনরায় বানান। এবার TDD এবং নতুন জানা দিয়ে ফিচারটা বানান।

আপনি কখনো git checkout -f ভুলে রান করিয়ে কোড হারিয়ে পেটে লাগা সা দারুণ বুঝলেন? কিন্তু বানাতে হলে বানালেন, আর সেটা প্রথমবার চেয়ে অনেক ভালো হয়েছে? প্রোটোটাইপ রিবিল্ড করার জন্যও এটা সত্য। এখন ফিচারটা কীভাবে দেখাতে পারে সেটা জানা থাকায় TDD করা অনেক সহজ হয়।

রিভার্স TDD

কখনো এমন পরিস্থিতি হয়েছে কী যেখানে আপনি কীভাবে বানাবেন সেটা জানেন, কিন্তু আগে টেস্ট কীভাবে লিখবেন সেটা জানেন না? অথবা এক লাইনের চেঞ্জ, কিন্তু টোঙ ফিক্সিং লাগতে পারে, তাই টেস্ট দিয়ে লক করতে চান না?

এই পরিস্থিতিতে সাহায্য করে একটি সহজ প্রক্রিয়া:

  1. বিনা টেস্ট কোড লিখুন।
  2. কোডের জন্য টেস্ট লিখুন। পাস করতে দিন।
  3. লিখা কোডটি কমেন্ট আউট করুন বা ফাইল রিভার্ট করুন।
  4. আবার টেস্ট রান করুন। ফেল করতে দিন।
  5. আবার কোড লিখুন। টেস্ট রান করুন। পাস করতে দিন।
  6. কোড রিফ্যাক্টর করুন, নতুন টেস্টগুলো ব্যবহৃত করে।

একে আমি রিভার্স TDD বা Green-Red-Green-Refactor বলি। TDD-র "টেস্ট-ড্রাইভেন ডিজাইন" পার্ট পাবেন না, কিন্তু টেস্ট ফেলে যখন কোড ব্রোকেন সেটা দেখতে পাবেন। এটা গুরুত্বপূর্ণ, কারণ যে টেস্ট কখনো ফেলে না সেটা বিশ্বাস করা যায় না।

রিভার্স TDD সেটা ছোট চেঞ্জের জন্য ভালো কাজ করে যেগুলো ডিজাইন দরকার নয়। বাগফিক্স, বা এক লাইন/মেথড/ক্লাসে সীমাবদ্ধ চেঞ্জ। কিন্তু আমি এই টেকনিক খুব ব্যবহার করি, সরাসরি ছোট চেঞ্জের জন্য যেগুলো আমি এখনও এক্সপেরিমেন্ট করছি।

পেয়ারিং গেম

পেয়ারিং গেম আপনার Red-Green-Refactor রুটিন থেকে বের হওয়ার দারুণ উপায়, যদি পাশে অন্য ডেভেলপার থাকে। এটা 이렇게 কাজ করে:

  1. পার্টনার খুঁজুন।
  2. আপনি একটি ফেইলিং টেস্ট লিখুন।
  3. পার্টনার সিম্প্লেস্ট কোড দিয়ে টেস্ট পাস করান।
  4. আপনি আবার একটি ফেইলিং টেস্ট লিখুন।
  5. পার্টনার কোড লিখে টেস্ট পাস করান।
  6. পুনরাবৃত্তি... বা
  7. কখনো টেস্ট গিন হলে, টেস্ট লিখার বদলে রিফ্যাক্টর করতে পারেন।
  8. রিফ্যাক্টার করার পর টেস্টার ও কোডারের রোল বদলান।

একটা রহস্য জানাব: বোলিং স্কোর ক্যালকুলেটরে পেয়ারিং গেম খেলেই আমি TDD শিখেছিলাম। এটা ফেইলিং টেস্টের ওপর সিম্পল কোড লিখা এবং টেস্ট লিখা শিখাবে। উভয় ডেভেলপার একে অপরের কোডিং স্টাইল ও পছন্দের টেকনিক শিখবে। আর ফ্লো তৎক্ষণাৎ হিট করবে, মানে শেষে খুব ভালো লাগবে।

হয়তো কোড তত দ্রুত প্রডিউস হবে না, কিন্তু খুব মজার এবং চমৎকার লার্নিং এক্সপেরিয়েন্স।

খেলাধুলা মেজাজে থাকুন এবং এক্সপেরিমেন্ট করুন

TDD ডগমা হওয়া উচিত নয়। TDD কনসেপ্টের সাথে খেলার অনেক উপায় আছে যেগুলো আপনাকে খুব আকর্ষণীয় জায়গায় নিয়ে যেতে পারে। আর সেটা থেকে আরও ভালো কোডও পাওয়া যেতে পারে।

তাই এক্সপেরিমেন্ট করুন। কোড লিখা এবং TDD-র নতুন এপ্রোচ ট্রাই করুন। কীভাবে ফিল করছেন এবং কী টাইপের কোড পাচ্ছেন সেটা দেখুন। এবং প্রতিদিনের কাজে মজা ও ফ্লো আবার আবিষ্কার করুন।

  1. প্রতিক্রিয়া না জানানোর আইফোনকে দ্রুত বন্ধ করার উপায়

  2. আইপ্যাড ও আইফোনে QR কোড স্ক্যান করার পদ্ধতি: একটি কুইক গাইড

  3. ধাপে ধাপে: ভেরিফিকেশন কোড ব্যবহার করে আপনার Gmail পাসওয়ার্ড রিসেট করুন

  4. ফটো সংগঠনের দক্ষতা: ডুপ্লিকেট ইমেজ সর্ট ও ডিলিট করার কুইক টিপস