আমার পরীক্ষার পদ্ধতিগুলিতে আমাকে কী চেষ্টা করা উচিত?


18

আমি ইউনিট পরীক্ষা করছি।

আমি একটি ফাংশন পরীক্ষা করার চেষ্টা করছি।

আমি এটি আমার পরীক্ষার উপাদান থেকে কল করেছি। তবে যদি দূরবর্তী ফাংশন ব্যতিক্রমটি পরিচালনা করতে না পারে তবে আমার পরীক্ষক উপাদানটিও ব্যতিক্রম পাবে, আমার ধারণা।

তাহলে আমার পরীক্ষক উপাদানটিতে ব্যতিক্রম হওয়ার বিষয়ে কি আমার চিন্তা করা উচিত?

ধন্যবাদ।

সম্পাদনা করুন:

পুনশ্চ:

একটি ত্রুটি নিক্ষেপ করা ভাল, তবে কেবলমাত্র অন্য ফাংশনের জন্য, ব্যবহারকারীদের শেষ বিকল্প না হওয়া পর্যন্ত শেষ করা নয়!

ওএমজি আমি একটি প্রোগ্রামিং কোট লিখেছি !!


আমি পরীক্ষায় নতুন এবং আমার কেবলমাত্র ফাংশনের আচরণটি পরীক্ষা করা উচিত। আমি মনে করি একে ব্ল্যাকবক্স এবং হোয়াইটবক্স পরীক্ষা বলে। ওহ আমি মনে আছে। আমি কলেজে পড়াশোনা করেছি!
বিকাশ

আপনি বিশেষত কোন ভাষা এবং xUnit কাঠামো ব্যবহার করছেন? আমি কিছু ক্ষেত্রে হ্যাঁ তর্ক করব।
গ্রেগ কে

আমি ব্যবহার করছি MXUnit সঙ্গে MockBox এবং ColdBox ColdFusion ভাষার জন্য।
বিকাশ

উত্তর:


23

সংক্ষিপ্ত উত্তর: না।

ইউনিট পরীক্ষায় ব্যতিক্রমগুলি ধরবেন না। আপনি ত্রুটিগুলি এবং ব্যতিক্রমগুলি উত্থাপিত পরিস্থিতিগুলি সন্ধানের জন্য ইউনিট পরীক্ষা করছেন।

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


আমি মনে করি উন্নত পরীক্ষার কাঠামো ব্যতিক্রমগুলি খুব ভালভাবে পরিচালনা করতে পারে, এমনকি আমি দেখতে পেয়েছি যে ভিজ্যুয়াল স্টুডিওতে আমরা যেমন "প্রত্যাশিত ব্যতিক্রম" বলেছি তার ব্যতিক্রমগুলির বিরুদ্ধেও পরীক্ষা করতে পারি। সুতরাং এটি জানা এবং ভাগ করে নেওয়া ভাল। ধন্যবাদ ..
বিকাশ

কোনও এক সময়, আপনি কোনও ব্যতিক্রম ছুঁড়ে ফেলেছেন কিনা তা পরীক্ষা করতে চান, কারণ ভাল পরীক্ষায় কেবল পরীক্ষাগুলি পরীক্ষা করে না কেবল জিনিসগুলি কাজ করে, তবে ব্যর্থ হওয়ার পরেও ঘটে।
ডেডালনিক্স

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

1
@ জওয়ান্টিং দ্বিতীয় অনুচ্ছেদটি পড়ুন - ইউনিট টেস্টিং ফ্রেমওয়ার্কগুলি ব্যতিক্রমগুলি ধরা দেয় এবং নির্দিষ্ট ব্যতিক্রমগুলি উত্থাপিত হয় এবং যদি তা না
ঘটে

5

(ম্যাকটলের উত্তরের বিপরীতে) দীর্ঘ উত্তর: না ... বেশিরভাগ সময়

