কোড কভারেজ মানের যুক্তিকে খণ্ডন করার জন্য কোনও সরঞ্জাম / পরামর্শ


11

এখন আমি জানি যে লোকেরা এই প্রশ্নটিকে সদৃশ বা বহুবার জিজ্ঞাসা করতে পারে, এমন ক্ষেত্রে আমি আমার প্রশ্নের উত্তর সহ প্রাসঙ্গিক প্রশ্নের একটি লিঙ্কের প্রশংসা করব।

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

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

(উপরের বিষয়গুলির মতো অন্য এসও প্রশ্নগুলিতে অনুরূপ ফ্যাশনে আলোচনা করা হয়েছে - /programming/695811/pitfalls-of-code-coverage )

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

আমি তাদের দৃষ্টিকোণটি বুঝতে পেরে, আমি কভারেজের জন্য আরও শক্তিশালী কেস তৈরির একটি উপায় অনুসন্ধান করছি যাতে আরও কভারেজের মানদণ্ডের যত্ন নেয় এমন আরও শক্তিশালী সরঞ্জাম / ফ্রেমওয়ার্ক চালু করে(Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)

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

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


সম্পাদনা: টিপিকাল কোড কভারেজটির দুর্বলতা সম্পর্কে আমার বোঝাপড়া সম্পর্কে যে কোনও বিভ্রান্তি হ্রাস করতে, আমি এটি উল্লেখ করতে চাই যে আমিStatement Coverage (অথবা কোডের লাইনগুলি কার্যকর করা) সরঞ্জামগুলি (প্রচুর পরিমাণে) উল্লেখ করছি না । প্রকৃতপক্ষে এখানে যা কিছু ভুল তা সম্পর্কে একটি ভাল নিবন্ধ: http://www.bullseye.com/statementCoverage.html

আমি কেবল বিবৃতি বা লাইন কভারেজের চেয়ে বেশি খুঁজছিলাম, একাধিক কভারেজের মানদণ্ড এবং স্তরগুলিতে গিয়েছিলাম।

দেখুন: http://en.wikedia.org/wiki/Code_coverage#Coverage_critedia

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


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


সম্পাদনা: এখন পর্যন্ত উত্তরগুলি থেকে আমার কাছে যা আছে:

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

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


4
কোথাও কেউ 100% কোড কভারেজ পূরণের পরামর্শ দেয় না , এটি সত্যই বোকামির কাজ।
জিমি হোফা

1
ধন্যবাদ। এবং আমি ইতিমধ্যে জানি এবং স্বীকৃতি। এবং লোকেরা সাধারণত 100% বিবৃতি (বা লাইন) কভারেজের সাথে 100% কোড কভারেজ যুক্ত করে থাকে। এছাড়াও প্রতিরোধ করতে পারেনি - জিমি, তারা আপনাকে পুরো জায়গা জুড়ে খুঁজছিল।
মিকজে

3
"তারপরে টিম দ্রুত নিম্নমানের পরীক্ষা তৈরি করে প্রতিক্রিয়া জানাবে এবং এইভাবে কোনও উল্লেখযোগ্য গুণমান যুক্ত না করে সময় নষ্ট করবে" - দুর্দান্ত দল!
পাইওটার পেরাক

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

1
@ জিমিহোফা - স্পেস ক্রিটিকাল সফ্টওয়্যারটির সাধারণত 100% কোড কভারেজ প্রয়োজন।
mouviciel

উত্তর:


9

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

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

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


পরামর্শের জন্য +1 যে লেখাগুলি পরীক্ষাগুলি প্রথমে পরীক্ষার মানের উন্নতি করে তাই কোড কভারেজের সাথে প্রথম টেস্টের সংমিশ্রণ অবশ্যই সহায়ক।
মিকজে

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

