ইউনিট পরীক্ষাগুলি যুক্ত করা কি সুপরিচিত লিগ্যাসি কোডের জন্য অর্থবোধ করে?


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

এখন, আমি 3 টি নতুন ব্যবহারকারী-মুখ ফিচারগুলি প্রয়োগ করার জন্য "আনন্দ" পেয়েছি।

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

এখন, আমি সত্যিই সামান্য কোড যুক্ত করেছি। (আমি প্রতিটি বৈশিষ্ট্যের জন্য একটি পদ্ধতি এবং কয়েকটি কল লাইন মনে করি))

এই কোডটি তৈরি করে ( ডাব্লুইইউএলসি-তে প্রস্তাবিত যেকোন পদ্ধতির মাধ্যমে ), যাতে ইউনিট পরীক্ষাটি বোধগম্য হয়ে উঠত (এবং একটি সম্পূর্ণ টাউটোলজি ছিল না) আরও বেশি না হলে সহজেই আরও ২-৪ ঘন্টা সময় নিতে পারে। এটি প্রতিটি বৈশিষ্ট্যে 50% -100% সময় যুক্ত করেছিল, তাত্ক্ষণিক কোনও সুবিধা ছাড়াই

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

মঞ্জুর, পরে যদি "কেউ" এসে সেই কোডটি স্পর্শ করে, তাত্ত্বিকভাবে সেই ইউনিট পরীক্ষা থেকে কিছুটা উপকার পেতে পারে। (কেবল তাত্ত্বিকভাবে, যেহেতু পরীক্ষিত কোড দ্বীপটি অনির্ধারিত কোডের সমুদ্রে বাস করবে would)

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

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


অন্য কোনও বিভাগ যদি আপনার "সুপরিচিত লিগ্যাসি কোড" গ্রহণ করে তবে কী হবে? ওখানকার ছেলেরা এর সাথে কি করবে?
অ্যালেক্স থিওডোরিডিস

উত্তর:


18

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

আমি সবসময় নতুন কোডে তর্ক করব তবে লিগ্যাসি কোডে আপনাকে রায় দেওয়ার জন্য কল করতে হবে।

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

থাম্বের বিধি: সর্বদা নিজেকে ভাবুন, " আমি কি বিশ্বাস করি যে এই প্রযুক্তিগত কাজটি ব্যবসায়কে আরও বেশি উপকৃত করে যা আমি মনে করি যে তারা যে কাজের জন্য জিজ্ঞাসা করেছে তার ফলস্বরূপ বিলম্ব হতে চলেছে? "


কোড একটি ভাল টুকরা কি? এমন একটি যা ভালভাবে ডিজাইন করা হয়েছে, পরীক্ষা করা হয়েছে, নথিভুক্ত করা হয়েছে এবং ভবিষ্যতের প্রমাণ বা এর জন্য আপনাকে অর্থ প্রদান করা হবে? সর্বদা হিসাবে: আপনি এটি ভাল করতে পারেন ; আপনি এটি সস্তা করতে পারেন ; আপনি এটি দ্রুত পেতে পারেন । যে কোনও দুটি বাছাই করুন, তৃতীয়টি আপনার ব্যয় cost
সারদাথ্রিয়ন - মনিকা

2
"আমি সবসময় নতুন কোডে তর্ক করতাম" ... একটি নতুন উত্তর কোডে "নতুন কোড" বা "নতুন নতুন কোড"? :-)
মার্টিন বা

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

10

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

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

আপনি যদি চান যে আপনার প্রকল্পটি টিকে আছে, আপনাকে পরিবর্তনের জন্য এটি প্রস্তুত করতে হবে।


3

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

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


1
কিন্তু কিন্তু কিন্তু! :-) এই সামান্য একটি নতুন বৈশিষ্ট্য বাস্তবায়নের জন্য প্রয়োজন সময় 100% বৃদ্ধি অনুবাদ করা উচিত । এটি পরবর্তী বৈশিষ্ট্যগুলি প্রয়োগ করতে প্রয়োজনীয় সময় হ্রাস করে না । এটা তোলে পারে যখন কাপড় পরিবর্তন প্রয়োজন সময় হ্রাস।
মার্টিন বা

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

1
@ মার্টিন কারণ আপনি যা করেন তা স্পষ্টতই আপনার বৈশিষ্ট্যটি কী হওয়া উচিত তা কোড এবং তারপরে শিপ্ট করুন। কোনও পর্যায়ে কোনও পরীক্ষা করা হয় না ... না, অপেক্ষা করুন। বিকাশকারী হিসাবে, আমরা সবাই আমাদের কোডটি পরীক্ষা করে নিই (কমপক্ষে হাতে হাতে) এটি সম্পন্ন করার আগে। "একটি স্বয়ংক্রিয় পরীক্ষা লিখে" "হাত দ্বারা" প্রতিস্থাপন করা সময়ের সাথে 100% বৃদ্ধি নয়। প্রায়শই, আমি এটি প্রায় একই সময় নেওয়া প্রায় খুঁজে।
কাজ ড্রাগন

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

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

2

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

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

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


1

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

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

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

এটি ম্যানুয়াল টেস্টিংয়ের চেয়ে আজ কয়েক ঘন্টা ব্যয় করে তবে আপনি কোডের জীবনকালে কোনও পরিবর্তন সাশ্রয় করার সময় প্রতিবার পরীক্ষা করছেন।

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


"এবং আবার আপনার পরীক্ষার দলিল করে - আপনি কি তা করেন না?" - c চটকদার টুপি লাগানো: not অবশ্যই না। আমরা বিকাশকারী পরীর জমিতে নেই। স্টাফ বাস্তবায়িত হয় এবং পরীক্ষিত হয় এবং চালিত হয়। পরে এটি ভাঙ্গা এবং স্থির হয়ে যায় এবং পরীক্ষা এবং শিপ হয়।
মার্টিন বা 10

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

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

0

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

হ্যাঁ, আপনি ব্যয় কি থাকতে পারে বলে মনে হয় সময় আপনার লিগ্যাসি কোড testable করতে অতিরিক্ত পরিমাণ মত।

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


1
"ইউনিট পরীক্ষা ব্যতীত আপনার বৈশিষ্ট্যটি অজান্তে ভাঙা হয়নি তা নিশ্চিত করার জন্য আপনার অন্য কোনও উপায় নেই, এমনকি যখন সেই বৈশিষ্ট্যটি নিজেই পরিবর্তিত হয়নি" " - ইউনিট পরীক্ষা সাহায্য করবে না। সত্যই নিশ্চিত করার জন্য , আমাকে স্বয়ংক্রিয় সংহতকরণ / গ্রহণযোগ্যতা পরীক্ষা করতে হবে।
মার্টিন বা

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