প্রোগ্রামের অভ্যন্তরীণ অবস্থা সম্পর্কে আপনাকে বলার জন্য জোর দেওয়া কার্যকর । উদাহরণস্বরূপ, আপনার ডেটা স্ট্রাকচারের একটি বৈধ অবস্থা রয়েছে, উদাহরণস্বরূপ, যে কোনও Time
ডেটা স্ট্রাকচারের মান হ'ল না 25:61:61
। দাবী অনুসারে শর্তাদি পরীক্ষা করা হয়:
পূর্ব শর্তাদি, যা আশ্বাস দেয় যে কলার তার চুক্তি রাখে,
পোস্টকন্ডিশনস, যা আশ্বাস দেয় যে কলি তার চুক্তিটি রাখে, এবং
আক্রমণকারীরা, যা নিশ্চিত করে যে ফাংশন ফিরে আসার পরে ডেটা কাঠামো সবসময় কিছু সম্পত্তি রাখে। আক্রমণকারী হ'ল একটি শর্ত যা পূর্ব শর্ত এবং পোস্টকন্ডিশন।
মডিউলটির বাহ্যিক আচরণ সম্পর্কে আপনাকে বলার জন্য ইউনিট পরীক্ষাগুলি দরকারী । তোমার Stack
সঙ্গতিপূর্ণ রাষ্ট্র পর থাকতে পারে push()
পদ্ধতি বলা হয়, কিন্তু পরে এটি তিনবার বলা হয় যদি স্ট্যাকের আকার তিন বৃদ্ধি নয়, তারপর যে ত্রুটিপূর্ণ কিনা। (উদাহরণস্বরূপ, তুচ্ছ ঘটনা যেখানে ভুল push()
বাস্তবায়ন কেবল তদন্ত করে এবং প্রস্থান করে।)
কড়া কথায় বলতে গেলে দাবী এবং ইউনিট পরীক্ষার মধ্যে প্রধান পার্থক্য হ'ল ইউনিট পরীক্ষাগুলিতে পরীক্ষার ডেটা থাকে (প্রোগ্রামটি চালানোর জন্য মানগুলি), তবে জোর দেওয়া হয় না। এটি হল, আপনি নিজের ইউনিট পরীক্ষাগুলি স্বয়ংক্রিয়ভাবে চালিয়ে দিতে পারেন, যখন আপনি দৃ while়তার জন্য একই বলতে পারবেন না। এই আলোচনার খাতিরে আমি ধরে নিয়েছি আপনি উচ্চতর অর্ডার ফাংশন পরীক্ষার (যা পুরো প্রোগ্রামটি কার্যকর করে এবং ইউনিট পরীক্ষার মতো মডিউল চালায় না) প্রসঙ্গে প্রোগ্রামটি চালানোর বিষয়ে কথা বলছেন। যদি আপনি "আসল ইনপুটগুলি দেখার" উপায় হিসাবে স্বয়ংক্রিয় ফাংশন পরীক্ষার কথা বলছেন না, তবে স্পষ্টভাবে মানটি স্বয়ংক্রিয়তার মধ্যে রয়েছে, এবং এইভাবে ইউনিট পরীক্ষাগুলি জিততে পারে। আপনি যদি (স্বয়ংক্রিয়) ফাংশন পরীক্ষার প্রসঙ্গে এই বিষয়ে কথা বলছেন তবে নীচে দেখুন।
যা পরীক্ষা করা হচ্ছে তাতে কিছুটা ওভারল্যাপ থাকতে পারে। উদাহরণস্বরূপ, একটি Stack
'পোস্টকন্ডিশন' আসলে স্ট্যাকের আকার একের সাথে বাড়িয়ে দেয় sert তবে সেই প্রতিবেদনে কী সম্পাদন করা যায় তার সীমাবদ্ধতা রয়েছে: এটিও পরীক্ষা করে দেখা উচিত যে শীর্ষ উপাদানটি সবেমাত্র যুক্ত হয়েছিল?
উভয়ের জন্যই লক্ষ্যটি মান বাড়ানো increase ইউনিট পরীক্ষার জন্য, বাগগুলি খুঁজে পাওয়া লক্ষ্য। দৃser়তার জন্য, লক্ষ্যটি হ'ল অবৈধ প্রোগ্রামের অবস্থাগুলি দেখা মাত্রই পর্যবেক্ষণ করে ডিবাগিংটিকে আরও সহজ করা।
নোট করুন যে কোনও কৌশলই সঠিকতা যাচাই করে না । প্রকৃতপক্ষে, আপনি যদি প্রোগ্রামটি যাচাই করার লক্ষ্যে ইউনিট টেস্টিং পরিচালনা করেন তবে আপনি সম্ভবত অজ্ঞাতসারে পরীক্ষা নিয়ে আসবেন যা আপনি জানেন যে কাজ করবে। এটি একটি মনস্তাত্ত্বিক প্রভাব: আপনি আপনার লক্ষ্য পূরণের জন্য যা কিছু করুন তা করুন। আপনার লক্ষ্য যদি বাগগুলি সন্ধান করা হয় তবে আপনার ক্রিয়াকলাপগুলি এটি প্রতিফলিত করবে।
উভয়ই গুরুত্বপূর্ণ এবং তাদের নিজস্ব উদ্দেশ্য রয়েছে।
[জরিমানা সম্পর্কে একটি চূড়ান্ত নোট হিসাবে: সর্বাধিক মান পেতে, আপনাকে এগুলি আপনার প্রোগ্রামের সমস্ত গুরুত্বপূর্ণ পয়েন্টে ব্যবহার করতে হবে, এবং কয়েকটি মূল ফাংশন নয়। অন্যথায়, সমস্যার মূল উত্সটি মাস্ক করা হয়েছে এবং কয়েক ঘন্টা ডিবাগিং ছাড়াই সনাক্ত করা শক্ত]
:-)