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

ডেভেলপাররা টেস্ট লিখতে উপেক্ষা করে এমন ৫টি মূল কারণ

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

১. RSpec ব্যবহার করব? Cucumber? Capybara? Minitest?

নতুন প্রোজেক্ট শুরু করার সময়, সেরা টুল পিক করার জন্য অনেক সময় কাটানো খুব সহজ। এই ধরনের প্রক্রাস্টিনেশন এই সত্যকে লুকিয়ে রাখে যে আপনি কোথা থেকে শুরু করবেন জানেন না, এবং যতক্ষণ আপনি টুল পিক করবেন না, ততক্ষণ আপনি মনে করবেন আপনি প্রোডাক্টিভ হচ্ছেন χωρίς আসলে প্রোডাক্টিভ হওয়া।

বদলে, আপনি যা সবচেয়ে ভালো জানেন সেটি পিক করুন। আপনি যদি কোনো নির্দিষ্ট টেস্ট স্ট্যাকের সাথে এক্সপেরিয়েন্সড না হন, তবে ডিফল্ট নিন—রেইলস যা দেয় সেটি দিয়ে শুরু করুন। আপনি পরে আরও যোগ করতে পারেন। নতুন টুল ট্রাই করতে কিছুই খারাপ নয়, কিন্তু এটি অনেক ভালো আইডিয়া যে আপনি প্রোজেক্ট এবং ওয়ার্কফ্লো ভালোভাবে জানার সাথে সাথে সেগুলো ধীরে ধীরে ইন্ট্রোডিউস করবেন।

২. ইউনিট টেস্ট দিয়ে শুরু করব? ফাংশনাল টেস্ট? ইন্টিগ্রেশন টেস্ট?

প্রোজেক্ট শুরু করার সময়, আপনার কী ফিচার বা স্ক্রিনগুলো প্রথম বিল্ড করা উচিত সেটি সম্পর্কে একটি আইডিয়া থাকা উচিত। এটি একটি শурুর দারুণ জায়গা! আপনার ফিচার লিস্ট থেকে প্রথম জিনিসটি পিক করুন এবং সেটির জন্য একটি ফেইলিং ইন্টিগ্রেশন টেস্ট লিখুন। এটি আপনাকে বলবে আপনি কী কন্ট্রোলার এবং রাউট মিস করছেন, যার মানে আপনাকে কিছু ফেইলিং ফাংশনাল টেস্ট লিখতে হবে। কন্ট্রোলারদের তাদের কাজ করার জন্য ডেটা এবং লজিক দরকার, তাই আপনি ইউনিট টেস্ট এবং আপনার মডেল লিখবেন। তারপর, একবার আপনার ইউনিট টেস্ট পাস করলে, ফাংশনাল টেস্ট পাস হবে, এবং ইন্টিগ্রেশন টেস্টও পাস হবে। এখন আপনি পরবর্তী ফিচারের দিকে যেতে পারেন।

আপনার যদি একটি টেস্টিং প্রসেস থাকে যেটি সবসময় নেক্সট স্টেপ ডিফাইন করে, তবে মটিভেটেড থাকা অনেক সহজ। আপনার যদি ডিসিশন নেওয়ার প্রয়োজন না হয়, তবে প্রক্রাস্টিনেশন ঘুসতে পারে এমন সুযোগ কম থাকে।

৩. আমি কীভাবে এই নেটওয়ার্ক কোড, কমান্ড লাইন ইউটিলিটি, বা রেক টেস্ট করব তা জানি না!

এখানে সবচেয়ে সহজ জিনিসটি হল যতটা সম্ভব কোড ফাইল বা ক্লাস থেকে বের করে একটি নতুন অবজেক্টে সরিয়ে ফেলা যেটি টেস্ট করা সহজ। এইভাবে, হার্ড-টু-টেস্ট জিনিসটি শুধু আপনার নতুন অবজেক্ট তৈরি করে এবং প্যারামিটার পাস করে।

