শেষ-শেষের পরীক্ষা বনাম ইউনিট পরীক্ষাগুলি, পরীক্ষাগুলি ডিকোপল করা উচিত?


23

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

আমরা অন্তর্নিহিত যুক্তি পরীক্ষা করার জন্যও এটি ব্যবহার করি।

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

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


6
was told by a co-worker that the reason for this is that we can rip out and change the underlying implementation at any point as long as the end-to-end tests pass.- ইউনিট পরীক্ষার ক্ষেত্রেও এটি সত্য। আমার কাছে মনে হচ্ছে শেষ-শেষের পরীক্ষাগুলি ইউনিট পরীক্ষাগুলি না লেখার অজুহাত হিসাবে ব্যবহৃত হচ্ছে।
রবার্ট হার্ভে

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

2
@ ডায়েটবুদ্ধা, আমি মনে করি সাধারণ ধারণাটি ইউনিট পরীক্ষার ক্ষেত্রে সত্য, তবে একটি ছোট (ইউনিট) সুযোগে।
স্যাম

উত্তর:


38

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

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


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

14
আমি ইউনিট পরীক্ষাগুলি বেশিরভাগ ক্ষেত্রে মূল্যবান বলে মনে করি কারণ তারা সমস্যাগুলি দ্রুতই স্থানীয়করণ করে। শেষ থেকে শেষ মূল্যবান কারণ তারা আপনাকে আত্মবিশ্বাস দেয় যে সবকিছু এক সাথে কাজ করে।
জেসন সোয়েট

20

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


2
কথার উপর একটি দ্রুত নোট; সঠিক বিজ্ঞান না হলেও, অনেকেই বলেবেন যে শেষ থেকে শেষের পরীক্ষা এবং ইন্টিগ্রেশন টেস্টগুলি আলাদা জিনিস। দেখুন stackoverflow.com/questions/4904096/...
sbrattla

6

কোডিং এবং প্রকল্পগুলিতে কাজ করার আরও কয়েক বছর পরে আমি আমার নিজের প্রশ্নের উত্তর সরবরাহ করব।

হ্যাঁ, আপনি ইউনিট পরীক্ষা লিখতে হবে। শেষ থেকে শেষের পরীক্ষাগুলি লিখতে এবং ভঙ্গুর করে তোলে বিশেষত যদি তারা ইউআই উপাদানগুলির উপর নির্ভর করে।

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

পরীক্ষার শেষের শেষে আপনি যা করবেন:

  1. ইউআরএল পেতে
  2. বৈধ ডেটা সহ ফর্মটি পূরণ করুন
  3. ইউআরএল ফর্ম পোস্ট করুন
  4. বৈধ ফর্মের ফলে ডাটাবেস আপডেট হয়েছে বা কিছু ক্রিয়াকলাপ কার্যকর হয়েছে তা নিশ্চিত হয়ে দেখুন

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

আসুন ইউনিট পরীক্ষা দিয়ে এটি আবার চেষ্টা করুন:

  1. জিইটি পদ্ধতিটি পরীক্ষা করুন
  2. ভুয়া / উপহাসের ফর্মের সাথে ভিউ পোস্টের পদ্ধতিটি পরীক্ষা করুন
  3. বৈধ ডেটা সহ ফর্মটি পরীক্ষা করুন
  4. অবৈধ ডেটা সহ ফর্মটি পরীক্ষা করুন
  5. ফর্ম এর পার্শ্ব প্রতিক্রিয়া পরীক্ষা করুন

ইউনিট পরীক্ষাগুলি ব্যবহার করে, আপনি কোডের ছোট ছোট টুকরা পরীক্ষা করছেন এবং পরীক্ষাগুলি নির্দিষ্ট এবং লিখতে সহজ easier আপনি যখন এটি টিডিডি (টেস্ট চালিত বিকাশ) এর সাথে সংযুক্ত করেন আপনি উচ্চ মানের কোড পাবেন quality

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


অন্য ডেটা পয়েন্ট, গুগল টেস্টিং ব্লগ আরও শেষের শেষ পরীক্ষাগুলিকে না বলার জন্য বলেছে: googletesting.blogspot.ca/2015/04/…
রুডলফ ওলা

5

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

তবে যেমন বলা হয়েছে, আপনার ইউনিট টেস্টিংও করা উচিত, যেহেতু ইন্টিগ্রেশন টেস্টিংয়ে প্রান্তের ঘটনাগুলি ধরা আরও জটিল।


1

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

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

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


আমি যা উদ্বিগ্ন তা হ'ল আমরা স্বীকৃতি পরীক্ষার দিকে ঝুঁকছি যা ছোট ইউনিটের পরিবর্তে বৃহত শ্রেণি বা পদ্ধতিতে পরিচালিত হবে।
রুডল্ফ ওলা

@ মাউস: আপনি ইউনিট পরীক্ষা লিখছেন না বলেই ভাল কোড না লেখার কোনও কারণ নেই। তবে, আপনার যদি প্রোগ্রামার থাকে যারা অনভিজ্ঞ বা কেবল খারাপ অভ্যাস করেন তবে সুবিধাগুলি ব্যয়কে ছাড়িয়ে যেতে পারে। উভয় ক্ষেত্রেই আপনার বিশ্লেষণ করা উচিত এবং এটিকে একটি সাধারণ সমীকরণে কমাতে হবে। For Any Practice: Practice iff Benefit > Cost
ডায়েটবুদ্ধ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.