ধন্যবাদ @ অ্যাম্প্ট। টিডিডি দিয়ে প্রক্রিয়াটিকে শক্তিশালীকরণ ছাড়াও, আপনার প্রস্তাবিত কোনও কোড কভারেজ সরঞ্জাম রয়েছে যা আরও পরিচ্ছন্ন ফ্যাশনে আরও কভারেজের মানদণ্ডের যত্ন নেয় যার ফলে কমপক্ষে কিছুটা লিখিত পরীক্ষাগুলির মানকে বৈধতা দিতে সহায়তা করে?
মিকজে

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

ধন্যবাদ। আপনি যা উল্লেখ করছেন তা হ'ল Statement Coverage(বা কোডের কোডগুলি কার্যকর করা)। আমি কেবল বিবৃতি বা লাইন কভারেজের চেয়ে বেশি খুঁজছিলাম, আরও multiple coverage criteriaস্তরে ও স্তরে যাচ্ছিলাম । দেখুন: এন.ইউইকিপিডিয়া.আর.উইকি / কোড_কভারেজ # কভারেজ_ক্রিটেরিয়া এবং এন.ইউইকিপিডিয়া.রোগ / উইকি / লাইনার_কোড_সেইকেন্স_এন্ড_জম্প । ধারণাটি হ'ল কোনও সরঞ্জাম যদি আমাদের একাধিক মানদণ্ডের উপর ভিত্তি করে আমাদের কভারেজ বলতে পারে তবে তা পরীক্ষার মানের একটি যুক্তিসঙ্গত স্বয়ংক্রিয় মূল্যায়ন হয়ে যায়। আমি কোনওভাবেই বলার চেষ্টা করছি না যে লাইন কভারেজটি একটি ভাল মূল্যায়ন। আসলে এটিই আমার প্রশ্নের ভিত্তি।
মিকজে

6

প্রথমত, মানুষ কি উকিল 100% কভারেজ:

বেশিরভাগ বিকাশকারীরা পর্যাপ্ত হিসাবে "100% স্টেটমেন্ট কভারেজ" দেখুন। এটি একটি ভাল শুরু, তবে খুব কমই যথেষ্ট। "১০০% শাখা কভারেজ," বলা হচ্ছে এটি পূরণের জন্য একটি আরও ভাল কভারেজ স্ট্যান্ডার্ড আইডি ...

স্টিভ ম্যাককনেল, কোড সম্পূর্ণ , অধ্যায় 22: বিকাশকারী পরীক্ষা।

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

আমি আপনার নিজের প্রকল্পের ডেটা সংগ্রহ এবং বিশ্লেষণ করে যুক্তিটি সমাধান করার পরামর্শ দেব।

ডেটা সংগ্রহ করার জন্য, আমি ব্যক্তিগতভাবে নিম্নলিখিত সরঞ্জামগুলি ব্যবহার করি:

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

আপনার সেই স্থানে (বা অনুরূপ কিছু) হয়ে গেলে আপনি নিজের ডেটা আরও ঘনিষ্ঠভাবে দেখতে শুরু করতে পারেন:

  • দুর্বলভাবে আচ্ছাদিত প্রকল্পগুলিতে আরও কি বাগ পাওয়া যায়?
  • দুর্বলভাবে আবৃত ক্লাস / পদ্ধতিগুলিতে আরও কি বাগ পাওয়া যায়?
  • প্রভৃতি

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


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

4

এই লোকগুলির পক্ষ থেকে যুক্তিটি হ'ল - টিমটি নিম্ন মানের পরীক্ষা তৈরি করে দ্রুত প্রতিক্রিয়া জানায় এবং তাত্পর্যপূর্ণ কোনও গুণ না যুক্ত করার সময় সময় নষ্ট করে।

এটি আস্থার নয়, সরঞ্জামের বিষয়

তাদের জিজ্ঞাসা করুন কেন, যদি তারা সত্যই এই বিবৃতিটি বিশ্বাস করে তবে তারা কোনও কোড লিখতে দলকে বিশ্বাস করবে?


