কীভাবে সাবলীল ইউনিট পরীক্ষা এড়ানো যায়?


24

আমরা প্রায় 3,000 টি পরীক্ষার কাছাকাছি লিখেছি - ডেটা কঠোর কোড করা হয়েছে, কোডের খুব কম ব্যবহার করা use এই পদ্ধতিটি আমাদের পাছায় কামড়াতে শুরু করেছে। সিস্টেম পরিবর্তন হওয়ার সাথে সাথে আমরা ভাঙা পরীক্ষাগুলি ঠিক করতে আরও বেশি সময় ব্যয় করতে দেখি। আমাদের ইউনিট, সংহতকরণ এবং কার্যকরী পরীক্ষা রয়েছে।

আমি যা খুঁজছি তা হ'ল পরিচালনাযোগ্য ও রক্ষণাবেক্ষণযোগ্য পরীক্ষাগুলি লেখার একটি নির্দিষ্ট উপায় way

ফ্রেমওয়ার্ক


এটি প্রোগ্রামার্সের তুলনায় অনেক বেশি উপযুক্ত।
স্ট্যাক এক্সচেঞ্জ

উত্তর:


21

এগুলি "ভাঙা ইউনিট পরীক্ষা" হিসাবে মনে করবেন না, কারণ তারা তা নয়।

এগুলি নির্দিষ্টকরণ যা আপনার প্রোগ্রামটি আর সমর্থন করে না।

এটিকে "পরীক্ষার স্থিরকরণ" হিসাবে ভাবেন না, "নতুন প্রয়োজনীয়তা সংজ্ঞায়িত করা" হিসাবে।

পরীক্ষাগুলিতে আপনার অ্যাপ্লিকেশনটি প্রথমে নির্দিষ্ট করা উচিত, অন্যভাবে নয় not

আপনি এটি কাজ করে না জানা অবধি আপনার একটি কার্যকর বাস্তবায়ন আছে বলতে পারবেন না। আপনি এটি পরীক্ষা না করা পর্যন্ত এটি কাজ করে বলতে পারবেন না।

আপনাকে গাইড করতে পারে এমন আরও কয়েকটি নোট:

  1. পরীক্ষা এবং ক্লাস পরীক্ষার মধ্যেও হওয়া উচিত ছোট এবং সহজ । প্রতিটি পরীক্ষায় কেবল কার্যকারিতার একক টুকরো পরীক্ষা করা উচিত। অর্থাত, অন্যান্য পরীক্ষাগুলি যা ইতিমধ্যে চেক করে সেগুলিতে এটি যত্ন নেয় না।
  2. পরীক্ষাগুলি এবং আপনার অবজেক্টগুলি lyিলেledালাভাবে একত্রে হওয়া উচিত, যদি আপনি কোনও বস্তু পরিবর্তন করেন তবে আপনি কেবল তার নির্ভরতা গ্রাফটি নীচের দিকে পরিবর্তন করছেন এবং অন্যান্য বস্তু যা এই বস্তুটি ব্যবহার করে তা দ্বারা প্রভাবিত হয় না।
  3. আপনি হয়ত ভুল জিনিস তৈরি এবং পরীক্ষা করছেন । আপনার অবজেক্টগুলি কি সহজে ইন্টারফেসিং বা সহজ বাস্তবায়নের জন্য নির্মিত? যদি এটি পরবর্তী ক্ষেত্রে হয়, আপনি নিজেকে পুরানো প্রয়োগের ইন্টারফেস ব্যবহার করে এমন অনেকগুলি কোড পরিবর্তন করতে দেখছেন।
  4. সর্বোত্তম ক্ষেত্রে, একক দায়িত্বের নীতিটি কঠোরভাবে মেনে চলুন। আরও খারাপ ক্ষেত্রে, ইন্টারফেস বিভাজন নীতিটি মেনে চলুন। সলিড নীতিগুলি দেখুন ।

