ইউনিট পরীক্ষা দিয়ে আপনার কী পরীক্ষা করা উচিত?


122

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

সমস্যাটি হচ্ছে, আমি জানি না কী পরীক্ষা করতে হবে। আমি সাধারণ ক্ষেত্রে পরীক্ষা করা উচিত? প্রান্তের মামলা? আমি কীভাবে জানতে পারি যে কোনও ফাংশন পর্যাপ্তভাবে কভার করা হয়েছে?

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


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

9
আমি অবাক হয়েছি আপনি প্রায় 5 বছর পরে এটি সম্পর্কে কি মনে করেন? কারণ আরও বেশি বেশি আমি অনুভব করি যে আজকাল লোকেরা "ইউনিট-টেস্ট কী না" তা আরও ভালভাবে জেনে রাখা উচিত। আচরণগত চালিত বিকাশ আপনি যেমন জিজ্ঞাসা করেছেন সেগুলি থেকেই উদ্ভূত হয়েছে।
রিমিগিজাস পান্কেভিয়াস

উত্তর:


121

আমার ব্যক্তিগত দর্শন এইভাবে হয়েছে:

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

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

5
+1, যদিও আপনার কোনও যৌক্তিক এপিআই রয়েছে তা নিশ্চিত করতে আমি কোনও লাইব্রেরি / ইউটিলিটি-টাইপ ফাংশনগুলির প্রান্তের কেসগুলিও পরীক্ষা করব। যেমন নাল কেটে গেলে কী হয়? খালি ইনপুট সম্পর্কে কি? এটি আপনার নকশাটি যৌক্তিক এবং কর্নার কেস আচরণের নথিকে নিশ্চিত করতে সহায়তা করবে।
মাইকেরা

7
# 3 দেখতে খুব শক্ত উত্তর বলে মনে হচ্ছে এটি ইউনিট পরীক্ষায় কীভাবে সহায়তা করতে পারে তার বাস্তব জীবনের উদাহরণ। যদি এটি একবারে ভেঙে যায় তবে এটি আবার ভেঙে যেতে পারে।
রায়ান গ্রিফিথ

সবেমাত্র শুরু করে, আমি দেখতে পেলাম যে আমি পরিকল্পনাগুলি পরীক্ষা নিয়ে খুব সৃজনশীল নই। সুতরাং আমি তাদের উপরের # 3 হিসাবে ব্যবহার করি যা মনের শান্তি নিশ্চিত করে যে এই বাগগুলি আর কখনও সনাক্ত করা যাবে না।
ankush981

আপনার উত্তরটি এই জনপ্রিয় মাঝারি নিবন্ধে বৈশিষ্ট্যযুক্ত ছিল: হ্যাকারুনুন.com/…
বাগহান্টরক

67

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

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

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

| # |  Equivalence class    | Input        | Output       | # test cases |
+------------------------------------------------------------------------+
| 1 | Lowercase letter      | a - z        | A - Z        | 26           |
| 2 | Uppercase letter      | A - Z        | A - Z        | 26           |
| 3 | Non-alphabetic chars  | 0-9!@#,/"... | 0-9!@#,/"... | 42           |
| 4 | Non-printable chars   | ^C,^S,TAB... | ^C,^S,TAB... | 34           |

শেষ কলামে পরীক্ষাগুলির সংখ্যার রিপোর্ট করে যদি আপনি সেগুলির সবগুলি গণনা করেন। প্রযুক্তিগতভাবে, @ ফিশটোস্টারের নিয়ম 1 এর মাধ্যমে আপনি 52 টি পরীক্ষার কেস অন্তর্ভুক্ত করবেন - উপরে বর্ণিত প্রথম দুটি সারির সমস্তগুলি "সাধারণ ক্ষেত্রে" এর অধীনে পড়ে। @ ফিশটোস্টারের নিয়ম 2 উপরে 3 এবং 4 সারি থেকে কিছু বা সমস্ত যোগ করবে। তবে সমতুল্য পার্টিশনের সাথে প্রতিটি সমতুল্য শ্রেণিতে যে কোনও একটি পরীক্ষার কেস পরীক্ষা করা যথেষ্ট। আপনি যদি "a" বা "g" বা "w" বাছাই করেন আপনি একই কোড পাথটি পরীক্ষা করছেন। সুতরাং, 52+ এর পরিবর্তে আপনার কাছে মোট 4 টি পরীক্ষার মামলা রয়েছে।

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

