পুরো টিমটি অভ্যস্ত হয়ে যাওয়ার পরে টিডিডির আসল ওভারহেড কী?


24

কত শতাংশ সময় সাশ্রয় হয় এবং টিডিডি করায় কস্ট করা হয়।

আমি প্রকল্পের জীবনচক্র চলাকালীন এই শতাংশের ব্যয় এবং পুরষ্কারের পরিবর্তনগুলি ধরে নিয়েছি।

আমি ভাবছিলাম প্রাথমিক পর্যায়ে অনেক বেশি ব্যয় হয় তবে সামান্য পুরষ্কার সংযুক্ত থাকে attached আরও ( পুনরায় ফ্যাক্টরিংয়ের সময় ) আপনি আপনার পরীক্ষার সুবিধা পাবেন।

আমি আপনার 30-50% সময় থেকে কোথাও শুনেছি ইউনিট পরীক্ষা লিখছি। তবে এই পরীক্ষাগুলি লেখার সময় যে সময় সাশ্রয় করে তা বিবেচনায় নেই ।

এর সাথে প্রত্যেকের অভিজ্ঞতা কী?

ওয়েস

সম্পাদনা সময় ব্যয় পাশাপাশি সময় সাশ্রয় কি? বাগ ফিক্সিং এবং refactorablity?


আপনি কোড লেখার আগে পরীক্ষা লিখুন বা পরে পরীক্ষা লিখুন, আমি অনুভব করব যে আপনি কোনওভাবেই পরীক্ষা লেখার জন্য ওভারহেডটি নগণ্য।
ক্রিস

1
@ ক্রিস, যখন আপনি প্রথমে পরীক্ষাগুলি লিখেন তখন আপনি এপিআইটি সামনের দিকে চিন্তা করে পরিবর্তে সামনে ডিজাইন করেন।


3
@ থরবজর্ন: আপনার পর্যবেক্ষণের সাথে একমত হয়েছেন, যদিও টিডিডি ব্যবহার না করে কোনও এপিআই ডিজাইন করা সম্পূর্ণভাবে সম্ভব, তবে খুব কমই চিন্তা-ভাবনা।
রবার্ট হার্ভে

2
@ স্টিভেন: হ্যাঁ, টিডিডি কী তা আমি জানি। এটি আকর্ষণীয় আপনি বলেছেন API এর উপরের দিকে নকশা করুন। এটি একটি শব্দ পদ্ধতির হিসাবে আমাকে আঘাত করে। পরীক্ষাগুলির একগুচ্ছ লিখে আপনি কেবল একটি এপিআই "বর্ধন" করতে পারবেন এই ধারণায় আমার কখনই বিক্রি হয় নি।
রবার্ট হার্ভে

উত্তর:


8

আমি আপনার 30-50% সময় থেকে কোথাও শুনেছি ইউনিট পরীক্ষা লিখছি। তবে এটি সময় সাশ্রয়ের সময় বিবেচনা করে না

আমার অভিজ্ঞতা হিসাবে, এটি 50% এরও বেশি।

একবার আপনি পরীক্ষাটি লিখেছেন, সমাধানটির খুব সহজেই আসার প্রবণতা রয়েছে। সুতরাং আমি মনে করি না যে আপনার 70% - 75% সময় লেখার পরীক্ষাগুলি ব্যয় করা অসাধারণ, তবে আপনি 'প্রোডাকশন কোড' (কোড-টেস্ট-টেস্ট) লেখার জন্য এবং ডিবাগারে কার্যত কোনও সময় ব্যয় করার পক্ষে খুব কম সময় ব্যয় করছেন ।

যত তাড়াতাড়ি আপনি একটি বাগ খুঁজে পান, এটি ঠিক করা আরও কম সস্তা এবং টিডিডি এটির সাথে দুর্দান্তভাবে সহায়তা করে। আমি এমন প্রকল্পগুলিতে কাজ করেছি যেখানে সর্বশেষ 2 মাস (8 মাসের একটি প্রকল্পের) বাগ ফিক্সিংয়ে ব্যয় করা হয়েছিল, এবং এই পর্বটি টিডিডি দিয়ে প্রায় পুরোপুরি বাদ দেওয়া হবে।

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


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

