টেস্ট চালিত বিকাশ কীভাবে করবেন


15

আমার অ্যাপ্লিকেশন বিকাশের ক্ষেত্রে 2+ বছরের অভিজ্ঞতা রয়েছে। এই দুই বছরে আমার উন্নয়নের দিকে দৃষ্টিভঙ্গি নিম্নরূপ ছিল

  1. প্রয়োজনীয়তা বিশ্লেষণ
  2. সনাক্তকরণের মূল উপাদান / অবজেক্টস, প্রয়োজনীয় ফাংশন, আচরণ, প্রক্রিয়া এবং তাদের সীমাবদ্ধতা
  3. শ্রেণি তৈরি করুন, তাদের মধ্যে সম্পর্ক তৈরি করুন, বস্তুর আচরণ ও রাজ্যে বাধা
  4. প্রয়োজন অনুসারে আচরণগত বাধা নিয়ে ক্রিয়া তৈরি করুন process
  5. ম্যানুয়ালি পরীক্ষার আবেদন
  6. যদি প্রয়োজনীয় পরিবর্তনগুলি উপাদান / ফাংশনগুলিকে পরিবর্তন করে তবে ম্যানুয়ালি অ্যাপ্লিকেশনটি পরীক্ষা করুন

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

তবে আমার সমস্যাটি হ'ল আমি প্রথমে পরীক্ষাগুলি তৈরি করতে সক্ষম নই, বরং আমি উপাদানগুলি সনাক্ত করার জন্য এবং কেবলমাত্র উপাদানগুলি লেখার আগে কেবল তাদের জন্য পরীক্ষা লিখছি। আমার প্রশ্ন

  1. আমি কি এটা ঠিক করছি? ঠিক যদি না হয় তবে আমাকে বদলাতে হবে
  2. আপনি লিখেছেন পরীক্ষা যথেষ্ট কিনা তা চিহ্নিত করার কোনও উপায় আছে কি?
  3. খুব সাধারণ কার্যকারিতার জন্য পরীক্ষা লেখার পক্ষে কি অনুশীলন যা 1 + 1 = 2 এর সমান হতে পারে বা এটি কেবল একটি ওভারপ্লে?
  4. প্রয়োজনীয়তা পরিবর্তন হলে কার্যকারিতা পরিবর্তন করা এবং তদনুযায়ী পরীক্ষা করা কি ভাল?

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

এছাড়াও আপনি স্বয়ংক্রিয় ইউনিট / ইন্টিগ্রেশন পরীক্ষার করছেন দেখব পারে ছাড়া TDD- এ করছেন। দুটি প্রায়ই বিভ্রান্ত হয়, কিন্তু তারা একই জিনিস নয় are
আন্দ্রেস এফ

উত্তর:


19

আমি কি এটা ঠিক করছি? ঠিক যদি না হয় তবে আমাকে বদলাতে হবে

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

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

আপনি কোডটি প্রকৃতপক্ষে লিখেছেন বা পুরোপুরি ফুসকুড়ি করে দিয়েছেন তা বিবেচ্য নয়: আপনি আপনার মাথায় কোড (কঙ্কালের) লিখছেন, তারপরে সেই কোডটির জন্য পরীক্ষা লিখছেন। এটি টিডিডি নয়।

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

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

বিধিগুলি হ'ল:

  1. ঠিক একটি নতুন পরীক্ষা লিখুন, আপনি করতে পারেন এমন সবচেয়ে ছোট পরীক্ষা যা কোনও সমাধানের দিকে নির্দেশ করে
  2. এটি ব্যর্থ দেখুন; সংকলন ব্যর্থতা ব্যর্থতা হিসাবে গণনা
  3. পরীক্ষা পদ্ধতিতে আপনি করতে পারেন এমন ন্যূনতম বাস্তবায়ন কোডটি লিখে (১) পাস থেকে পরীক্ষা করুন ।
  4. সদৃশ অপসারণ অপসারণ, এবং অন্যথায় নকশা উন্নত করতে প্রয়োজন হিসাবে। এই পদক্ষেপগুলি ব্যবহার সম্পর্কে কঠোর হন:
    1. আপনি একটি নতুন পদ্ধতি চান ref রিফ্যাক্টরিং অবধি অপেক্ষা করুন, তারপরে ... এর মধ্যে একটি করে নতুন (পরীক্ষা না করা) পদ্ধতি তৈরি করুন এবং অন্য কোনও উপায়ে:
      • পছন্দসই: পরীক্ষার ক্লাসে একটি নতুন পদ্ধতি তৈরি করতে (3) হিসাবে তৈরি করা প্রয়োগের কোডে এক্সট্র্যাক্ট পদ্ধতি করুন বা
      • যদি আপনার অবশ্যই হয়: (3) হিসাবে বাস্তবায়ন কোডটি একটি বিদ্যমান বাস্তবায়ন পদ্ধতিতে সরান
    2. আপনি একটি নতুন ক্লাস চান ref রিফ্যাক্টরিং অবধি অপেক্ষা করুন, তারপরে ... একটি সরানো পদ্ধতির জন্য গন্তব্য সরবরাহ করার জন্য এবং অন্য কোনও কারণে বিনা-পরীক্ষা ক্লাস তৈরি করুন
    3. মুভ মেথড করে অন্য কোন উপায়ে পদ্ধতি প্রয়োগের সাথে ক্লাসগুলি স্থাপন করুন

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

