আমার প্রকল্পটি এটির ইউনিট পরীক্ষার জন্য কত বড় হতে হবে? [বন্ধ]


86

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

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


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

6
এটি সম্পর্কে কীভাবে (সি #। নেট জন্য বোঝানো হয়েছে): অন্তিম x = 3 * (1/3); অপারেশন শেষ হওয়ার পরে এক্স-এ কী পরিমাণ মান সংরক্ষণ করা হয়? আমার বক্তব্য এমনকি একটি লাইন কোডেরও পরীক্ষার প্রয়োজন হতে পারে কারণ এটি কোনও বাগ তৈরি করতে পারে কারণ আপনি জানেন না বা কারণ আপনি জানেন কিন্তু ভুল কোড করেছেন।
NoChance

2
@আআমোস, আমি মনে করি আপনি আমার বক্তব্যটি অনুপস্থিত। আমাকে একা এই প্রশ্ন জিজ্ঞাসা করা হয়েছে তা প্রমাণ করে যে আমি কোড পাঠকের জন্যও খাদ্য সরবরাহ বিবেচনা করি।
লামিন সান্নেহ

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

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

উত্তর:


206

আপনার প্রকল্পটি ইতিমধ্যে যথেষ্ট বড়।

আমার অভিজ্ঞতায় ইউনিট পরীক্ষার প্রয়োজনীয়তা বিবেচনা করার জন্য একটি শ্রেণি এবং একটি ফাংশন যথেষ্ট ছিল।

    class Simple {
        boolean reallySimple() {
            return true; // how do we make sure it doesn't change to false?
        }
    }


    class SimpleTest {
        void assertReallySimple() {
            // ensure reallySimple return value isn't changed unexpectedly
            UnitTestFramework.assertTrue(new Simple().reallySimple());
        }
    }

24
অবশ্যই আপনার আগে 0 ক্লাস / 0 ফাংশন পয়েন্টে শুরু করা উচিত ... আপনি যদি টিডিডি অনুসরণ করছেন :)
কাজ ড্রাগন

115
+1 টি। আপনার প্রোগ্রামটি যদি বাগগুলি রাখার পক্ষে যথেষ্ট পরিমাণে থাকে তবে ইউনিট পরীক্ষা করা যথেষ্ট বড়।
জেসন ওরেডরফ

9
@ জেসনঅরেনডরফ: আমি পোস্টারটিতে এটি উপহাস করছি এবং এটি আমার অফিসে রাখছি। উজ্জ্বল।
জাস্টিন ᚅᚔᚈᚄᚒᚔ

অতিরিক্তভাবে এটি "নিরাপদ" রিফ্যাক্টরিংয়ের অনুমতি দেয়।
টিমো

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

109

আমি কখনই "আপনার সমস্ত কিছু পরীক্ষা করতে হবে" ধারণাটি কিনিনি, যদিও সেখানে অবশ্যই লোকেরা আছেন যারা আছেন ( জেনেটের উত্তর দেখুন !)।

যতদূর আমি উদ্বিগ্ন, ইউনিট পরীক্ষার প্রধান সুবিধা হ'ল:

  1. পরিবর্তনগুলি যাতে জিনিস ভাঙ্গবে না তা নিশ্চিত করতে সহায়তা করা।
  2. আপনার ক্লাসে বুদ্ধিমান ইন্টারফেস ডিজাইন করতে সহায়তা করা (যেহেতু এটি আপনাকে আপনার নিজের কোডের ক্লায়েন্ট হতে বাধ্য করে)।
  3. আপনার কোডটি কীভাবে ব্যবহার করা হবে আশা করা যায় দস্তাবেজকে সহায়তা করা।

মূলত আপনাকে এই কারণগুলির বিরুদ্ধে পরীক্ষা লিখতে এবং বজায় রাখতে আপনাকে যে সময় দেবে তা ওজন করা দরকার।

1 নম্বর সাধারণত লেখার পরীক্ষাগুলি তৈরির জন্য যথেষ্ট। আমার অভিজ্ঞতায়,> 95% কোড শীঘ্রই বা পরে সংশোধিত হয়।


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

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

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

3
আহ, আমি মনে করি আপনি একটি মিস করেছেন: "কোডটি অনুমান করার মতো করে কাজ করে তা নিশ্চিত করা!"
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

3
@ ব্লুরাজা-ড্যানিপ্লুঘুফুট: আসলে, এটি বলা আরও সঠিক হবে: "আপনার লিখিত ইউনিট পরীক্ষায় কোডটি পাস করেছে তা নিশ্চিত করে তোলা!"
ভাগানড্রয়েড

34

এটি সহজ: আপনি যদি প্রোগ্রামটি একবার চালানোর পরে বাতিল করে দেন তবে আপনার ইউনিট টেস্টিংয়ের দরকার নেই।

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

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


