ইউনিট পরীক্ষার মান কীভাবে ব্যাখ্যা করবেন


30

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

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

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

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


1
এটি যখন আমি "বিশেষজ্ঞ ডাটাবেস লোক" জিজ্ঞাসা করেছিলাম তখন কেন ক্রেডিট কার্ডের তথ্য এ। অপরিশোধিত এবং বি। কেন ফোন নম্বর ক্ষেত্রটি নব্যচর্চর (ম্যাক্স) এবং সি। কেন কোনও টেবিলের মধ্যে কোনও সম্পর্ক ছিল না। তিনি ঠিক এটি পেলেন না।
মাফিন ম্যান

1
(এটি একটি বিদ্রূপাত্মক উত্তর, এটি একটি রসিকতা ) -> (ক) আপনার ডাটাবেস সার্ভারে কিছুটা ব্রেক হলে আপনার আরও বড় সমস্যা রয়েছে। (খ) ডেটা স্টোরেজ সস্তা, এবং যদি কেউ একটি ক্ষেত্রের মধ্যে মেটা-ডেটা সঞ্চয় করতে চায় what (সি) নোএসকিউএল বেবি;) ( আমাকে আবারও পুনরাবৃত্তি করুক আমি ঠাট্টা করছি )
ডার্ক নাইট

আর্ট অফ ইউনিট টেস্টিংয়ে এটির একটি পুরো অধ্যায় রয়েছে ।
স্টুপারউসার

6
@ ওয়াইন, প্রতিবার আমি আপনার একটি প্রশ্ন পড়ে আমি নিশ্চিত যে আপনার একটি নতুন চাকরি খুঁজে পাওয়া দরকার। এগুলি সফ্টওয়্যার বিকাশের একটি অবিচ্ছিন্ন পুরানো প্রতীক এবং আপনি নন। যদি কোনও উইন্ডো আপনার জন্য খোলে তবে তার জন্য ঝাঁপ দাও এবং পিছন ফিরে তাকাবে না।
maple_shaft

2
@ ওয়াইনেম, প্রস্থান করুন। সিরিয়াসলি।
একে_ফেব্রুয়ারি

উত্তর:


18

আমি আমার সহকর্মীদের কাছে ইউনিট পরীক্ষার (এবং সাধারণভাবে টেস্টিং) ধারণাটি প্রবর্তন করতে চাই

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

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

এর পরে, আমি ইউনিট পরীক্ষার দীর্ঘমেয়াদী সুবিধাগুলির মত ব্যাখ্যা শুরু করার মতো ভাল অবস্থানে আছি, যেমন

  • এটি প্রমাণ করে যে কোডটি যে কোনও সময় - যে কোনও জায়গায়, তাত্ক্ষণিকভাবে এবং স্বয়ংক্রিয়ভাবে কার্যকর হয় যা ঘুরে আসে
  • রিফ্যাক্টরকে আত্মবিশ্বাস দেয়, ফলস্বরূপ নকশা এবং উন্নত রক্ষণাবেক্ষণের ফলস্বরূপ,
  • এবং যদি কিছু কিছু ভেঙে যায় তবে ইউনিট পরীক্ষাগুলি আপনাকে প্রায় (প্রায়) তাত্ক্ষণিক প্রতিক্রিয়া জানায়, যদি কোনও পৃথক QA বিভাগ দ্বারা বাগটি ধরা পড়ে তবে কয়েক দিন 'বা সপ্তাহের' বিলম্বের বিপরীতে। যা সাধারণত আপনার স্বল্পমেয়াদী স্মৃতি থেকে দীর্ঘমেয়াদী কোডটিতে ঘন্টা / দিনের জন্য ডিবাগিংয়ের পরিবর্তে সেকেন্ডের মধ্যে বাগটি ঠিক করতে সক্ষম করে।

এই সম্পর্কিত থ্রেডটিও দেখুন: স্বয়ংক্রিয় ইউনিট পরীক্ষা, সংহতকরণ পরীক্ষা বা গ্রহণযোগ্যতা পরীক্ষা

এবং এসও এর পূর্বের একটি: ইউনিট টেস্টিং কী?


4
ব্যবহারিক দিকের জন্য +1। আমরা আমাদের 50+ দেব এ এটি করেছি। কেনাকাটা এবং এটি ধরা হয়। প্রতিবার আমরা আরও একটি দেব পেতে। পরীক্ষাগুলি লিখতে, তারা নাকাল হয়।
বীয়ার

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

আপনি কি প্রথমে পরীক্ষাগুলি পরীক্ষা করে দেখেছেন বা কেবল নিজের জন্য রেখেছেন? আমি কল্পনা করতে পারি যে আমি যদি আমার বসের অনুমোদন ছাড়াই পরীক্ষার ফাইলগুলিতে চেক শুরু করি তবে কোনও পর্যালোচক রোমাঞ্চিত হবে না
ফ্রয়েড আকসেলসেন