1
সুতরাং আপনি ভাবেন যে সময় মতো বাস্তব বাস্তব সঞ্চয় আছে। (2 মাস) আপনার উদাহরণ অনুসারে কিন্তু কত সময় পরীক্ষায় চলে যেত? ভাল উত্তর বিটিডব্লিউ।
ওয়েজ

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

এটি এখন আমার অ্যাক্সেস করা উত্তরে সরানো হয়েছে।
ওয়েজ

15

প্রতিবার আপনি যখন আপনার ইউনিট পরীক্ষা চালান, আপনি নিজের কোডটি ম্যানুয়ালি পরীক্ষা করতে যে পরিমাণ সময় নিয়েছিলেন তা নিজেকে সংরক্ষণ করুন।

আপনার পরীক্ষাগুলি লেখার জন্য যে সময়টি আপনি 30% থেকে 50% লিখেছেন তা বোধ করা ভাল (টেস্টেবল) সফ্টওয়্যার ডিজাইনের সুবিধা দ্বারা একটি দুর্দান্ত চুক্তিও রয়েছে।


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

এটি পরীক্ষাটি কোনও স্বয়ংক্রিয় ইউনিট পরীক্ষা, বা একটি স্বয়ংক্রিয় কার্যকরী পরীক্ষা কিনা তা সত্য holds সমস্ত কার্যকরী পরীক্ষা স্বয়ংক্রিয় করা যায় না, তবে তাদের মধ্যে অনেকেই পারেন। এছাড়াও, স্বয়ংক্রিয় পরীক্ষা কোনও ব্যক্তির চেয়ে নির্ভরযোগ্য; এটি প্রতিবারের মতো ঠিক একইভাবে পরীক্ষা চালাবে ।

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


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

6
ইউনিট পরীক্ষা হয় রিগ্রেশন টেস্টিং। আপনি কী বলছেন তা আমি নিশ্চিত নই।
রবার্ট হার্ভে

2
ইউনিট পরীক্ষা এবং কার্যকরী পরীক্ষা উভয়ই রিগ্রেশন পরীক্ষার ফর্ম। আমার মনে হয় ওয়েস পরবর্তীকালের কথা উল্লেখ করছে।
ফিল ম্যান্ডার 21

@ ফিল ম্যান্ডার ঠিক ঠিক। @ রবার্ট হার্ভে মানে ফাংশনাল টেস্টিং, আমার মস্তিষ্কে সঠিক শব্দটি খুঁজে পেল না। যদিও আমি নিশ্চিত যে আমার সাবকনসিয়াস আমি সেখানে শব্দটি কার্যত ব্যবহার করেছি সে হিসাবে: এস ওহ এবং ভাল সম্পাদনা বিটিডব্লিউ।
ওয়েজ

আমি মনে করি না প্রতিবারের মতো ঠিক একইভাবে চালানো আসলে একটি ইতিবাচক, কারণ এটির মতো সমস্যা খুঁজে পাওয়া খুব ধারাবাহিকভাবে মিস করা সম্ভব।
পিটার আজতাই

5

টিডিডি প্রায় সময় এবং ব্যয় ব্যয়ের পরিবর্তে কোড মানের দিকে পরিমাপ করা হয়। তবে, উন্নত কোডের মানের সাথে, বিকাশকারী এবং তাদের সাথে কাজ করা যে কোনও লোক ভাল কাজ করতে পারে (কম সময় ব্যয় করা, কম ব্যয় জড়িত, সুখী ইত্যাদি)। http://davidlongstreet.wordpress.com/2009/04/29/new-software-metric-wtfs-per-minute/

ফাংশনাল এবং অ-কার্যকরী প্রয়োজনীয়তার যাচাইকরণ স্বয়ংক্রিয় করতে সহায়তা করার জন্য রাইটিং টেস্টগুলি দুর্দান্ত। একটি ভিডিও যা আমাকে টিডিডি (আসলে বিডিডি, উচ্চ স্তরের টিডিডি) অবলম্বন করতে রাজি করেছে: http://video.google.com/videoplay?docid=8135690990081075324#

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

  • লিখিত পরীক্ষাগুলি বিকাশকারীদের অগ্রগতি এবং সম্মুখীন সমস্যাগুলি বোঝাতে সহায়তা করে।

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

