বিদ্যমান উত্তরগুলি অবশ্যই ভাল, তবে আমি এই প্রশ্নে কাউকে এই মূল ধারণাটির ভুল সমাধান করতে দেখিনি:
সময়ে যে কোনও সময়ে সমস্ত ইউনিট পরীক্ষা পাস করতে হবে
না। নিশ্চিতভাবেই, এটি সত্য হবে না। আমি যখন সফ্টওয়্যারটি বিকাশ করছি, এনক্রাঞ্চ প্রায়শই হয় বাদামী (বিল্ড ব্যর্থতা) বা লাল (ব্যর্থ পরীক্ষা)।
যেখানে এনক্রাঞ্চকে সবুজ হতে হবে (সমস্ত পরীক্ষার উত্তীর্ণ হওয়া) যখন আমি উত্স নিয়ন্ত্রণ সার্ভারে একটি প্রতিশ্রুতি দেওয়ার জন্য প্রস্তুত, কারণ তখন অন্যরা আমার কোডের উপর নির্ভরতা নিতে পারে।
এটি নতুন পরীক্ষা তৈরির বিষয়টিতেও ফিড দেয়: টেস্টগুলির কোডের যুক্তি এবং আচরণকে দৃ .় করা উচিত। সীমানা পরিস্থিতি, দোষের শর্ত ইত্যাদি etc. আমি যখন নতুন পরীক্ষা লিখি, কোডে এই "হট স্পট" সনাক্ত করার চেষ্টা করি।
ইউনিট পরীক্ষা করে নথিগুলি কীভাবে আমার কোডটি কল করার প্রত্যাশা করে - পূর্বশর্ত, প্রত্যাশিত আউটপুট ইত্যাদি,
যদি কোনও পরিবর্তন পরিবর্তনের পরে কোনও পরীক্ষা ভঙ্গ করে, কোড বা পরীক্ষাটি ত্রুটিযুক্ত কিনা তা আমাকে সিদ্ধান্ত নিতে হবে।
পার্শ্ব নোট হিসাবে, ইউনিট টেস্টিং কখনও কখনও টেস্ট চালিত বিকাশের সাথে হাতছাড়া হয়ে যায়। টিডিডির একটি মূলনীতি হ'ল ভাঙা পরীক্ষাগুলি আপনার গাইডপোস্টগুলি। যখন কোনও পরীক্ষা ব্যর্থ হয়, আপনাকে কোডটি ঠিক করতে হবে যাতে পরীক্ষাটি পাস হয়। এই সপ্তাহের শুরুর দিক থেকে এখানে একটি দৃ example় উদাহরণ:
পটভূমি : আমি লিখেছিলাম এবং এখন আমাদের বিকাশকারীদের দ্বারা ব্যবহৃত একটি লাইব্রেরি সমর্থন করি যা ওরাকল কোয়েরিগুলি বৈধকরণের জন্য ব্যবহৃত হয়। আমাদের পরীক্ষাগুলি ছিল যে জোর দিয়েছিল যে ক্যোয়ারীটি কিছু প্রত্যাশিত মানের সাথে মেলে, যা কেসটিকে গুরুত্বপূর্ণ করে তোলে (এটি ওরাকলে নেই) এবং যতক্ষণ না তারা প্রত্যাশিত মানটিকে পুরোপুরি মেলে ততক্ষণ অবৈধ প্রশ্নের সাথে সুখীভাবে অনুমোদিত হয়।
পরিবর্তে, আমার লাইব্রেরিটি এন্টলার এবং একটি ওরাকল 12 সি সিনট্যাক্স ব্যবহার করে ক্যোয়ারীটি পার্স করে এবং তারপরে সিনট্যাক্স ট্রিটিতে বিভিন্ন যুক্তি মোড়ানো। এর মতো বিষয়গুলি, এটি বৈধ (কোনও পার্স ত্রুটি উত্থাপিত হয়নি), এর সমস্ত পরামিতি প্যারামিটার সংগ্রহের দ্বারা সন্তুষ্ট, ডেটা পাঠক দ্বারা পড়া সমস্ত প্রত্যাশিত কলামগুলি ক্যোয়ারীতে উপস্থিত রয়েছে ইত্যাদি etc. এগুলি সমস্তই এমন আইটেম যা এতে পিছলে গেছে বিভিন্ন সময়ে উত্পাদন।
আমার এক সহকর্মী ইঞ্জিনিয়ার আমাকে সোমবার একটি জিজ্ঞাসা পাঠিয়েছিল যা সাপ্তাহিক ছুটিতে ব্যর্থ হয়েছিল (বা বরং এটি ব্যর্থ হওয়া উচিত ছিল)। আমার লাইব্রেরিটি বলেছে যে বাক্য গঠনটি ঠিক আছে, কিন্তু সার্ভারটি এটি চালানোর চেষ্টা করলে এটি ফুলে ওঠে। এবং যখন তিনি ক্যোয়ারীর দিকে তাকালেন, তখন এটি স্পষ্ট ছিল যে কেন:
UPDATE my_table(
SET column_1 = 'MyValue'
WHERE id_column = 123;
আমি প্রকল্পটি লোড করেছি এবং একটি ইউনিট পরীক্ষা যুক্ত করেছি যা দৃ as়ভাবে জানিয়েছে যে এই কোয়েরিটি বৈধ হবে না। স্পষ্টতই, পরীক্ষাটি ব্যর্থ হয়েছিল।
পরবর্তী, আমি ব্যর্থ পরীক্ষা debugged, কোড মাধ্যমে ধাপ ধাপ যেখানে আমি আশা ব্যতিক্রম নিক্ষেপ করা, এবং মূর্ত আউট যে Antlr ছিল শুধু একটি উপায় পূর্ববর্তী কোড আশা করেছিলাম নেই খোলা paren একটি ত্রুটি উত্থাপন। আমি কোডটি সংশোধন করেছি, যাচাই করেছিলাম যে পরীক্ষাটি এখন সবুজ (উত্তীর্ণ) হয়ে গেছে এবং অন্য কেউ প্রক্রিয়ায় ভেঙে পড়েছে, প্রতিশ্রুতিবদ্ধ হয়েছে এবং চাপ দিয়েছে।
এটি হতে পারে 20 মিনিট সময় নিয়েছে এবং প্রক্রিয়াটিতে আমি লাইব্রেরিটি প্রকৃতপক্ষে উল্লেখযোগ্যভাবে উন্নত করেছি কারণ এটি এখন পুরোপুরি ত্রুটিগুলি সমর্থন করে যা পূর্বে এটি উপেক্ষা করে চলেছিল। লাইব্রেরির জন্য যদি আমার ইউনিট পরীক্ষা না করা হয়, তবে সমস্যাটি সমাধান এবং সমাধান করতে কয়েক ঘন্টা সময় নিতে পারত।