5
+1 এর জন্যDon't think of it as "fixing the tests", but as "defining new requirements".
স্টুপারউসার

2
+1 পরীক্ষাগুলিতে প্রথমে আপনার অ্যাপ্লিকেশনটি নির্দিষ্ট করা উচিত,
অন্যভাবে

11

আপনি যা বর্ণনা করেছেন তা আসলে খুব খারাপ জিনিস নাও হতে পারে, তবে গভীর পরীক্ষার জন্য আপনার পরীক্ষাগুলি আবিষ্কার করে

সিস্টেম পরিবর্তন হওয়ার সাথে সাথে আমরা ভাঙা পরীক্ষাগুলি ঠিক করতে আরও বেশি সময় ব্যয় করতে দেখি। আমাদের ইউনিট, সংহতকরণ এবং কার্যকরী পরীক্ষা রয়েছে।

আপনি যদি নিজের কোড পরিবর্তন করতে পারেন, এবং আপনার পরীক্ষাগুলি ভঙ্গ না করে তবে এটি আমার কাছে সন্দেহজনক। বৈধ পরিবর্তন এবং বাগের মধ্যে পার্থক্য কেবলমাত্র এটি অনুরোধ করা হয়, যা অনুরোধ করা হয় তা হল (টেডিডি অনুমান) আপনার পরীক্ষাগুলি দ্বারা সংজ্ঞায়িত।

ডেটা হার্ড কোড করা হয়েছে।

পরীক্ষাগুলিতে হার্ড কোডেড ডেটা হ'ল ভাল জিনিস। পরীক্ষাগুলি প্রমাণ হিসাবে নয়, মিথ্যা হিসাবে কাজ করে। যদি খুব বেশি গণনা হয় তবে আপনার পরীক্ষাগুলি টাউটোলজ হতে পারে। উদাহরণ স্বরূপ:

assert sum([1,2,3]) == 6
assert sum([1,2,3]) == 1 + 2 + 3
assert sum([1,2,3]) == reduce(operator.add, [1,2,3])

বিমূর্ততাটি যত বেশি হবে ততই আপনি অ্যালগরিদমের কাছাকাছি পৌঁছে যাবেন এবং ততক্ষণে নিজের সাথে একিউটাল বাস্তবায়নের তুলনা করার কাছাকাছি।

কোড খুব কম পুনরায় ব্যবহার

পরীক্ষাগুলিতে কোডের সর্বোত্তম পুনরায় ব্যবহার হ'ল ইউএনআইটিএসের মতো ইমো 'চেকস' assertThat, কারণ তারা পরীক্ষা সহজ রাখে। তদ্ব্যতীত, যদি পরীক্ষাগুলি কোড ভাগ করে নেওয়ার জন্য রিফ্যাক্টর করা যায় তবে পরীক্ষিত প্রকৃত কোড সম্ভবত খুব বেশি হতে পারে , সুতরাং পরীক্ষাগুলি রিফ্যাক্টর বেসটি পরীক্ষা করে এমন পরীক্ষাগুলি হ্রাস করে।


আমি জানতে চাই যেখানে ডাউনভোটারের সাথে কোন মতামত নেই।
কেপলা

কেপলা - আমি ডাউনভোটার নই, তবে সাধারণত, আমি যেখানে মডেলটিতে আছি তার উপর নির্ভর করে ইউনিট স্তরে ডেটা পরীক্ষার চেয়ে আমি বস্তুর মিথস্ক্রিয়াটিকে টেস্ট করতে চাই। পরীক্ষার ডেটা ইন্টিগ্রেশন পর্যায়ে আরও ভাল কাজ করে।
রিচ মেল্টন

