একটির জন্য, আমি প্রায় কখনও কেবল সেখানে বসে ইউনিট পরীক্ষা লিখি না। ইউনিট টেস্টগুলি শেষের একটি মাধ্যম, নিজের মধ্যে শেষ নয়। তারা উত্তর দেওয়ার একটি উপায় "এই কোডটি যে প্রাথমিক কাজটি অনুমিত হওয়া উচিত তা করে?"
উদাহরণস্বরূপ, কিছু লোক একটি ফাংশন লিখবেন এবং তারপরে কয়েকটি মানটি পরীক্ষা করে এটি কার্যকারী তা নিশ্চিত করার জন্য একটি ইন্টারেক্টিভ সেশনটি খুলবেন:
def fact x
if x == 0
1
else
x * fact(x-1)
end
end
>> fact 10
=> 3628800
>> fact 7
=> 5040
তবে এখন আপনি একটি বাগ আবিষ্কার করেছেন:
>> fact -1
SystemStackError: stack level too deep
from (irb):2:in `fact'
from (irb):5:in `fact'
from (irb):10
সুতরাং আপনি এটি ঠিক করুন:
def fact x
if x < 0
raise "Can't take the factorial of a negative number"
elsif x == 0
1
else
x * fact(x-1)
end
end
>> fact -1
RuntimeError: Can't take the factorial of a negative number
from (irb):3:in `fact'
from (irb):10
তবে এটি এখনও কার্যকর হয় তা নিশ্চিত করার জন্য এখন আপনার সত্যিকারের পরীক্ষা করা উচিত:
>> fact 10
=> 3628800
>> fact 7
=> 5040
আপনি দেখতে পাচ্ছেন, আপনি একই পরীক্ষাগুলির পুনরাবৃত্তি চালিয়ে যাচ্ছেন ... এবং আপনাকে ফলাফলগুলি চাক্ষুষভাবে তুলনা করতে হবে। ইউনিট টেস্টিং এই ক্ষেত্রে পুনরাবৃত্তি এড়ানোর একটি উপায়; এটি আপনাকে কতটা কাজ করতে হবে তা হ্রাস করে। এবং যদিও এটি একটি নির্বোধ সামান্য উদাহরণ, বাস্তব বিশ্বে এটি আরও বেশি গুরুত্বপূর্ণ হয়ে ওঠে এবং ম্যানুয়ালি পরীক্ষা করা আরও এবং আরও কঠিন। অবশ্যই এর অর্থ কী, লোকেরা কেবল পৃথক উপাদানগুলি পরীক্ষা করে না; তারা কেবল পুরো প্রোগ্রামটি পরীক্ষা করে। তবে এর পরে বাগগুলি ক্রপ হয়ে যায় এবং সেগুলি খুঁজে পাওয়া আরও শক্ত। বা বাগগুলি ঘটে থাকে এবং সেগুলি স্থির হয়ে যায় তবে কেউ আবার একই বাগটি প্রবর্তন করে, কারণ কেউ তা পরীক্ষার কেস যুক্ত করেনি তা নিশ্চিত করার জন্য। বা কেউ কোডের একটি বড় অংশের দিকে তাকান এবং বলে যে "এটি করার কী আছে তা আমার কোনও ধারণা নেই, কারণ এটি নথিভুক্ত নয় এবং এর কোনও পরীক্ষা নেই ... যদি আমি এই ত্রুটিটি ঠিক করি তবে আমি এর কোনও উপর নির্ভর করে অন্য কিছু ভাঙবো কিনা সে সম্পর্কে আমার কোনও ধারণা নেই; সম্ভবত আমি এটিকে নতুন করে লিখব
ইউনিট টেস্টগুলি এই ক্ষেত্রে অতিরিক্ত সমস্ত কাজ হ্রাস করে। তাদের মজা দেওয়ার সর্বোত্তম উপায় হ'ল লোকেদের প্রতিস্থাপন করা সমস্ত কাজ বোঝে এবং প্রতিটি কোডের প্রতিটি অংশ কী করার কথা তা জেনেও অতিরিক্ত নমনীয়তা আসে তা নিশ্চিত করা। কিছুটা ডিগ্রী পর্যন্ত, ইউনিট পরীক্ষা করা কতটা গুরুত্বপূর্ণ হতে পারে তা বোঝার জন্য একটি বৃহত কোড বেস রচনা এবং রক্ষণাবেক্ষণের জন্য লোকদের আরও কিছুটা অভিজ্ঞতা থাকতে হবে; যদি তাদের সমস্ত কোডই এমন কিছু হয় যা তারা একবার লিখে ফেলে ফেলে দেয় তবে তারা কখনই এটি বেশিরভাগই পায় না।
এবং ইউনিট পরীক্ষাগুলি সত্যের পরে লেখা উচিত নয়, অতিরিক্ত কোরিয়া হিসাবে একবার আপনার কোড থাকলে আপনি "জানেন" ইতিমধ্যে কাজ করে। ইউনিট পরীক্ষাগুলি প্রথমে লিখতে হবে, বা খুব কমপক্ষে (যেহেতু আপনি কখনও কখনও প্রথমে সেগুলি লিখতে ভুলে যান) ঠিক প্রশ্নে কোড লেখার পরে। একে টেস্ট-চালিত বিকাশ বলা হয়, এবং এটি আপনার API গুলি আরও উন্নত করতে সহায়তা করতে পারে; যদি আপনি প্রথমে এপিআইগুলির অনুশীলনকারী পরীক্ষাগুলি লিখে থাকেন তবে আপনি কোডটি লেখার আগে এপিআইগুলি কোথায় ব্যবহারের জন্য ব্যথা হয় তা শিখবেন এবং আপনি কেবলমাত্র পরীক্ষাগুলি যুক্ত করার পরে যদি আরও সহজে পুনরায় ডিজাইন করতে পারেন।
MbUnit
গ্রন্থাগার আমার জীবনের পরিবর্তিত হয়েছে। অটো পরীক্ষা গুরুত্বপূর্ণ। অটো পরীক্ষার সময় সাশ্রয় হয়। অটো পরীক্ষার অর্থ সাশ্রয় হয়। অটো টেস্টিং জীবন বাঁচাতে পারে। অটো পরীক্ষার একমাত্র উপায়। অটো-পরীক্ষা আরও একটি সুরক্ষার জাল। আমি যখন একটি বিশাল আর্কিটেকচারে কাজ করা 50 জন ব্যক্তির মধ্যে একজন হয়ে থাকি তখন আমার মনে হয় প্রাচীরের মতো আরও একটি ইট। ইউনিট পরীক্ষা দিয়ে আমি নিয়ন্ত্রণে আছি।