যখন একদল লোক সিউডো-টিডিডি ব্যবহার করে টিক ট্যাক টো গেমের মতো কিছু প্রয়োগ করে, তখন তারা সাধারণত Board3 × 3 অ্যারের এসের সাথে কিছু শ্রেণির সাথে জড়িত খুব অনুরূপ ডিজাইনের সাথে শেষ হয় Integer। এবং প্রোগ্রামারদের কমপক্ষে একটি অংশ অবশ্যই এই ক্লাসটি পরীক্ষা ছাড়াই লিখেছিল কারণ তারা "জানেন যে তাদের এটি প্রয়োজন হবে" বা "এর বিরুদ্ধে তাদের পরীক্ষা লেখার জন্য কিছু প্রয়োজন" need যাইহোক, আপনি যখন সেই একই গোষ্ঠীকে টিডিডি প্রয়োগ করতে বাধ্য করেন যেমন আপনি যেমন এটি করেন তবে এগুলি প্রায়শই বিভিন্ন ধরণের ডিজাইনের বিস্তৃত বৈচিত্র্যের সাথে সমাপ্ত হয়, প্রায়শই এগুলির সাথে দূরবর্তী অনুরূপ কোনও কিছু নিযুক্ত করে না Board

আপনি লিখেছেন পরীক্ষা যথেষ্ট কিনা তা চিহ্নিত করার কোনও উপায় আছে কি?

যখন তারা ব্যবসায়ের সমস্ত প্রয়োজনীয়তা কভার করে। টেস্টগুলি সিস্টেমের প্রয়োজনীয়তার একটি এনকোডিং।

খুব সাধারণ কার্যকারিতার জন্য পরীক্ষা লেখার পক্ষে কি অনুশীলন যা 1 + 1 = 2 এর সমান হতে পারে বা এটি কেবল একটি ওভারপ্লে?

আবার, আপনার এটি পিছনের দিকে রয়েছে: আপনি কার্যকারিতার জন্য পরীক্ষা লেখেন না। আপনি পরীক্ষার জন্য কার্যকারিতা লিখুন। পরীক্ষায় উত্তীর্ণ হওয়ার কার্যকারিতা যদি তুচ্ছ বলে প্রমাণিত হয় তবে তা দুর্দান্ত! আপনি কেবল একটি সিস্টেমের প্রয়োজনীয়তা পূরণ করেছেন এবং এর জন্য কঠোর পরিশ্রমও করতে হয়নি!

প্রয়োজনীয়তা পরিবর্তন হলে কার্যকারিতা পরিবর্তন করা এবং তদনুযায়ী পরীক্ষা করা কি ভাল?

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

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


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

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