@ কেপ্পলা আমার একটি ক্লাস রয়েছে যা এটির সামগ্রিক আইটেমগুলিতে কিছু সীমাবদ্ধ আইটেম থাকে তবে এটি একটি পৃথক চ্যানেলে অর্ডারকে সরিয়ে দেয়। আমি এটি একটি নকল অর্ডার তৈরি করি যার মধ্যে 4 টি আইটেম রয়েছে যার মধ্যে দুটি সীমাবদ্ধ। যতক্ষণ না সীমাবদ্ধ আইটেম যুক্ত করা হয় ততক্ষণ এই পরীক্ষাটি অনন্য। তবে একটি জাল ক্রম তৈরি করার এবং দুটি নিয়মিত আইটেম যুক্ত করার পদক্ষেপগুলি একই সেটআপ যা অন্য পরীক্ষায় ব্যবহার করা হয় যা অ-সীমাবদ্ধ আইটেমের ওয়ার্কফ্লো পরীক্ষা করে। এই ক্ষেত্রে আইটেমগুলির সাথে যদি অর্ডারটিতে গ্রাহকের ডেটা সেটআপ এবং অ্যাড্রেসস সেটআপ ইত্যাদির প্রয়োজন হয় তবে সেটআপ সহায়তাকারীদের পুনরায় ব্যবহার করার ক্ষেত্রে এটি ভাল ক্ষেত্রে না। কেন কেবল পুনরায় ব্যবহারের দাবি?
আসিফ শিরাজ

6

আমারও সমস্যা ছিল আমার উন্নত পদ্ধতিটি নিম্নরূপ হয়েছে:

  1. ইউনিট পরীক্ষাগুলি লিখবেন না যতক্ষণ না তারা কোনও কিছুর পরীক্ষা করার একমাত্র ভাল উপায়।

    আমি স্বীকার করতে পুরোপুরি প্রস্তুত আছি যে ইউনিট পরীক্ষায় সর্বনিম্ন ব্যয় নির্ণয়ের এবং সময়-সংশোধন করার ব্যয় হয়। এটি তাদের একটি মূল্যবান সরঞ্জাম করে তোলে। সমস্যাটি হ'ল স্পষ্টত আপনার মাইলেজ-পরিবর্তিত হতে পারে, সেই ইউনিট পরীক্ষাগুলি প্রায়শই কোডের ভর রক্ষণাবেক্ষণের জন্য যোগ্যতার তুলনায় খুব ক্ষুদ্র। আমি নীচে একটি উদাহরণ লিখেছি, একবার দেখুন।

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

    কেউ আমাকে হত্যা করার আগে: উত্পাদন বিল্ডসগুলির দাবিতে ক্রাশ হওয়া উচিত নয়। পরিবর্তে, তাদের "ত্রুটি" পর্যায়ে লগ করা উচিত।

    যে কেউ এখনও এটি সম্পর্কে ভাবেননি তাদের সাবধানতা হিসাবে, ব্যবহারকারী বা নেটওয়ার্ক ইনপুটটিতে কিছু জোড় করবেন না। এটি একটি বিশাল ভুল ™।

    আমার সর্বশেষতম কোড ঘাঁটিতে, যেখানেই আমি দৃ as়তার জন্য একটি সুস্পষ্ট সুযোগ দেখতে পাচ্ছি আমি যুক্তিসঙ্গতভাবে ইউনিট পরীক্ষাগুলি সরিয়ে দিচ্ছি। এটি সামগ্রিকভাবে রক্ষণাবেক্ষণের ব্যয়কে উল্লেখযোগ্যভাবে হ্রাস করেছে এবং আমাকে অনেক বেশি সুখী ব্যক্তি করেছে।

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

    এটি মনে রাখা কী, যেহেতু আপনি দৃ as়তাগুলি ব্যবহার করছেন, প্রতিটি সিস্টেম পরীক্ষা একই সময়ে কয়েক শতাধিক "ইউনিট পরীক্ষা" চালাবে। আপনি বরং আশ্বস্ত হয়ে গেছেন যে সর্বাধিক গুরুত্বপূর্ণ ব্যক্তিরা একাধিকবার চালায়।

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

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