22
প্রোগ্রামাররা ভবিষ্যতে পূর্বাভাসের তাদের নিজস্ব দক্ষতা বিচার এ কুখ্যাতিপূর্ণভাবে খারাপ
superM

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

@ জালেন এই উত্তরটি কি সহজভাবে বোঝা যায় না যে এই অনুধাবন শুরু হওয়ার সাথে সাথেই ফিরে যেতে হবে এবং ইউনিট পরীক্ষা যুক্ত করা উচিত?
কর্নেল ম্যাসন

@ কর্নেলম্যাসন আপনি একেবারে ঠিক বলেছেন, আশা করুন যে পরিচালকদের বোঝানো প্রায়শই কঠিন যে "এটি এখনও শেষ হয়নি" কারণ পরীক্ষাগুলি অনুপস্থিত :-)
জালান

@ জালেন: খুব সত্য!
কর্নেল ম্যাসন

22

কিছু সময় আগে আমি একটি দুর্দান্ত পোস্ট পেয়েছি: ইউনিট টেস্টিং কেন বিকাশের গতি বাড়ায় । এটি আপনাকে প্রশ্নের উত্তর দিতে সহায়তা করতে পারে।

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

আমি বিশ্বাস আছে".

এন্টারপ্রাইজ প্রসঙ্গে ইউনিট টেস্টগুলি বিকাশের গতি বাড়ানোর জন্য এটি সম্ভবত সবচেয়ে গুরুত্বপূর্ণ কারণ।

আমি বিশ্বাস করতে পারি যে সমস্ত পরীক্ষা পাস হলে এখনও সবকিছু কাজ করে। যদি পরীক্ষাগুলি ব্যর্থ হয় তবে তারা সমস্যাটি ঠিক কোথায় রাখবে তা নির্দেশ করবে ...

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

মাইকেল ফেয়ারস তার একটি বইতে কোড পরিবর্তনের সাথে কাজ করার দুটি উপায় চালু করেছিলেন:

  • সম্পাদনা করুন এবং প্রার্থনা করুন,
  • কভার এবং সংশোধন।

কোড বেসটি কত বড় তা বিবেচ্য নয়।


18

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

যদি আমি সাধারণত এক ধরণের ভুল না করি (যেমন কনস্ট্রাক্টারে ভুল ভেরিয়েবল সেট করা) তবে আমি এটির জন্য পরীক্ষা করি না।


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

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

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

না, এটি এখনও অবিশ্বাস্যভাবে সংক্ষিপ্ত দৃষ্টিশক্তি। ভবিষ্যতে কে কোডে কাজ করবে তা আপনি জানতে পারবেন না। এটি জুনিয়াল বিকাশকারীদের ক্ষতিগ্রস্থ করার মতো মানসিকতা।
xaxxon

5

সময় সাশ্রয় এবং উন্নতির জন্য ইউনিট পরীক্ষাগুলি প্রয়োগ করা হয়:

  • বাগ ট্র্যাকিং
  • রিফ্যাক্টরিং এবং / অথবা পুনরায় লেখার কোড
  • ইন্টিগ্রেশন টেস্টিং
  • রিগ্রেশন টেস্টিং, ইত্যাদি

প্রোগ্রামের অপেক্ষাকৃত জটিল অংশগুলির জন্য ইউনিট পরীক্ষা লিখতে হবে is

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


সাধারণত একটি ভাল উত্তর, তাই +1। যাইহোক, আমি মনে করি আপনার চূড়ান্ত পয়েন্টটি এই সত্যটি মিস করেছে যে আপনি এখনও নিজের ইউনিট পরীক্ষার ম্যানুয়ালি পরীক্ষা করতে চাইবেন / প্রয়োজন হবে!
ভাগানড্রয়েড

@ বাউকেটা, সম্ভবত আমি পরিষ্কার বলে মনে করি নি, তবে আমি বলতে চাইনি যে ইউনিট পরীক্ষাগুলি ম্যানুয়াল পরীক্ষার পুরোপুরি প্রতিস্থাপন করে
সুপারম

4

"আমি কি এই ইউনিট পরীক্ষা করি" নিম্নলিখিত প্রশ্নের উত্তর দিয়ে সাধারণত উত্তর দেওয়া যেতে পারে: "এই ফাংশনটি সঠিকভাবে কাজ করা গুরুত্বপূর্ণ এবং এটি কখন কাজ করা বন্ধ করে দেয় তা আমার পক্ষে জানা গুরুত্বপূর্ণ?"

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


4

আপনি যদি এটি পরীক্ষা না করে কোড লেখেন না, আপনি সর্বদা পরীক্ষার জন্য ব্যয় করতে যাচ্ছেন।

