ইউনিট পরীক্ষার সময়সীমা ব্যবহার করে কোনও পদ্ধতির কার্যকারিতা পরিমাপ করা কি ভাল ধারণা?


14

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

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

এটি করার জন্য, এটি কি একটি ভাল ধারণা:

  • একই ক্রিয়াকলাপটি চালানোর জন্য সময় ব্যয় করার জন্য ইউনিট পরীক্ষাগুলি ব্যবহার করতে² n বার,

  • সি # তে বৈশিষ্ট্যটির মাধ্যমে প্রতি পরীক্ষার সময়সীমা ব্যবহার করতে [TestMethod, Timeout(200)]?

আমি এই পদ্ধতির সাথে বেশ কয়েকটি সমস্যা আশা করি:

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

  • ভিজ্যুয়াল স্টুডিওতে ইউনিট পরীক্ষার সময়সীমা কি সেই পরিমাপের প্রত্যাশা করা সত্যিই পরিমাপ করে, সেই পরীক্ষাগুলির জন্য ইনিশিয়েশন এবং ক্লিনআপ অস্তিত্বহীন বা ফলাফলগুলিকে প্রভাবিত করতে খুব কম হয়?

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

  • টেস্ট চালিত বিকাশ (টিডিডি) এই পরীক্ষাগুলির পক্ষে অসম্ভব impossible কোডটি প্রয়োগ করা শুরু করার আগে এটি কীভাবে প্রথম স্থানে ব্যর্থ হবে?

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

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

আমি কি ভূল? অন্যান্য সমস্যা আছে যা এটির জন্য ইউনিট পরীক্ষাটি ব্যবহার করা একেবারেই অগ্রহণযোগ্য করে তোলে?

যদি আমি ভুল হয়ে যাই তবে উত্স কোডটি উত্স নিয়ন্ত্রণে পৌঁছানোর আগে এবং QA বিভাগ দ্বারা যাচাই করার আগে উত্স কোডের পরিবর্তনটি মারাত্মকভাবে প্রভাবিত করে এমন বিকাশকারীকে সতর্ক করার সঠিক উপায় কী?


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

Action ক্রিয়া দ্বারা, আমি কোডের পরিবর্তে একটি সংক্ষিপ্ত অংশ বলতে চাই যা চালাতে কয়েক মিলিসেকেন্ড ব্যয় করে।

উত্তর:


3

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

আপনি সঠিকভাবে উল্লেখ করেছেন যে এটি যাচাইয়ের বিষয়টি অস্বীকার করবে না। আমরা আমাদের পরীক্ষাটি অ-কার্যকরী প্রয়োজনের পরীক্ষা বলে ধরে নিই না। পরিবর্তে, আমরা এটিকে নিছক সম্ভাব্য-সমস্যা-সূচক হিসাবে বিবেচনা করি।

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

বলা হচ্ছে, এখানে আপনার নিজ নিজ বিষয়ে কিছু বিষয় রয়েছে:

  • ধারণাগতভাবে: এটি সত্য, ইউনিট পরীক্ষার বিষয়ে এটি এটি নয়। তবে যতক্ষণ না সবাই সচেতন, যে পরীক্ষায় QA করা উচিত তা যাচাই করার কথা নয়, এটি ঠিক আছে।

  • ভিজ্যুয়াল স্টুডিও: আমরা ভিএস থেকে ইউনিট পরীক্ষার কাঠামো ব্যবহার করি না বলে সে সম্পর্কে কিছুই বলতে পারে না

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

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

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


3

আমি আপনার চিন্তার সাথে বেশিরভাগ ইনলাইন আছি। স্রেফ আমার যুক্তিটি স্বাধীন প্রবাহের সাথে রেখেছি।

1. এটা ভালো করার আগে কাজ / দ্রুততর করুন
আগে কোড কোন কর্মক্ষমতা পরিমাপ (একা নিশ্চয়তা দিন) এটি প্রথম তৈরি করা উচিত প্রদান করে সঠিক অর্থাত এটা বৈশিষ্ট্যগুলি কাজ আছে। কার্যকরীভাবে ভুল এমন কোডটি অনুকূল করা কেবল সময়ের অপচয় নয়, তবে বিকাশে বাধা সৃষ্টি করে।

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

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

আমি ভিজ্যুয়াল স্টুডিওর কার্যকারিতা সম্পর্কে অবগত নই, তবে সাধারণত আপনার বিস্তৃত প্রোফাইলিং সরঞ্জাম প্রয়োজন need


2

আমি কিছুক্ষণ আগে একই কাজটি করেছি এবং চূড়ান্ত সমাধানটি ইউনিট-টেস্টিং এবং সম্পূর্ণ-বিকাশযুক্ত স্বয়ংক্রিয় পারফরম্যান্স পরীক্ষার মধ্যে মাঝখানে ছিল।

কোনও নির্দিষ্ট ক্রমে কিছু বিবেচনা, যা কার্যকর হতে পারে:

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

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

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


0

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

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