"ইউনিট পরীক্ষা লিখবেন না" ইস্যুতে আমি একটি উদাহরণ উপস্থাপন করব:

TEST(exception_thrown_on_null)
{
    InternalDataStructureType sink;
    ASSERT_THROWS(sink.consumeFrom(NULL), std::logic_error);
    try {
        sink.consumeFrom(NULL);
    } catch (const std::logic_error& e) {
        ASSERT(e.what() == "You must not pass NULL as a parameter!");
    }
}

এই পরীক্ষাটি লেখক সাত লাইন যে অবদান না যোগ করেনি সব সময়ে চূড়ান্ত পণ্য যাচাই করতে। ব্যবহারকারীর কখনই এটি ঘটছে তা দেখা উচিত নয় , কারণ ক) এর আগে কেউ কখনও নুল পাস করবে না (সুতরাং একটি প্রতিবেদন লিখুন) বা খ) ন্যূনুল কেসটি কিছু আলাদা আচরণের কারণ হতে পারে। যদি কেসটি (খ) হয় তবে একটি পরীক্ষা লিখুন যা আসলে সেই আচরণটি যাচাই করে।

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

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

আপনাকে আমার নির্দিষ্ট পরামর্শ, তারপরে: ইউনিট পরীক্ষাগুলি ভাঙ্গার সাথে সাথে তাদের মুছে ফেলা শুরু করুন, নিজেকে প্রশ্ন জিজ্ঞাসা করুন, "এটি কি আউটপুট, না আমি কোড নষ্ট করছি?" আপনি সম্ভবত আপনার সময় নষ্ট করে যাচ্ছেন এমন সংখ্যা হ্রাস করতে আপনি সফল হবেন।


3
সিস্টেম / ইন্টিগ্রেশন পরীক্ষাগুলি পছন্দ করুন - এটি মনের অদ্ভুতভাবে খারাপ। আপনার সিস্টেমটি এমন এক পর্যায়ে পৌঁছেছে যেখানে এটি ইউনিট স্তরে দ্রুত ধরা পড়তে পারে এমন জিনিসগুলি পরীক্ষা করার জন্য এই (ধীরগতি!) পরীক্ষাগুলি ব্যবহার করে এবং তাদের চালাতে কয়েক ঘন্টা সময় লাগে কারণ আপনার অনেকগুলি অনুরূপ এবং ধীরগতির পরীক্ষা রয়েছে।
রিচ মেল্টন

1
@ রিচমেল্টন আলোচনার থেকে সম্পূর্ণ আলাদা, মনে হচ্ছে আপনার একটি নতুন সিআই সার্ভার দরকার। সিআই এর মতো আচরণ করা উচিত নয়।
অ্যান্ড্রেস জান ট্যাক

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

1
ডিবাগ-কেবলমাত্র 'অ্যাসেট'-শৈলীর উপন্যাস যেগুলির সাথে আমি পরিচিত (পরীক্ষার দাবি হিসাবে নয়) সিআইকে ঝুলিয়ে দেয় এমন একটি ডায়ালগ পপ আপ করে কারণ এটি বিকাশকারী ইন্টারঅ্যাকশনটির জন্য অপেক্ষা করছে।
রিচ মেল্টন

1
আহ, ভাল যে আমাদের মতবিরোধ সম্পর্কে অনেক ব্যাখ্যা করবে। :) আমি সি-স্টাইলের দৃ to়তার উল্লেখ করছি। আমি এখনই লক্ষ্য করেছি যে এটি একটি নেট প্রশ্ন। cplusplus.com/references/clibrary/cassert/assert
Andres Jaan Tack

5

আপনার ইউনিট টেস্টিং একটি কবজির মতো কাজ করে বলে মনে হয়। এটি পুরোপুরি সাজানোর পরে এটি পরিবর্তনের পক্ষে এতই নাজুক frag এটি একটি ভাল বিষয়। কোড ব্রেক বিরতি পরীক্ষায় ছোট পরিবর্তনগুলি যাতে আপনি আপনার পুরো প্রোগ্রাম জুড়ে ত্রুটির সম্ভাবনা দূর করতে পারেন।

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

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