3
+1 উত্তরটি ভাল যা এটি সঠিকভাবে টিডিডি বর্ণনা করে। তবে এটি এটিও দেখায় যে কেন টিডিডি ত্রুটিযুক্ত পদ্ধতি: সাবধানতার সাথে চিন্তাভাবনা এবং সুস্পষ্ট নকশার প্রয়োজন হয়, বিশেষত যখন অ্যালগরিদমিক সমস্যার মুখোমুখি হয়। কোনও ডোমেইন জ্ঞান না থাকার ভান করে "অন্ধদের মধ্যে" টিডিডি করা (অবিচ্ছিন্নভাবে "টিডিডি করা অহেতুক অসুবিধা এবং মরে যাওয়ার দিকে চালিত করে। কুখ্যাত সুডোকু সলভার ডিফল্স দেখুন (সংক্ষিপ্ত সংস্করণ: টিডিডি ডোমেন জ্ঞানকে হারাতে পারে না)।
অ্যান্ড্রেস এফ। 14

1
@ অ্যান্ড্রেসএফ: প্রকৃতপক্ষে, আপনি যে ব্লগ পোস্টটির সাথে লিঙ্ক করেছেন তা টিডিডি করার সময় কীথের অভিজ্ঞতাগুলির প্রতিধ্বনী বলে মনে হচ্ছে যেন আপনি তা বোঝায়: টিকিট-টো-এর জন্য "সিউডো-টিডিডি" করার সময় তারা একটি Boardক্লাস তৈরি করে শুরু করে এর 3x3 অ্যারে int(বা এর মতো কিছু)। অন্যদিকে, আপনি যদি তাদের টিডিডিএআইআইএমআই করতে বাধ্য করেন তবে তারা প্রায়শই ডোমেন জ্ঞান অর্জনের জন্য একটি মিনি-ডিএসএল তৈরি করে। অবশ্যই এটি অবশ্যই উপাখ্যান। একটি পরিসংখ্যানগত এবং বৈজ্ঞানিকভাবে অধ্যয়ন ভাল লাগবে, তবে প্রায়শই এর মতো পড়াশুনার ক্ষেত্রে এটি হয় খুব ছোট বা উপায় খুব ব্যয়বহুল।
জার্গ ডব্লু মিট্টাগ

@ জার্গডাব্লু মিটাগ আমি আপনাকে ভুল বুঝতে পারলে আমাকে সংশোধন করুন, তবে আপনি কি বলছেন যে রন জেফরিস "সিউডো-টিডিডি" করছিলেন? এটি কি কোনও "সত্যিকারের স্কটসম্যান" ভ্রান্তির রূপ নয়? (আরও বৈজ্ঞানিক গবেষণার প্রয়োজনীয়তার বিষয়ে আমি আপনার সাথে একমত; আমি যে ব্লগটির সাথে লিঙ্ক করেছি সেটি টিডিডি ব্যবহারের নির্দিষ্ট উদাহরণের দর্শনীয় ব্যর্থতা সম্পর্কে একটি বর্ণা an্য উপাখ্যান Unfortunately দুর্ভাগ্যবশত, দেখে মনে হচ্ছে টিডিডি প্রচারকরা বাকিদের পক্ষে খুব জোরে আছেন আমাদের মধ্যে এই মিথোলডি এবং এর কথিত সুবিধাগুলির একটি সত্য বিশ্লেষণ আছে)।
আন্দ্রেস এফ।

5

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

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

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


3

আমি কি এটা ঠিক করছি? ঠিক যদি না হয় তবে আমাকে বদলাতে হবে

আপনি ঠিক আছে।

আপনি লিখেছেন পরীক্ষা যথেষ্ট কিনা তা চিহ্নিত করার কোনও উপায় আছে কি?

হ্যাঁ, একটি পরীক্ষা / কোড কভারেজ সরঞ্জাম ব্যবহার করুন । মার্টিন ফোলার পরীক্ষা কভারেজ সম্পর্কে কিছু ভাল পরামর্শ দেয়।

খুব সাধারণ কার্যকারিতার জন্য পরীক্ষা লেখার পক্ষে কি অনুশীলন যা 1 + 1 = 2 এর সমান হতে পারে বা এটি কেবল একটি ওভারপ্লে?

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

প্রয়োজনীয়তা পরিবর্তন হলে কার্যকারিতা পরিবর্তন করা এবং তদনুযায়ী পরীক্ষা করা কি ভাল?

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


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

3

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

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

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

আপনি লিখেছেন পরীক্ষা যথেষ্ট কিনা তা চিহ্নিত করার কোনও উপায় আছে কি?

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

খুব সাধারণ কার্যকারিতার জন্য পরীক্ষা লেখার পক্ষে কি অনুশীলন যা 1 + 1 = 2 এর সমান হতে পারে বা এটি কেবল একটি ওভারপ্লে?

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

প্রয়োজনীয়তা পরিবর্তন হলে কার্যকারিতা পরিবর্তন করা এবং তদনুযায়ী পরীক্ষা করা কি ভাল?

আবার, আপনি যখন আপনার কোডটিতে নতুন কার্যকারিতা পরিবর্তন করেন বা যুক্ত করেন, আপনি কোনও পরীক্ষা দিয়ে শুরু করেন, তা যখন নতুন পরীক্ষা যুক্ত হয় বা বিদ্যমান পরিবর্তনগুলি যখন প্রয়োজনীয়তা পরিবর্তন হয়।

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