| # | Input                | # test cases |
| 1 | a, w, z              | 3            |
| 2 | A, E, Z              | 3            |
| 3 | 0, 5, 9, !, @, *, ~  | 7            |
| 4 | nul, esc, space, del | 4            |

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


3
+1 ঠিক তেমনভাবে আমি স্বজ্ঞাতভাবে আমার পরীক্ষাগুলি লিখি। এখন আমি এটিতে একটি নাম রাখতে পারি :) এটি ভাগ করে নেওয়ার জন্য ধন্যবাদ।
guillaume31

"গুণগত উত্তরগুলির জন্য +1 কার্যকর, তবে এটি সম্ভব - এবং পছন্দসই - পরিমাণগত হতে পারে"
জিমি ব্রেক ck ম্যাককে

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

18

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

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

সুতরাং আমার পরামর্শটি হ'ল:

  • আপনি বুনিয়াদি কঙ্কালটি বিকশিত করার পরে পরীক্ষাগুলি লেখা শুরু করুন , অন্যথায় রিফ্যাক্টরিং বেদনাদায়ক হতে পারে। একজন বিকাশকারী হিসাবে যিনি অন্যের জন্য বিকাশ করেন আপনি প্রয়োজনীয়গুলি শুরুতে ঠিক কখনই পান না।

  • আপনার ইউনিট পরীক্ষাগুলি দ্রুত সম্পাদন করা যেতে পারে তা নিশ্চিত করুন। আপনার যদি ইন্টিগ্রেশন পরীক্ষা করে থাকে (শশার মতো) তবে কিছুটা বেশি সময় নিলে ঠিক আছে। তবে দীর্ঘ চলমান পরীক্ষা কোনও মজাদার নয়, বিশ্বাস করুন। (সি ++ কম জনপ্রিয় হওয়ার কারণে লোকেরা সমস্ত কারণ ভুলে যায় ...)

  • এই টিডিডি স্টাফটি টিডিডি-বিশেষজ্ঞদের ছেড়ে দিন।

  • এবং হ্যাঁ, আপনি কখনও কখনও প্রান্তের ক্ষেত্রে মনোনিবেশ করেন, কখনও কখনও সাধারণ ক্ষেত্রে, যেখানে আপনি অপ্রত্যাশিত আশা করেন তার উপর নির্ভর করে। আপনি যদি সর্বদা অপ্রত্যাশিত আশা করেন তবে আপনার কর্মপ্রবাহ এবং শৃঙ্খলা নিয়ে সত্যই পুনর্বিবেচনা করা উচিত। ;-)


2
পরীক্ষাগুলি কেন এই সফ্টওয়্যারটিকে চুল্লির বেদনাদায়ক করে তোলে সে সম্পর্কে আপনি আরও বিশদ দিতে পারেন?
মাইক পার্টরিজ

6
বড় +1। নিয়মের পরিবর্তে বাস্তবায়ন পরীক্ষা করে এমন ইউনিট পরীক্ষার দেয়াল থাকা যে কোনও পরিবর্তনকে 2-3x বেশি প্রয়োজন
TheLQ

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

1
প্রতিটি ইউনিট পরীক্ষায় একটি জিনিস পরীক্ষা করা উচিত, সুতরাং অনেকগুলি ইউনিট পরীক্ষা হয় না তবে, অনুপস্থিত পরীক্ষা হয়। যদি আপনার ইউনিট পরীক্ষাগুলি জটিল হয় তবে এটি অন্য একটি সমস্যা।
গ্রাফিলি

1
-1: আমার মনে হয় এই পোস্টটি খারাপ লেখা হয়েছে। এখানে একাধিক বিষয় উল্লেখ করা আছে এবং সেগুলি কীভাবে সম্পর্কিত তা আমি জানি না। যদি উত্তরের বিন্দুটি "অর্থনৈতিক হতে হবে", তবে আপনার উদাহরণটি কীভাবে সম্পর্কিত? দেখে মনে হচ্ছে আপনার উদাহরণ পরিস্থিতি (যদিও বাস্তব) খারাপ ইউনিট পরীক্ষা করেছে। আমার এর থেকে কী শিখতে হবে এবং কীভাবে এটি আমাকে অর্থনৈতিক হতে সহায়তা করে তা দয়া করে ব্যাখ্যা করুন। এছাড়াও, আমি সত্যই বলছি, আপনি যখন বলবেন তখন কী বোঝায় তা কেবল জানি না Leave this TDD stuff to the TDD-experts
আলেকজান্ডার বার্ড

