একটি এজ কেস, একটি কর্নার কেস, একটি বেস কেস এবং একটি বাউন্ডারি কেসের মধ্যে পার্থক্য কী?


86

আমি নেটিভ ইংলিশ স্পিকার নই। আমার স্থানীয় ভাষায় আমি পুনরাবৃত্তি থামাতে চেক হওয়া শর্তটি এবং চরম, অসম্ভব বা অতি-সহজ ক্ষেত্রে পরীক্ষা করা শর্তটি বোঝাতে ব্যবহৃত কিছু শর্ত সম্পর্কে অবহিত। ইংরেজিতে, আমি "এজ কেস", "কর্নার কেস", "বাউন্ডারি কেস" এবং "বেস কেস" শব্দটির মুখোমুখি হয়েছি, তবে আমি পার্থক্যগুলি পুরোপুরি বুঝতে পারি না এবং কোনটি উল্লেখ করার জন্য ব্যবহৃত হয়; আমি তাদের মধ্যে পার্থক্যের কিছু সংক্ষিপ্তসার পেতে পছন্দ করব।

বিশেষত, যদি কেউ নীচের কোডের নমুনায় লাইনগুলির জন্য এনোটোটেশন সরবরাহ করতে পারে তবে আমি খুব খুশি হব:

    int transmogrify(int n) {
1.      assert(n <= 1000000);
2.      if (n < 0) return -1;
3.      if (n == 1000000) return PRE_CALC;
4.      if (n == 0) return n+1;            // For stopping the recursion
5.      if (n == 1251) return 3077;
        return transmogrify(n-1);
    }

আমি মনে করি এটি:

  1. বৈধতা পরীক্ষা
  2. ইনপুট চেক
  3. বাউন্ডারি কেস? এজ কেস? কর্নারের কেস?
  4. বেস কেস? বাউন্ডারি কেস?
  5. কর্নারের কেস? এজ কেস?

4
আমি বিশ্বাস করি প্রান্ত এবং সীমানা সাধারণত একই রকম হয়। তবে তারা পরীক্ষার বিষয়ে উল্লেখ করে, কোডের শর্তাদি পরীক্ষা করার জন্য নয়।
রিচার্ড

@ রিচার্ড টেস্টিং কোড নয়? এটি আমার বোধগম্য নয় - এই শর্তাবলি কোডের সাথে প্রযোজ্য নয় বলে আপনি বিশ্বাস করেন কিনা তা সমর্থন করার জন্য আপনার কাছে কি কোনও রেফারেন্স রয়েছে?
ব্র্যাড থমাস

উত্তর:


94

আমিও নেটিভ ইংলিশ স্পিকার নই। তবে উইকিপিডিয়া অনুসারে:

  • এজ কেসটি চরম (সর্বাধিক বা সর্বনিম্ন) অপারেটিং প্যারামিটারে ঘটে
  • কর্নার কেসটি সাধারণ অপারেটিং পরামিতিগুলির বাইরে ঘটে , বিশেষত যখন একাধিক পরিবেশগত পরিবর্তনশীল বা শর্তগুলি একযোগে চরম স্তরে থাকে, যদিও প্রতিটি পরামিতি সেই প্যারামিটারের জন্য নির্দিষ্ট পরিসরের মধ্যে থাকে । ("বাইরের সাধারণ অপারেটিং প্যারামিটারগুলি" এর অর্থ অবশ্যই "অপারেটিং প্যারামিটারগুলির বাইরের সাধারণ সংমিশ্রণ" এর মতো কিছু, কঠোরভাবে "বাহ্যিকভাবে অনুমোদিত অপারেটিং প্যারামিটারগুলি নয়" That যা আপনি এখনও বৈধ প্যারামিটারের জায়গার মধ্যে রয়েছেন তবে এর কোণার কাছেই))
  • বাউন্ডারি কেস হয় যখন কোনও ইনপুট সর্বোচ্চ বা সর্বনিম্ন সীমা ছাড়িয়ে যায়।
  • বেস কেসটি যেখানে পুনরাবৃত্তি শেষ হয়।