3

আমি নিশ্চিত যে অন্যের আরও অনেক ইনপুট থাকবে তবে আমার অভিজ্ঞতায় এই কয়েকটি গুরুত্বপূর্ণ বিষয় যা আপনাকে সহায়তা করবে:

  1. ইনপুট ডেটা স্ট্রাকচারগুলি তৈরি করতে একটি টেস্ট অবজেক্ট ফ্যাক্টরি ব্যবহার করুন, যাতে আপনার সেই যুক্তিকে নকল করার দরকার নেই। পরীক্ষা সেটআপের জন্য প্রয়োজনীয় কোডটি কাটাতে সম্ভবত অটো ফিকচারের মতো সহায়ক সহায়ক লাইব্রেরিটি দেখুন ।
  2. প্রতিটি পরীক্ষার ক্লাসের জন্য, এসইউটি তৈরিকে কেন্দ্রিয়করণ করুন, সুতরাং যখন জিনিসগুলি সংশোধন করা হবে তখন এটি পরিবর্তন করা সহজ হবে।
  3. মনে রাখবেন, পরীক্ষার কোডটি প্রডাকশন কোডের মতোই গুরুত্বপূর্ণ। কোডটি যদি অবিরাম বোধ হয় তবে আপনি যদি নিজের কাছে পুনরাবৃত্তি করছেন তা যদি খুঁজে পাওয়া যায় তবে এটি পুনরুদ্ধার করা উচিত etc.

পরীক্ষাগুলিতে আপনি যত বেশি কোড পুনঃব্যবহার করবেন, তত তত ভঙ্গুর হয়ে উঠবে, কারণ এখন একটি পরীক্ষা পরিবর্তনের ফলে অন্যটি ভেঙে যেতে পারে। এটি একটি যুক্তিসঙ্গত ব্যয় হতে পারে, রক্ষণাবেক্ষণের বিনিময়ে - আমি এখানে তর্ক করতে যাচ্ছি না - তবে যুক্তি দিতে যে 1 এবং 2 পয়েন্ট পরীক্ষা কম ভঙ্গুর করে তোলে (যা প্রশ্ন ছিল) ঠিক ভুল।
pdr

@ ডিরিস - ঠিক আছে, টেস্ট কোডটিতে রানিং কোডের চেয়ে আলাদা আইডিয়াম রয়েছে। 'সাধারণ' কোডটি রিফ্যাক্ট করে জিনিসগুলি আড়াল করা এবং আইওসি পাত্রে যেমন স্টাফ ব্যবহার করে কেবল আপনার পরীক্ষাগুলির দ্বারা নকশার সমস্যার মুখোমুখি হচ্ছে design
রিচ মেল্টন

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

2

সোর্স কোড দিয়ে আপনি যেমন পরীক্ষা করেন তেমন পরিচালনা করুন।

সংস্করণ নিয়ন্ত্রণ, চেকপয়েন্ট রিলিজ, ইস্যু ট্র্যাকিং, "বৈশিষ্ট্যটির মালিকানা", পরিকল্পনা এবং প্রচেষ্টা অনুমান ইত্যাদি ইত্যাদি হয়ে গেছে - আমি মনে করি যে আপনি বর্ণনা করার মতো সমস্যাগুলি মোকাবেলার জন্য এটি সবচেয়ে কার্যকর উপায়।


1

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

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

মক এবং স্টাবগুলির মাধ্যমে আপনার পরীক্ষার সেটআপগুলির বাইরে গুরুত্বহীন বিবরণ গ্রহণ করা এবং কোডের পুনঃব্যবহারের জন্য পরীক্ষার ধরণগুলি প্রয়োগ করা তাদের ভঙ্গুরতাটিকে উল্লেখযোগ্যভাবে হ্রাস করতে হবে।

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