8

আপনি যদি প্রথম পরীক্ষা চালিত বিকাশ নিয়ে পরীক্ষা করে দেখেন তবে আপনার কভারেজটি 90% বা তারও বেশি বর্ধিত হবে, কারণ আপনি প্রথমে এর জন্য ব্যর্থ ইউনিট পরীক্ষা না লিখে কার্যকারিতা যুক্ত করবেন না।

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


আপনি কীভাবে সেই কভারেজ শতাংশ গণনা করবেন? যাইহোক আপনার কোডের 90% কভার করার অর্থ কী?
২৯ শে

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

-1। প্রশ্নের উত্তর দেয় না:The problem is, I don't know _what_ to test
আলেকজান্ডার বার্ড

6

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

টেস্টগুলি প্রথম আসে

কখনই না, পরীক্ষাগুলি লেখার আগে কখনও কোড লিখবেন না। দেখুন লাল-সবুজ-Refactor-পুনরাবৃত্তি একটি ব্যাখ্যা জন্য।

রিগ্রেশন টেস্ট লিখুন

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

লাল-সবুজ-Refactor-পুনরাবৃত্তি

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

সবুজ : সর্বাধিক সহজ এবং বোকা কোড লিখুন যা পরীক্ষায় আসলে পাস করে। স্মার্ট হওয়ার চেষ্টা করবেন না। এমনকি যদি আপনি দেখতে পান যে একটি সুস্পষ্ট প্রান্তের মামলা রয়েছে তবে পরীক্ষাটি বিবেচনায় নেয়, এটি পরিচালনা করার জন্য কোডটি লিখবেন না (তবে প্রান্তের কেসটি ভুলে যাবেন না: আপনার এটি পরে দরকার হবে)। ধারণাটি হ'ল কোড ইয়ো লেখার প্রতিটি টুকরো ifপ্রতিটি try: ... except: ...পরীক্ষার ক্ষেত্রে ন্যায়সঙ্গত হওয়া উচিত। কোডটি মার্জিত, দ্রুত বা অপ্টিমাইজড হতে হবে না। আপনি কেবল পরীক্ষা পাস করতে চান।

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

পুনরাবৃত্তি : আপনি প্রান্তের কেসটি মনে রেখেছেন যা পরীক্ষাটি কভার করেনি, তাই না? সুতরাং, এখন এটি তার বড় মুহূর্ত। একটি টেস্টকেস লিখুন যা সেই পরিস্থিতিটি কভার করে, এটি ব্যর্থ হয় দেখুন, কিছু কোড লিখুন, দেখুন এটি পাস, রিফ্যাক্টর।

আপনার কোড পরীক্ষা করুন

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


1
ধরে নিচ্ছি আমার ইতিমধ্যে একটি বিদ্যমান রয়েছে এবং (যতদূর আমি দেখতে পাচ্ছি) ওয়ার্কিং কোড বেস রয়েছে, আমি কী করব?
জিনাক করুন

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

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

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

3

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

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


0

স্টকের উত্তরটি হ'ল "সম্ভবত যা ভেঙে যেতে পারে তার সমস্ত কিছু পরীক্ষা করা"

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

অবশ্যই, আপনার মাইলেজ - এবং আপনার কাজের পরিবেশের অনুশীলনগুলি পৃথক হতে পারে।


ঠিক আছে. তাহলে আমার কোন মামলাগুলি পরীক্ষা করা উচিত? "সাধারণ" কেস? প্রান্তের মামলা?
জিনাক

3
চলতি নিয়ম? এক বা দুটি ডানদিকে সোনার পথের ঠিক মাঝখানে, এবং কেবল কোনও ভিতরে এবং ঠিক বাইরে।
জেফ্রি হ্যান্টিন

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