অবশ্য, আপনার এখনও মূল হার্ড-টু-টেস্ট জিনিসটি আছে। কিন্তু এটা হয়তো এখন শুধু কয়েক লাইন কোড, এবং এটি স্টাব বা ফেক আউট করা সহজ হওয়া উচিত।

৪. "প্রোজেক্টটা প্রায় ফিনিশ, এখন আমাকে শুধু এর টেস্ট লিখতে বাকি!"

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

TDD-র আমার ফেভারিট জিনিসগুলোর একটি হল এটি টেস্টিংকে ডিজাইন এবং কোডিং এর সাথে মিক্স করে, যার মানে আপনি টেস্টিং কে কোডিং হিসেবে দেখতে শুরু করবেন, যা এটিকে অনেক বেশি ফান করে (এবং আপনাকে টেস্ট অনেক আগে পাওয়া যায়)।

৫. আমি যদি ভুল করি তবে?

রুবি কমিউনিটি কোড কোয়ালিটি, ইউনিট টেস্টিং, এবং অবজেক্ট অরিয়েন্টেড ডিজাইন প্রিন্সিপলকে খুব বেশি প্রোমোট করে। এটি একটি চমৎকার জিনিস! দুর্ভাগ্যবশত, এর মানে হয় খুব সাধারণত আপনার প্রথম চেষ্টাতেই পারফেক্ট কোড ১০০% টেস্ট কভারেজ সহ শিপ করার জন্য অसीম প্রেশার ফিল করা।

এটি একটি প্রোজেক্ট শুরু করা খুব কঠিন করে তোলে, বিশেষ করে ওপেন সোর্স, যেখানে আপনি জানেন অন্য লোক কোডটি দেখবে। লোক কী বলবে যদি তারা দেখে যে এটি সকল SOLID প্রিন্সিপল ফলো করে না? কিন্তু কিছু জিনিস আমি শিখেছি যা আমাকে এই প্রেশার ডিল করতে হেল্প করেছে:

  • প্রতিটি ভালো ডেভেলপার পরে লজ্জিত হওয়ার কোড লিখে।
  • শিপ হওয়া ভালো কোড অসীম ভালো পারফেক্ট কোড থেকে যা শিপ হয় না।
  • কিছু লোক শুধু জার্ক এবং আপনার কোডকে মজা করবে। এটা খুব স্যাক। এটা আমার পুরো সপ্তাহ ব'IGN করে দিয়েছে। কিন্তু ভালো ডেভেলপাররা আপনাকে হেল্প করতে চায় ক্রিটিসাইজ করার বদলে। এবং আমি বেট করি আপনি যদি সেই কোডটি আপনার প্রোগ্রামিং হিরোর কাছে দেখান, তবে সে মজা করবে না—সে আপনাকে সেটি ভালো করার হেল্প করবে।

আপনি আরও কী লক্ষ্য করেছেন?

এই ট্র্যাপগুলোর মধ্যে কোনগুলোতে আপনি পড়েছেন? কী আপনাকে বের করে আনло? এবং কী আছে যা আমি মেনশন করিনি কিন্তু আপনি লক্ষ্য করেছেন?

যদি আপনি এই ট্র্যাপগুলোর যেকোনোতে নিজেকে চিনতে পারেন, তবে আপনি নিজেকে বের করার জন্য কী করবেন?

  1. আমার স্যামসাং কেন চার্জ হচ্ছে না? কারণ ও সমাধান

  2. আপনি কি আইফোন এক্সএস এড়াতে চান? মূল কারণগুলো ব্যাখ্যা

  3. ওয়াইফাই কাজ না করলে: সাধারণ কারণ ও দ্রুত সমাধান

  4. আইফোন X ফেস আইডি সমস্যা সমাধান: সাধারণ কারণ ও সমাধান