যখন আপনি বলছেন যে আপনি কোনও পরীক্ষার একটি নির্দিষ্ট ব্যতিক্রম বাড়ানোর আশা করছেন, তখন আপনি জানতে পারবেন যে পরীক্ষার কোনও রেখা যখন সেই নির্দিষ্ট ব্যতিক্রম উত্থাপন করে।

এটি পরীক্ষার অধীনে পদ্ধতিটি ব্যতিক্রম ছুঁড়ে ফেলেছে তা জেনে যাওয়ার মতো একই জিনিস নয়।

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

এই ক্ষেত্রে,

public static class AssertHelper {
    public delegate void Thunk();

    public static void DoesNotThrow<T>(Thunk thunk, string message = "")
        where T: Exception {
        try {
            thunk.Invoke();
        } catch(T) {
            Assert.Fail(message);
        }
    }
}

এবং তারপর

[TestMethod]
public void assertHelperInAction() {
    // Random setup stuff here that's too annoying to put in my SetUp
    // method.
    AssertHelper.DoesNotThrow<IllegalArgumentException>(() =>
        {/* My random method under test */})
}

যদি এই পরীক্ষাটি ব্যর্থ হয়, আমি জানি যে পরীক্ষার অধীনে আমার পদ্ধতিটি ব্যতিক্রম ছুঁড়ে দিয়েছে, এবং এলোমেলো সেটআপ স্টাফের কিছু নয়।

(আপনার চেষ্টা করা উচিত এবং এলোমেলো সেটআপ স্টাফগুলি এড়ানো উচিত Sometimes কখনও কখনও পরীক্ষায় কিছু সেটআপ কোড রাখা সহজ)


ভালো উদাহরণ! আমি "পরীক্ষা" পর্যায়ে সুনির্দিষ্ট পরীক্ষার মধ্যে সীমাবদ্ধ করার বিষয়ে খুব সতর্ক হওয়ার চেষ্টা করি, তবে আমি যখন এই কৌশলটি মনে করি তখন কখনই আমি তা বন্ধ করার কোনও উপায় বের করতে পারি না (উদাহরণস্বরূপ, যখন কোনও রেসের শর্ত পরীক্ষা করার সময়) এবং শর্তটি আঘাত করতে 'পরীক্ষার' কাছে 'সেটআপ' দরকার '
এথেল ইভান্স

1

সাধারণভাবে, আপনাকে কেবল ব্যতিক্রমটি ছেড়ে দেওয়া উচিত, এবং পরীক্ষার কাঠামো আপনাকে প্রয়োজনীয় সমস্ত তথ্য সহ একটি সুন্দর প্রতিবেদন দেবে।


তবে টিডিডি পদ্ধতিতে আমরা সেই পদক্ষেপগুলি অনুসরণ করবে বলে আশা করা হচ্ছে:

  1. একটি পরীক্ষা লিখুন
  2. এটি ব্যর্থ হয়ে দেখুন এবং ত্রুটিটি বোধগম্য করুন
  3. কোডটি সংশোধন করুন
  4. কোড এবং পরীক্ষা রিফ্যাক্টর

আপনি যখন কোনও ব্যতিক্রম ছাড়েন, ত্রুটিটি যদি পরিষ্কার থাকে তবে তা ঠিক আছে। তবে কখনও কখনও ব্যতিক্রমটি অস্পষ্ট, বা এমনকি বিপথগামী। কীভাবে আপনি এটি আপনার কোডটিতে থাকতে পারেন (আপনার জন্য পরে যখন আপনি ভুলে যাবেন, বা এমন কোনও দলের সদস্যের জন্য যা সমস্যাটি খুঁজে বের করতে বড় সময় ছাড়বে)? সুতরাং আমার নীতিটি হ'ল: " যদি ব্যর্থতা পরিষ্কার করা দরকার হয় তবে আপনাকে ব্যতিক্রম ধরা দরকার "।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.