কারণ তারা জানেন যে কোডটির কার্যকারিতা হ'ল নীচের লাইন, সুতরাং: পরীক্ষা, দলিলপত্র, মন্তব্য, পর্যালোচনা ইত্যাদি কোনও তাত্ক্ষণিক পরিণতি ছাড়াই কোরবানি দেওয়া যেতে পারে; যদিও আমি একমত, এটি একটি খারাপ চিহ্ন।
জেফো

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

3

ঠিক আছে, সম্ভবত আমি এটিকে কিছুটা নাটকীয়ভাবে প্রক্ষেপণ করেছি, তবে আপনি বিষয়টিটি পেয়ে যান। সমস্যাটি হ'ল একজাতীয় / ধারাবাহিক ফ্যাশনে সমস্ত দল জুড়ে সাধারণভাবে প্রক্রিয়া / নীতি নির্ধারণের বিষয়ে।

আমি মনে করি যে সমস্যা। বিকাশকারীরা সামঞ্জস্যপূর্ণ বা বৈশ্বিক নীতিগুলি সম্পর্কে (এবং প্রায়শই দুর্দান্ত কারণে) পাত্তা দেয় না এবং কর্পোরেট নীতিমালা মেনে চলার পরিবর্তে তারা যা সঠিক বলে মনে করে তা করার স্বাধীনতা চায়।

কোনটি যুক্তিসঙ্গত যদি আপনি প্রমাণ না করেন যে গ্লোবাল প্রক্রিয়াগুলি এবং ব্যবস্থাগুলির মান এবং উন্নয়নের গতিতে ইতিবাচক প্রভাব রয়েছে।

সাধারণ সময়রেখা:

  1. দেব: আরে, দেখুন - আমি আমাদের ড্যাশবোর্ডে কোড কভারেজ মেট্রিক যুক্ত করেছি, দুর্দান্ত না?
  2. ম্যানেজার: অবশ্যই, আসুন আমরা সেগুলিগুলির জন্য বাধ্যতামূলক লক্ষ্য এবং সম্মতি যুক্ত করি
  3. দেব: কিছু মনে করবেন না, কোড কভারেজটি মূ .় এবং অকেজো, এটি বাদ দিন

1
+1 আমি অসম্মতিতে অনেক বার সেভাবে দেখেছি। আমি আমার কেস যদিও কথোপকথন কিছুটা এভাবে চলে যায়। দেব: আরে, দেখুন - আমি আমাদের ড্যাশবোর্ডে কোড কভারেজ মেট্রিক যুক্ত করেছি, দুর্দান্ত না? ম্যানেজার: অবশ্যই, আপনারা যে সব কিছু মানের উন্নতি করে বলে মনে করেন তা দুর্দান্ত। পরিচালকদের বসের মনিব: আমি মনে করি আমাদের টিম জুড়ে একটি প্রক্রিয়া করা দরকার। আমি মনে করি কোড ব্যয় ব্যতীত অর্থহীন যদি না আমরা ব্যয় করা মূল্য থেকে গ্যারান্টি দিতে পারি।
মিকজে

2

আমার অভিজ্ঞতায়, মেট্রিককে সার্থক করার জন্য কোড কভারেজের সাথে একত্রে কয়েকটি জিনিস রয়েছে:

কোড পর্যালোচনা

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

বাগ ট্র্যাকিং

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

প্রয়োগবাদ

অ-তুচ্ছ কোডে ভাল পরীক্ষা দিয়ে কেউ 100% এ যাচ্ছে না। আপনি যদি দলের নেতৃত্ব হিসাবে কোডের কভারেজটি লক্ষ্য করেন তবে পরিবর্তে "আমাদের N% এ যাওয়ার দরকার!" আপনি শূন্যস্থান চিহ্নিত করতে এবং লোকদের সিস্টেম গেম করার সুযোগ না দিয়ে আপনার লক্ষ্য অর্জনের জন্য "মডিউল এক্সের কভারেজ উন্নত করতে" বলুন।

