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