ফাংশনাল টেস্ট ওভার ইউনিট টেস্টের ওভার ইউনিট টেস্টের যথাযথ সুবিধাগুলি কী


9

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

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


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

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

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

উত্তর:


8
  • সম্পদ

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

  • বিশ্বাসযোগ্যতা

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

  • অতিরিক্ত রক্ষণাবেক্ষণ

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

  • concurrency

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

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


4

আমার প্রশ্নগুলি হল, পিছনের দিকে ধাক্কা দেওয়ার জন্য আমি কীভাবে ব্যবহার করতে পারি সঠিক ইউনিট টেস্টিংয়ের সত্যিকারের বাস্তব বিশ্বের স্পষ্টত বেনিফিটগুলি কী?

ভাল ইউনিট পরীক্ষাগুলি (প্রতি ক্লিন কোড এবং অন্য কোথাও):

  • দ্রুত
  • স্বাধীন
  • repeatable
  • স্ব-যাচাই করা হচ্ছে
  • সময়োপযোগী

সত্য ইউনিট পরীক্ষা না করা প্রথম তিনটি (এবং সাধারণত সর্বশেষটি) লঙ্ঘন করে। এটি কিছু বেশ গুরুত্বপূর্ণ উল্লেখযোগ্য সমস্যার দিকে পরিচালিত করে:

  1. আপনার পরীক্ষা ধীর। ধীর পরীক্ষাগুলি খুব কম সময়েই চালিত হয়। যে টেস্টগুলি চালিত হয় না সেগুলি প্রায় অকেজো।
  2. আপনার পরীক্ষা করা কোডটির সাথে সম্পর্কিত না থাকার কারণে আপনার পরীক্ষাগুলি ব্যর্থ হতে পারে। পরীক্ষাগুলি কেন ব্যর্থ হয়েছে, সময় নষ্ট করে এবং লোককে কোডের পরিবর্তে পরিবেশকে দোষারোপ করার জন্য নেতৃত্বদান করা এটি আরও শক্ত করে তোলে।
  3. ডাটাবেস পরিবর্তন হওয়ার সাথে সাথে আপনার ফলাফলের পরিবর্তন ঘটে। পরীক্ষাগুলির জন্য পরিচিত সুসংগত, বজায় রাখা অবস্থায় কিছু ডাটাবেস পাওয়া বিরক্তিকর, বিরক্তিকর এবং ত্রুটি-প্রবণ।

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


2

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

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

আমার অনুমান যে আপনি একটি শক্ত ব্যবসা ক্ষেত্রে আপনার বসকে উপস্থাপন করতে পারবেন না কারণ একটি নেই because


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

1

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

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


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

1

ভাল ইউনিট পরীক্ষা স্থানীয়করণ সরবরাহ করে। কার্যকরী পরীক্ষাগুলি আপনাকে "অ্যাড ব্যবহারকারীর ফাংশনটি ভাঙ্গা" বলতে পারে, তবে একটি ভাল ইউনিট পরীক্ষা আপনাকে বলবে যে এটি ভেঙে গেছে কারণ ডেটাবেজে থাকা USER.LAST_NAME ক্ষেত্রটি নন-নਾਲ হতে পারে। জটিল পরীক্ষার পরিবেশের পরিবর্তে (যা কিছু পরীক্ষার জন্য পুনরায় আরম্ভ বা শুদ্ধ করার প্রয়োজন হতে পারে) পরিবর্তে সরাসরি ছোট ছোট পরিবর্তনগুলি পরীক্ষা করাও সম্ভব।

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