পরীক্ষাগুলির ব্লক overedাকা / #

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


+1 ভাল পরামর্শ, আমি বিশেষত পরীক্ষাগুলি এবং কোড পর্যালোচনার ব্লকগুলি আচ্ছাদিত / # পছন্দ করি। যদিও আমরা ইতিমধ্যে কোড পর্যালোচনাগুলি করি, তবে পরীক্ষাগুলি আরও ঘনিষ্ঠভাবে পর্যালোচনা করার গুরুত্বকে জোর দেওয়া আপনার পক্ষে সহায়ক হবে।
মিকজে

2

এখানে আমার 2 সেন্ট।

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

কিছু উদাহরণ:

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

আমি মনে করি উপরোক্ত বিবৃতিগুলির মূল সমস্যাটি হ'ল মানুষ কম্পিউটার নয় এবং লেখার সফ্টওয়্যার একটি অ্যালগরিদম কার্যকর করার মতো নয়।

সুতরাং, উপরের বিবৃতিগুলিতে কিছু সত্য রয়েছে তবে জিনিসগুলি খুব বেশি সরল করুন, যেমন:

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

কোড কভারেজ ফিরে যাচ্ছে।

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

আমি মনে করি যে কোনও নির্দিষ্ট মডিউলের জন্য 100% কভারেজ রাখা সার্থক হলে আপনাকে কেস থেকে কেস পর্যন্ত বিচার করতে হবে।

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

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

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

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

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

এতে কোনও পরিমাপ না করে আপনি কীভাবে গ্যারান্টিযুক্ত সময় বরাদ্দ করেন

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

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


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

2

"দলটি নিম্ন মানের পরীক্ষা তৈরি করে দ্রুত প্রতিক্রিয়া জানাবে এবং এইভাবে কোনও উল্লেখযোগ্য গুণ যুক্ত না করে সময় নষ্ট করবে"

এটি একটি তাত্ত্বিক নয়, একটি আসল ঝুঁকি।

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

"এ জাতীয় কোড কভারেজ সরঞ্জাম এবং অনুশীলনগুলি / প্রক্রিয়াগুলির সাথে তাদের সংমিশ্রণের জন্য পরামর্শ"

