যদিও আমি সবাই ইউনিট পরীক্ষার জন্য আছি, আমি মাঝে মাঝে অবাক হই যে পরীক্ষার প্রথম বিকাশের এই ফর্মটি সত্যিই উপকারী কিনা ...
এর মতো ছোট, তুচ্ছ পরীক্ষাগুলি আপনার কোডবেসের জন্য "কয়লাতে ক্যানারি" হতে পারে, খুব দেরি হওয়ার আগেই বিপদ সম্পর্কে সতর্ক করে। তুচ্ছ পরীক্ষাগুলি চারপাশে রাখার জন্য দরকারী কারণ এগুলি আপনাকে ইন্টারঅ্যাকশনগুলি সঠিকভাবে পেতে সহায়তা করে।
উদাহরণস্বরূপ, আপনি যে অপরিচিত তার কোনও এপিআই কীভাবে ব্যবহার করবেন তা তদন্ত করতে স্থির করা একটি তুচ্ছ পরীক্ষা সম্পর্কে চিন্তা করুন। যদি সেই পরীক্ষার কোডটিতে আপনি যা করছেন যা "সত্যিকারের জন্য" API ব্যবহার করে তার সাথে কোনও প্রাসঙ্গিকতা থাকে তবে সেই পরীক্ষার চারপাশে রাখা দরকারী। যখন API একটি নতুন সংস্করণ প্রকাশ করে এবং আপনাকে আপগ্রেড করতে হবে। রিগ্রেশনগুলি ধরার জন্য আপনি যে এক্সিকিউটিভ ফর্ম্যাটটিতে রেকর্ডটি ব্যবহার করতে পারবেন তা আপনি কীভাবে আশা করেন সে সম্পর্কে আপনার এখন ধারনা রয়েছে।
... [আমি] সত্যিকারের প্রক্রিয়া নয়, আপনার কোডের (ব্যবসায়িক অনুরোধ, প্রয়োজনীয় কাগজপত্র, আর্কিটেকচার ডকুমেন্ট) এর উপরে আপনার 3-4 স্তর রয়েছে, যেখানে প্রকৃত সংজ্ঞায়িত ব্যবসায়ের নিয়ম (ছাড়ের মূল্য মূল্য - ছাড়) ভুল অপছন্দকৃত হতে পারে। যদি এমন অবস্থা হয় তবে আপনার ইউনিট পরীক্ষাটি আপনার কাছে কিছুই বোঝায় না।
আপনি যদি পরীক্ষাগুলি না লিখে বছরের পর বছর ধরে কোডিং করে থাকেন তবে তা অবিলম্বে আপনার কাছে প্রকাশিত হবে না যে এর কোনও মূল্য রয়েছে। তবে যদি আপনি এই মানসিকতা থেকে থাকেন যে কাজ করার সর্বোত্তম উপায়টি হ'ল "তাড়াতাড়ি মুক্তি দিন, প্রায়শই মুক্তি দিন" বা "চতুর" যাতে আপনি দ্রুত / অবিচ্ছিন্নভাবে মোতায়েনের দক্ষতা চান তবে আপনার পরীক্ষার অবশ্যই কোনও মানে। এটি করার একমাত্র উপায় হ'ল পরীক্ষার মাধ্যমে আপনার কোডে করা প্রতিটি পরিবর্তনকে বৈধতা দেওয়া। পরীক্ষাটি যত ছোটই হোক না কেন, একবার আপনার গ্রিন টেস্ট স্যুইট হয়ে গেলে আপনি তাত্ত্বিকভাবে মোতায়েন করা ঠিক। "অবিচ্ছিন্ন উত্পাদন" এবং "স্থায়ী বিটা "ও দেখুন।
এই মানসিকতার হতে আপনাকে প্রথমে "পরীক্ষা" করতে হবে না, তবে সেখানে পৌঁছানোর জন্য সাধারণত এটিই সবচেয়ে দক্ষ উপায়। আপনি যখন টিডিডি করেন, আপনি নিজেকে ছোট থেকে তিন থেকে তিন মিনিটের রেড গ্রিন রিফ্যাক্টর চক্রের মধ্যে লক করেন। কোনও মুহুর্তে আপনি থামাতে এবং ছেড়ে যেতে সক্ষম নন এবং আপনার হাতে একটি সম্পূর্ণ গণ্ডগোল রয়েছে যা ডিবাগ করতে এবং একসাথে ফিরে যেতে এক ঘন্টা সময় নেবে।
অতিরিক্তভাবে, আপনার ইউনিট পরীক্ষাটি ব্যর্থতার আরেকটি বিষয় ...
একটি সফল পরীক্ষা হ'ল এটি সিস্টেমের ব্যর্থতা প্রদর্শন করে। একটি ব্যর্থ পরীক্ষা আপনাকে পরীক্ষার যুক্তিতে বা আপনার সিস্টেমের যুক্তিতে কোনও ত্রুটি সম্পর্কে সতর্ক করবে। আপনার পরীক্ষাগুলির লক্ষ্য হ'ল আপনার কোডটি ভঙ্গ করা বা একটি দৃশ্যের কাজ প্রমাণ করা।
আপনি যদি কোডটির পরেও পরীক্ষা লিখছেন , আপনি একটি পরীক্ষা "খারাপ" বলে লেখার ঝুঁকি চালান কারণ আপনার পরীক্ষাটি সত্যই কার্যকর হয় তা দেখার জন্য আপনাকে এটিকে ভাঙা এবং কাজ করা উভয়ই দেখতে হবে। আপনি যখন কোডের পরে পরীক্ষাগুলি লিখছেন, তার অর্থ পরীক্ষার ব্যর্থতা দেখতে আপনাকে "ট্র্যাপটি বসন্ত" করতে হবে এবং কোডটিতে একটি বাগ প্রবর্তন করতে হবে। বেশিরভাগ বিকাশকারীরা এই সম্পর্কে কেবল অস্বস্তিই নন, তবে এটি সময় নষ্ট করার পক্ষে যুক্তি প্রকাশ করবে।
আমরা এখানে কি লাভ?
এইভাবে জিনিসগুলি করার নিশ্চয়ই একটি সুবিধা রয়েছে। মাইকেল পালকগুলি "উত্তেজনাপূর্ণ কোড" হিসাবে "উত্তরাধিকারের কোড" সংজ্ঞা দিয়েছেন। আপনি যখন এই পদ্ধতির গ্রহণ করেন, আপনি আপনার কোডবেসে প্রতিটা পরিবর্তনকে বৈধতা দিন। এটি পরীক্ষাগুলি ব্যবহার না করার চেয়ে আরও কঠোর, তবে এটি একটি বৃহত কোডবেস বজায় রাখার ক্ষেত্রে আসে, এটি নিজের জন্য অর্থ প্রদান করে।
পালকের কথা বললে, এখানে দুটি দুর্দান্ত সংস্থান রয়েছে যা আপনার উচিত:
এই উভয়ই ব্যাখ্যা করে যে কীভাবে "গ্রিনফিল্ড" নয় এমন প্রকল্পগুলিতে এই ধরণের অনুশীলনগুলি এবং শৃঙ্খলাগুলি কীভাবে কাজ করা যায়। তারা দৃly়ভাবে সংযোজিত উপাদানগুলি, হার্ড ওয়্যার্ড নির্ভরশীলতা এবং আপনার প্রয়োজনীয়তার নিয়ন্ত্রণ নেই এমন জিনিসগুলির চারপাশে পরীক্ষা লেখার কৌশল সরবরাহ করে। এগুলি "সিমগুলি" সন্ধান এবং এর আশেপাশের পরীক্ষার বিষয়ে।
[আমি] চ ছাড়ের মূল্যটি ভুল, পরীক্ষা দল এখনও বিষয়টি খুঁজে পাবে, ইউনিট টেস্টিং কোনও কাজ কীভাবে বাঁচিয়েছিল?
এ জাতীয় অভ্যাস বিনিয়োগের মতো। রিটার্নগুলি তাত্ক্ষণিকভাবে নয়; তারা সময়ের সাথে সাথে গড়ে তোলে। পরীক্ষা না করার বিকল্পটি হ'ল মূলত রিগ্রেশনগুলি ধরতে না পারা, ইন্টিগ্রেশন ত্রুটির ভয় ছাড়াই কোড প্রবর্তন করা বা ডিজাইনের সিদ্ধান্তের সিদ্ধান্ত গ্রহণের ofণ গ্রহণ করা। সৌন্দর্যটি হ'ল আপনি নিজের কোডবেসে চালু প্রতিটি পরিবর্তনকে বৈধতা দিন।
আমি এখানে কি মিস করছি? দয়া করে আমাকে টিডিডি ভালবাসতে শিখান, কারণ এখন পর্যন্ত এটি কার্যকর হিসাবে গ্রহণ করতে আমার খুব কষ্ট হচ্ছে। আমিও চাই, কারণ আমি প্রগতিশীল থাকতে চাই, তবে এটি আমার কাছে বোধগম্য নয়।
আমি এটি পেশাদার দায়িত্ব হিসাবে দেখছি। এটি চেষ্টা করার পক্ষে আদর্শ। তবে এটি অনুসরণ করা খুব কঠিন এবং ক্লান্তিকর। যদি আপনি এটি সম্পর্কে যত্নশীল হন এবং মনে করেন যে আপনি এমন কোড তৈরি করবেন না যা পরীক্ষিত নয়, আপনি ভাল পরীক্ষার অভ্যাসগুলি শিখতে ইচ্ছা শক্তিটি খুঁজে পেতে সক্ষম হবেন। আমি এখন অনেক কিছু করি (অন্যদের মতো) নিজেও কোনও পরীক্ষা ছাড়াই কোড লেখার জন্য এক ঘন্টা টাইমবক্স, তারপরে এটিকে ছুঁড়ে ফেলার শৃঙ্খলা রাখুন। এটি অপব্যয়কর বলে মনে হতে পারে তবে এটি বাস্তবে নয়। এটি এমন নয় যে অনুশীলনের জন্য কোনও সংস্থার শারীরিক উপকরণের ব্যয় হয়। এটি আমাকে সমস্যাটি বুঝতে এবং কোডটি কীভাবে এমনভাবে লিখতে সাহায্য করেছে যাতে এটি উভয়ই উচ্চমানের এবং পরীক্ষামূলক।
আমার পরামর্শটি চূড়ান্তভাবে হ'ল যদি আপনার সত্যিই ভাল হওয়ার ইচ্ছা না থাকে তবে তা একেবারেই করবেন না। দরিদ্র পরীক্ষাগুলি যেগুলি রক্ষণাবেক্ষণ করা হয় না, ভাল সঞ্চালন করে না ইত্যাদি কোনও পরীক্ষা না হওয়ার চেয়ে খারাপ হতে পারে। এটি আপনার নিজের থেকে শেখা শক্ত এবং আপনি সম্ভবত এটি পছন্দ করবেন না তবে এটি করার ইচ্ছা না থাকলে বা এটির জন্য পর্যাপ্ত মূল্য দেখতে না পারলে এটি শেখা অসম্ভবের পাশে চলেছে সময় বিনিয়োগ ওয়ারেন্ট।
একটি দম্পতি লোক উল্লেখ করে রাখে যে পরীক্ষাটি অনুমানটিকে কার্যকর করতে সহায়তা করে। আমার অভিজ্ঞতা হয়েছে যে অনুমানটিও ভুল হয়েছে, প্রায়শই না ...
একটি বিকাশকারীর কীবোর্ড হল যেখানে রাবার রাস্তার সাথে মিলিত হয়। যদি অনুমানটি ভুল হয় এবং আপনি এটিতে পতাকা বাড়াতে না থাকেন তবে এটির পক্ষে অত্যন্ত দায়বদ্ধ আপনি এটির জন্য দোষী হবেন। অথবা কমপক্ষে আপনার কোডটি করবে। পরীক্ষার সাথে জড়িত শৃঙ্খলা এবং কঠোরতা মান্য করা কঠিন। এটি মোটেও সহজ নয়। এটি অনুশীলন নেয়, প্রচুর শেখা এবং প্রচুর ভুল হয়। কিন্তু শেষ পর্যন্ত এটি পরিশোধ করে না। দ্রুত গতিময়, দ্রুত পরিবর্তিত প্রকল্পে, আপনি কেবল রাতে ঘুমাতে পারেন এটি আপনার একমাত্র উপায়, এটি আপনার মন্থর করে না if
এখানে আরেকটি বিষয় ভাবার বিষয় হ'ল প্রযুক্তিগুলি যেগুলি মৌলিকভাবে পরীক্ষার মতো একই কাজগুলি অতীতে কাজ করে প্রমাণিত হয়েছিল: "ক্লিন রুম" এবং "চুক্তি অনুসারে নকশা" উভয়ই একই ধরণের "মেটা"-কোড কোড তৈরি করে থাকে যা পরীক্ষাগুলি করে এবং বিভিন্ন পয়েন্টগুলিতে প্রয়োগ করে। এই কৌশলগুলির মধ্যে কোনও রূপালী বুলেট নয় এবং কঠোরতার জন্য আপনাকে বাজারে সময় সাপেক্ষে বিতরণ করতে পারে এমন বৈশিষ্ট্যগুলির পরিধিতে আপনাকে শেষ পর্যন্ত ব্যয় করতে হবে। তবে এটাই এরকম নয়। আপনি যা বিতরণ করেন তা বজায় রাখতে সক্ষম হবেন এটি। এবং এটি বেশিরভাগ প্রকল্পের জন্য খুব গুরুত্বপূর্ণ।