সুতরাং, নামকরণটি পুরোপুরি বিভ্রান্ত বলে মনে হচ্ছে, যদিও কোণার কেসটি প্রান্ত এবং সীমানা ক্ষেত্রে কিছুটা আলাদা (মানগুলির সংমিশ্রণ) বোঝায় যা অবশ্যই স্পষ্টতই প্রতিশব্দ। এটি সম্ভবত নিরাপদ বলাই নিরাপদ যে সাধারণ বক্তৃতাতে প্রান্ত, কোণ এবং সীমানা ক্ষেত্রে একই জিনিস। কেউ কেউ প্রত্যেকে তার দ্বারা পৃথক পৃথক কথা বলতে চাইছেন, তবে সাধারণ কোনও চুক্তি খুব কমই রয়েছে।

আপনার 1) এবং 2) আপনি যা লিখেছেন তা হ'ল, 3) একটি প্রান্ত / সীমানা কেস, 4) একটি বেস কেস এবং 5) একটি বিশেষ কেস।


প্রতিটি প্রযুক্তিগত শব্দের পিছনে ধারণাগুলি বুঝতে এটি খুব দরকারী উত্তর।
জিগনেশ ফাদাদু

25

শব্দের মধ্যে পার্থক্য নির্বিশেষে, আপনি কোন পরীক্ষার বর্ণনা দিতে যা ব্যবহার করবেন তা পরীক্ষার শব্দার্থবিজ্ঞানের (অর্থ) উপর নির্ভর করে , সঠিক কোড নয় - উদাহরণস্বরূপ প্রদান করা হয়েছে যে প্রতিটি পরীক্ষার অর্থ কী তা স্পষ্ট নয়। এদিকে, আমি কীভাবে তাদের বুঝতে পারি তা এখানে:

  • বিচক্ষণতা চেক = এটি কি কোনও অর্থবোধ করে? উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশনটি কেবল পূর্ণসংখ্যাগুলি আউটপুট করে sqrt(-1)এবং log(-1)সংজ্ঞায়িত হয়।
  • ইনপুট চেক = কিছু অভ্যন্তরীণ ডেটা কাঠামো বা কোনও ফাংশনের আউটপুটের বিপরীতে ব্যবহারকারীর ইনপুট পরীক্ষা করে। উদাহরণস্বরূপ, বাশ [ $# -gt 0 ]চেকগুলিতে আপনি কমপক্ষে একটি ইনপুট প্যারামিটার পেয়েছেন যা findবা এর মতো কমান্ডের স্যানিটি চেকও হতে পারে mail
  • প্রান্ত / সীমানা যাচাই করুন = সর্বাধিক বা সর্বনিম্ন ইনপুট যা সঠিক আউটপুট উত্পাদনের আশা করে । উদাহরণস্বরূপ, একটি ফাংশন যা কেবলমাত্র একটি সংখ্যার সাথে যুক্ত করে তার অপারেটিং রেঞ্জ থাকবে <MIN_INT> থেকে <MAX_INT> - 1 পর্যন্ত, যেহেতু <MIN_INT> এর চেয়ে ছোট ইনপুট ব্যবহারকারীর দ্বারা সরবরাহ করা যায় না এবং <MAX_INT> এর চেয়ে বড় আউটপুট সরবরাহ করা যায় না দরকারী হবে না।
  • কর্নার কেস চেক = আরও জটিল বাউন্ডারি চেক (একটি কোণটি দ্বি-মাত্রিক সীমানা) উদাহরণস্বরূপ, গণনায় <MIN_INT> এবং <MAX_INT> সংযুক্ত করে।
  • বিশেষ কেস চেক = অ-স্পষ্ট, অ-সীমানা বিশেষ মান , উদাহরণস্বরূপ log(1 + the smallest floating point number)

একটি অসম্পূর্ণ নিট: লগ -1 i 1 হয় π পাইথনে,import cmath; assert(cmath.log(-1) == 3.141592653589793j)
বব স্টেইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.