অন্যান্য সমস্ত পরামর্শ ছাড়াও, একটি অটোমেশন কৌশল রয়েছে যা পরীক্ষার মানের মূল্যায়ন করতে পারে: মিউটেশন টেস্টিং ( http://en.wikedia.org/wiki/Mutes_testing )। জাভা কোডের জন্য, পিআইটি ( http://pitest.org/ ) কাজ করে এবং আমি প্রথম রূপান্তর পরীক্ষার সরঞ্জামটি পেরিয়ে এসেছি।

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


1

কোড কভারেজ অবশ্যই ভাল ইউনিট পরীক্ষার প্রমাণ নয়, এটি সঠিক।

তবে যতক্ষণ না তারা প্রমাণ করার কোনও উপায় প্রদান করতে পারে যে সমস্ত ইউনিট পরীক্ষা ভাল (যে কোনও সংজ্ঞার জন্য তারা আসতে পারে) তবে এটি সত্যই নিঃশব্দ ute


2
যে পয়েন্টগুলি কথা বলে না সেগুলি মোটা হয়ে থাকে । (আমি সেখানে কেবল ওয়ার্ডপ্লে পছন্দ করি - আমার বানানটি প্রায়শই সংশোধন করা হয়েছে)।

1

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

"আমরা কতটা কাছাকাছি এসেছি?"

"এই সিস্টেমের গুণমান কেমন?"

"এই মডিউলগুলি কতটা জটিল?"

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

কভারেজের ক্ষেত্রে আমি মনে করি এটি প্রায়শই কোড মানের জন্য প্রক্সি হিসাবে ব্যবহৃত হয়, একটি ক্রুডকে আলবাইট করে। এবং আসল সমস্যাটি এটি 0 এবং 100 এর মধ্যে একটি একক পূর্ণসংখ্যার জন্য অত্যন্ত জটিল একটি বিষয়কে সিদ্ধ করে দেয় যা অবশ্যই 100% কভারেজ অর্জনের জন্য একটি অন্তহীন অনুসন্ধানে সম্ভাব্য অসহায় কাজ চালাতে ব্যবহৃত হবে। বব মার্টিনের মতো লোকেরা বলবেন যে ১০০% কভারেজ হ'ল একমাত্র গুরুতর লক্ষ্য এবং আমি বুঝতে পারি কেন এটি কেন, কারণ অন্য যে কোনও কিছুই স্বেচ্ছাসেবী বলে মনে হয়।

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

ভাল অনুমানকরণে আমি যে মেট্রিকটি দরকারী পেয়েছি তা হ'ল ক্র্যাপ 4 জ । এটি এখন অচল হয়ে পড়েছে তবে আপনি নিজেরাই এটি সহজেই বন্দর / প্রয়োগ করতে পারেন। কোড জটিলতার সাথে কোড কভারেজ সম্পর্কিত সম্পর্কিত চেষ্টা করার জন্য ক্র্যাপ 4 জে আরও জটিল যে কোডটি বোঝায় (ifs, whiles, fors ইত্যাদি) উচ্চতর পরীক্ষার কভারেজ থাকতে হবে। আমার কাছে এই সহজ ধারণাটি সত্যই বেজেছে। আমি বুঝতে চাই যে আমার কোডবেসে কোথায় ঝুঁকি রয়েছে, এবং একটি সত্যিই গুরুত্বপূর্ণ ঝুঁকি হ'ল জটিলতা। সুতরাং এই সরঞ্জামটি ব্যবহার করে আমি আমার কোড বেসটি কতটা ঝুঁকিপূর্ণ তাড়াতাড়ি মূল্যায়ন করতে পারি। এটি জটিল হলে কভারেজটি আরও ভালভাবে এগিয়ে যেতে পারে। যদি তা না হয় তবে কোডের প্রতিটি লাইন coveredেকে দেওয়ার চেষ্টা করে সময় নষ্ট করার দরকার নেই।

অবশ্যই এটি একটি মেট্রিক এবং ওয়াইএমএমভি। এটি আপনার কাছে বোধগম্য হবে কিনা তা বুঝতে আপনাকে এটির সাথে সময় ব্যয় করতে হবে এবং যদি এটি আপনার দলটিকে প্রকল্পটি কোথায় রয়েছে তার যুক্তিসঙ্গতভাবে সংকোচ-সক্ষম অনুভূতি দেবে।


প্রাপ্য কভারেজ এবং ক্র্যাপ 4 জ লিঙ্কটি বাছাইয়ের জন্য সাইক্লোমেটিক জটিলতা ব্যবহারের দুর্দান্ত পরামর্শের জন্য ধন্যবাদ। আমি একটি দুর্দান্ত নিবন্ধটিও পেয়েছিলাম ক্রিবিজেজের বিস্ময়করতা এবং কোবার্টুরায় বিস্মৃত করার বিষয়ে কথা বলার জন্য - schneide.wordpress.com/2010/09/27/…
মিকজে

0

আমি বলব না যে ফিরে যাওয়া এবং বিদ্যমান কোডটি আচ্ছাদন করা সবচেয়ে ভাল এগিয়ে যাওয়ার পথ। আমি যুক্তি দিয়ে বলব যে আপনি যে কোনও নতুন কোড লিখছেন এবং অথবা আপনি যে কোনও কোড পরিবর্তন করেছেন সেটির জন্য কভারিং টেস্টগুলি লেখার অর্থ হয় sense

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

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

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