কোড কভারেজ বিশ্লেষণের জন্য আমাদের কি কোড বাদ দেওয়া উচিত?


15

আমি বেশ কয়েকটি অ্যাপ্লিকেশন, মূলত উত্তরাধিকারের উপর কাজ করছি। বর্তমানে, তাদের কোড কভারেজটি বেশ কম: সাধারণত 10 থেকে 50% এর মধ্যে থাকে।

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

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

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

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

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

তদতিরিক্ত, আমরা কোড কভারেজ পরিমাপে ঠিক কী বিবেচনা করা হয় তা জানতে সক্ষম হব না। উদাহরণস্বরূপ, যদি আমার কাছে 40% কোড কভারেজের সাথে কোড অ্যাপ্লিকেশনটির 10,000 লাইন থাকে তবে আমি আমার কোড বেসের 40% পরীক্ষা করা (2) কেটে দিতে পারি । কিন্তু যদি আমরা ব্যতিক্রম সেট করি? কোড কভারেজটি এখন যদি 60% হয় তবে আমি ঠিক কী কেটে দিতে পারি? আমার "গুরুত্বপূর্ণ" কোড বেসের 60% পরীক্ষা করা আছে? আমি কিভাবে পারি

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

এই বিষয়ে আপনার মতামত কি? আপনি কীভাবে আপনার প্রকল্পগুলিতে করেন?

ধন্যবাদ।

(1) এই স্তরগুলি সাধারণত ইউআই / জাভা মটরশুটি ইত্যাদির সাথে সম্পর্কিত are

(২) আমি জানি এটি সত্য নয়। আসলে, এর অর্থ কেবল আমার কোড বেসের 40%


তারা একটি নির্দিষ্ট কভারেজ বিরুদ্ধে চুক্তি হয়?
জে কে।

উত্তর:


3

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

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

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


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

মানে ইউনিট পরীক্ষার জন্য নিজেই ত্রুটি পরিচালনার ক্ষেত্রে ত্রুটি, যেমন ... পরীক্ষা চালানো হচ্ছে তবে ডিস্ক পূর্ণ রয়েছে সুতরাং ইউনিট পরীক্ষাগুলি IO ব্যবহার করে প্রত্যাশা ব্যর্থ হবে।
94239

হুম। না আমি ভুল ছিলাম। এই পরীক্ষাগুলি সঠিকভাবে কার্যকর করা হয়নি। এই সমস্ত মন্তব্যগুলি পরে মুছে ফেলবে।
94239

3

ভাল প্রশ্ন. সাধারণভাবে আমি কিছু কারণে কোড-কভারেজ থেকে কোড বাদ দেই না, যেমন:

  • উত্পন্ন
  • উত্তরাধিকার (আর আপডেট হয়নি)
  • এখানে এটি আসে: নির্দিষ্ট স্তর, আমি পরীক্ষার ইচ্ছা করি না

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

কিন্তু:

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

পরিশেষে: সংখ্যাগুলি খুব বেশি গুরুত্ব সহকারে নেবেন না। 30% কভারেজ কোনও সফ্টওয়্যার রকের শক্ত প্রমাণ করতে পারে, যখন এটি এর প্রয়োজনীয় অংশ হয়।


1

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

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


1

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

আমার সীমিত জ্ঞানের সাথে আমার এই কথাটি বলা আছে:

  1. কোনও ধরণের পরীক্ষার সরঞ্জাম দ্বারা সংখ্যাকে আপনার পরীক্ষাগুলিতে বাধা না দেয়।
  2. যদি ক্লাসগুলি জটিল হয় এবং ইউনিট পরীক্ষামূলক না হয় তবে সেগুলি আরও কমপ্যাক্ট এবং পরীক্ষামূলক শ্রেণিতে পুনরায় ফ্যাক্ট করা ভাল ধারণা। এটির জন্য অনেক প্রচেষ্টা এবং উত্সর্গের প্রয়োজন হবে তবে এটি দীর্ঘমেয়াদে প্রদান করবে।
  3. ইউআই উপাদানগুলি পরীক্ষা করা শক্ত হতে পারে তবে আপনি এখনও সেই উপাদানগুলি দ্বারা সম্পাদিত ফাংশনটি পরীক্ষা করতে পারেন।
  4. আপনি যদি কোনও ওয়েব ভিত্তিক প্রকল্পটি করেন তবে ক্লায়েন্টের সাইড কোডের সমস্তটি ইউনিট পরীক্ষার জন্য আপনি QUnit ব্যবহার করতে পারেন।

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


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

0

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


0

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

আপনার বাদ দেওয়া স্তরগুলির 0% কভারেজ থাকবে এবং আপনার পরীক্ষিত অঞ্চলগুলিতে আপনার উল্লিখিত 60% কভারেজ থাকবে। আকারের তথ্যগুলি লোকেদের বুঝতে দেয় যে কতটা অচিহ্নিত বা পরীক্ষিত। আপনার যদি সম্ভবত বাদ না হওয়া স্তরগুলির জন্য পরীক্ষা তৈরি করা উচিত এবং আপনার বিদ্যমান পরীক্ষাগুলি যদি কাজ করে তবে আপনাকে বাগ তথ্যটি জানিয়ে দেবে।

সফ্টওয়্যার সংস্থাগুলির পক্ষে মেট্রিকের বিশুদ্ধতার প্রতি খুব বেশি মনোনিবেশ করা সহজ। আমরা মেট্রিক তৈরি করি না, আমরা ভাল সফটওয়্যার তৈরি করি। এমন একটি মেট্রিক যা আপনাকে সময়মতো উচ্চ-মানের সফ্টওয়্যার সরবরাহ করতে সহায়তা করে তা হল সর্বাধিক সৎ, খাঁটি মেট্রিক।

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