ইউনিট পরীক্ষা করা এবং না থাকার মধ্যে পার্থক্য হ'ল টেস্টের ব্যয়ের হাতের তুলনায় পরীক্ষা লেখার ব্যয় এবং এটি চালনার ব্যয়ের মধ্যে পার্থক্য।

যদি ইউনিট পরীক্ষা লেখার জন্য ব্যয়টি 2 মিনিট হয় এবং ইউনিট পরীক্ষা চালানোর জন্য ব্যবহারিকভাবে 0 খরচ হয় তবে কোডটি ম্যানুয়ালি পরীক্ষার জন্য 1 মিনিট হয়, আপনি যখন পরীক্ষাটি দুটিবার চালিয়েছেন তখনও আপনি ব্রেক হয়ে যান।


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

সম্প্রতি আমি টেস্ট চালিত বিকাশ ব্যবহার করতে উত্সাহিত করেছি এবং আমি এটি সম্পূর্ণ প্রকাশ পেয়েছি। আমি এখন দৃ firm়ভাবে নিশ্চিত হয়েছি যে ইউনিট-পরীক্ষা না লেখার মতো সময় আমার নেই

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

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


টিএল; ডিআর সংস্করণ:

পরীক্ষা লেখার ব্যয় যখন একটি পরীক্ষা লিখুন, ততবার এটি চালানোর ব্যয় আপনার নিজের যতবার প্রয়োজন তা নিজেই এটির পরীক্ষার ব্যয়ের চেয়ে কম হতে পারে।

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


3

আপনি যখনই পর্যবেক্ষণগুলি পর্যবেক্ষণ করবেন ততক্ষণ পরীক্ষা করুন বা আপনার সম্পাদনা এবং লক্ষ্য না করার কারণে কিছু ঘটবে fear

এই ভয়টি কীন্ডল, এটি পর্যাপ্ত আকারে বাড়তে দিন: আপনি যত তাড়াতাড়ি পরীক্ষা করেন তত ভাল।

অনুগ্রহ করে নোট করুন: প্রকল্পে আপনার ভূমিকার উপর নির্ভর করে ইউনিট টেস্টগুলি কেবলমাত্র আপনি লিখতে চান এমন পরীক্ষাগুলি নাও হতে পারে।

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


1
আমি আপনাকে দেখছি তবে স্টার্টআপ প্রোগ্রামারদের প্রাথমিক শুরুর পয়েন্টটি পরীক্ষা করে নিচ্ছি না। এবং "সাধারণভাবে টেস্টিং" দ্বারা আপনি কী বোঝাতে চেয়েছেন সে সম্পর্কেও আপনি আরও ব্যাখ্যা করতে পারেন। ধন্যবাদ।
লামিন সান্নেহ

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

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

1

আমি বিশ্বাস করি যে এটি প্রকল্পের আকার নয় তবে প্রজেক্টের ধরণের যা এটি সিদ্ধান্ত নেয় যে এটি পরীক্ষা করা উচিত কিনা।

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

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


0

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


-1

কোনও প্রকল্পকে ক্লাস বা কার্যকারিতার সীমাতে বাঁধাই এবং তারপরে এটি ইউনিট পরীক্ষার জন্য উপযুক্ত কিনা তা বিচার করা ভুল হতে পারে। ইউনিটটিতে একটি অ্যাপ্লিকেশন পরীক্ষা করার বিভিন্ন সুবিধা রয়েছে তবে আপনাকে যখন অ্যাপ্লিকেশন বজায় রাখতে হয় বা বিতরণ পরিবেশে কাজ করতে হয় তখন বাস্তব সৌন্দর্য শুরু হয়। সুতরাং পছন্দ এখানে আসে। এমনকি আপনার কোডে সামান্য পরিবর্তন বিপর্যয়ের কারণ হতে পারে।
আমি কেবল 'ইউনিট পরীক্ষার' পরামর্শ দিই না তবে আপনার কোডের কভারেজটি পরীক্ষা করার জন্যও সুপারিশ করব, আপনার সর্বাধিক কোডটি ইউনিট টেস্টের আওতাভুক্ত রয়েছে তা নিশ্চিত করে। কোড কভারেজের জন্য থ্রোসোল্ড 95% এর চেয়ে কম হবে না এবং লক্ষ্যটি অবশ্যই 100% এর কাছাকাছি হতে হবে । আপনার কোড কভারেজটি ট্র্যাক করতে এবং একটি প্রতিবেদন তৈরি করতে আপনি সরঞ্জামগুলির জন্য যেতে পারেন।
ভিজ্যুয়াল স্টুডিও কভারেজ ডেটা সরবরাহ করে -http://msdn.microsoft.com/en-us/library/ms182496(v=vs.80).aspx
এছাড়াও আপনি এনসিওভার বা ডটকভার ব্যবহার করতে পারেন।

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