12

ভয় ছাড়াই পুনরায় ফ্যাক্টর

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

  • "আমি এই কোডটি স্পর্শ করতে চাই না কারণ আমি ভয় করি যে আমি এটিটি ভেঙে দেব"
  • "আমি এই কোডটি প্রকাশ করতে নতুন কার্যকারিতা লিখতে চাই না কারণ এটি কীভাবে কাজ করে তা আমি জানি না"
  • "গোপনে, আমি সেই কোডটি নিয়ে ভয় পাই"

আমি আরো অনেক কিছুতে harp পারে, কিন্তু এই ভাল যেমন স্থল আচ্ছাদিত করা হয় TDD- এ তে আঙ্কেল বব এবং মার্টিন জালিয়া TDD- এ তে

নির্ভরতা

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

বব: "ওহ সি% ^ পি! কর্তারা আমাদের সবাইকে এমএস এসকিউএল সার্ভার ২০০৮ ব্যবহার করতে বাধ্য করেছিলেন" জেন: "এটা ঠিক আছে, ক্ষয়ক্ষতি হ্রাস পেয়েছে কারণ আমরা আমাদের ডেটা সোর্স এবং আমাদের ডিএও ক্লাস ডিআই করি, আমি অত্যন্ত আনন্দিত যে টিডিডি উত্সাহিত করেছিল আমাদের সেই পথে নামিয়ে দিন "


4

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

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


4

অংকটি কর

  • t mt = আপনি কল্পিতভাবে প্রভাবিত করতে পারে এমন সমস্ত কিছুই ম্যানুয়ালি পরীক্ষা করার জন্য প্রয়োজনীয় সময়
  • t wt = পরীক্ষাগুলি লেখার জন্য প্রয়োজনীয় সময়
  • k = নতুন কোড প্রকাশের আগে আপনাকে সম্ভবত সমস্ত কিছুর পরীক্ষা করতে হবে

    যদি (t wt <t mt ) বা (t wt <(k * t mt )) হয় তবে এটি কোনও মস্তিষ্কের নয়: পরীক্ষাগুলি লিখলে বিকাশের গতি বাড়বে।

অন্যথায় অনুপাতটি দেখুন (t wt / (k * t mt ))। এটি যদি খুব বেশি সংখ্যক হয় তবে অন্য সুযোগের জন্য অপেক্ষা করুন; অন্যথায় রিগ্রেশন-টেস্টিং সুবিধাগুলি দিয়ে ন্যায়সঙ্গত করুন।

দ্রষ্টব্য: আমি এই মুহুর্তে কেবলমাত্র পরীক্ষামূলক বৈশিষ্ট্যগুলির বিষয়ে পরামর্শ দিচ্ছি , ইউনিটগুলি নয় - ন্যায়সঙ্গত করা এবং বোঝা অনেক সহজ, এবং রিফ্যাক্টরিংয়ের সময় নিখুঁত ইউনিট পরীক্ষার চেয়ে উচ্চতর মান সহ যুক্তিযুক্ত কম কাজ work

নোট 2: সময়গুলি পরীক্ষা চালাতে সময় লাগে না কারণ তারা স্বয়ংক্রিয়'re পরীক্ষাগুলি চলাকালীন আপনি অন্য কিছু উত্পাদনশীল করতে পারেন, যদি না পরীক্ষাগুলি চালাতে এত বেশি সময় না নেয় যে তারা আপনাকে সময়সীমা মিস করতে বাধ্য করে। যা বিরল।


আমি আপনাকে একটি +1 দিচ্ছি, তবে সেই গণিতটি ভীতিকর দেখাচ্ছে!
ওয়েইন মোলিনা

@Wayne এটা শুধু সাবস্ক্রিপ্টগুলোর, তারা হয় ভয় দেখিয়ে। প্রোগ্রামিং কিন্তু সিসিদের জন্য নয়! ;-)
স্টিভেন এ। লো

1

এক পরামর্শ যদি আপনি একটি Microsoft দোকান আছেন: যে ইউনিট টেস্টিং বা একটি সেরা অনুশীলন যেমন আলগা couping (আমি নিশ্চিত সেখানে একাধিক দৃষ্টান্ত হয় বিশেষ পরামর্শ দেওয়া হচ্ছে দুটিই MSDN কিছু ডকুমেন্টেশন এটি এই এ) এবং বিন্দু যদি দ্বন্দ্ব নেই।

এটি জিনিসগুলি করার মতো কৌতুকপূর্ণ শব্দের মতো শোনাতে পারে তবে আমি খুঁজে পেয়েছি যে 'সেরা অনুশীলন' শব্দটি ব্যবহার করা আপনাকে বিশেষত পরিচালনার ক্ষেত্রে আরও দীর্ঘ পথ অবলম্বন করবে।


1

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

এখানে মূল শব্দটি বিপ্লব নয়, বিবর্তন not

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