টিডিডি সহ, আমরা কখনই তা জানতে পেরে আনন্দিত:

  • গ্রাহক প্রয়োজনীয়তার পরিবর্তনের জন্য অনুরোধ করে (সন্তুষ্ট প্রয়োজনীয়তা)
  • কোড লেখার আরও ভাল উপায় আবিষ্কার করা হয়
  • টিম সাথীদের কোড উন্নতির জন্য পরামর্শ রয়েছে
  • আমাদের কোডটি অন্য ব্যক্তির কাছে ব্যাখ্যা করতে / পাস করতে হয়

টিডিডি বিরক্তিকর হতে পারে কারণ বিকাশ প্রক্রিয়া ছোট পদক্ষেপ নেয়, এবং এটি এতটাই অনুমানযোগ্য হয়ে ওঠে।


4

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


এটি কি কোনও বাড়ির বর্ধিত কোড জেনারেটর, না এমন কোনও ওপেন-সোর্স কোড জেনারেটর যা বন্যের মধ্যে পাওয়া যায়?
রবার্ট হার্ভে

এটি নেট কোডডোম ক্লাসের উপর ভিত্তি করে একটি হ্যান্ড রোলড সলিউশন।
TMN

3

গুরুত্বপূর্ণ দীর্ঘমেয়াদি ব্যবস্থাগুলি কেবল কোডের মান এবং কোডের আত্মবিশ্বাসই নয়, তবুও দলটিকে নির্বোধ পরীক্ষা করে না ফেলে

স্বল্পমেয়াদী ব্যবস্থাটি হ'ল পরীক্ষাগুলি স্বয়ংক্রিয়করণের আরওআই

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

পরীক্ষাগুলি চালাতে 28 মিনিট সময় নেয়; তারা সব পাস। ম্যানুয়ালি একই 40+ গ্রহণযোগ্যতা পরীক্ষা করতে প্রায় 6 ঘন্টা সময় লাগবে।

অন্য উদাহরণ: পূর্ববর্তী পুনরাবৃত্তিতে আমি একটি সূক্ষ্ম বাগ দিয়ে পরীক্ষার দৃশ্যের একটি বুদ্ধি দিয়েছিলাম যে ম্যানুয়াল পরীক্ষার সম্ভবত এটি পাওয়া যায় না (স্বয়ংক্রিয় পরীক্ষাগুলি ডিবি অখণ্ডতা পরীক্ষা করে যে ম্যানুয়াল পরীক্ষকরা প্রায় কখনও করেন না)। আমি এটি পরীক্ষা করে ঠিক করার আগে আমার প্রায় 50 বার পরীক্ষার দৃশ্য চালাতে হয়েছিল। ম্যানুয়ালি টেস্ট দৃশ্যের ক্রিয়াকলাপ সম্পাদন করতে প্রায় 50 মিনিট সময় লাগবে। সুতরাং এটি একদিনে 41,6 ঘন্টা-ঘন্টা শ্রম সঞ্চয়

অটোমেটেড টেস্টিংয়ের আরওআই আগাম গণনা করার কোনও উপায় নেই, কারণ পরীক্ষাগুলি চালানোর জন্য আপনাকে কতবার প্রয়োজন তা আপনি ঠিক বুঝতে পারেন না।

তবে আমার কাছে, স্বয়ংক্রিয় পরীক্ষার আরওআই প্রায় অসীম


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

1
@ ওয়েজ: টিডিডির পরীক্ষাগুলিগুলিকে "ইউনিট" পরীক্ষা হিসাবে উল্লেখ করা হয়, তবে দুর্ভাগ্যজনক নামটি তাদের সুযোগকে সীমাবদ্ধ না রাখুন। তাদের উদ্দেশ্য বৈশিষ্ট্য পরীক্ষা করা । একটি বৈশিষ্ট্য হতে পারে 'foo ফাংশন সর্বদা নাল ফেরায়' বা এটি হতে পারে 'সর্বোচ্চ লোডের অধীনে সামগ্রিক সিস্টেমের বিলম্বিতা অবশ্যই 12 পিকোসেকেন্ডের চেয়ে কম হওয়া উচিত'।
স্টিভেন এ লো।

0

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

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

সূক্ষ্ম দানাদার ইউনিট পরীক্ষাগুলির সাথে সম্পূর্ণ কভারেজের প্রয়োগ বাস্তবায়নে পরিবর্তন বা পুনঃনির্ধারণের জন্য বিশাল ওভারহেড রয়েছে, যা তারা সহজ করে বলে দাবি করে exactly

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