একটি "পরিবেশনের প্রাথমিক পর্যায়ে প্রায়শই মুক্তি" ইউনিট পরীক্ষার প্রাসঙ্গিকতা কী?


10

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

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

  1. পুরো প্ল্যাটফর্মটি কোনও হট স্পট ছাড়াই প্রতিষ্ঠিত বিল্ডস / রিলিজের ক্লায়েন্ট-সাইডের সাথে ভালভাবে একত্রিত।

  2. নতুন কার্যকারিতা প্রয়োজনীয়তা আসতে থাকে এবং আমরা ক্রমবর্ধমানভাবে সেগুলি তৈরি করি।

  3. সিস্টেমের সামগ্রিক গতিবিদ্যা খুব গুরুত্বপূর্ণ কারণ স্বাধীন বিকাশকারী গোষ্ঠীগুলি যথাযথ প্রক্রিয়া অনুসরণ করতে পারে, জটিল, অ-স্পষ্ট পরিস্থিতিতে জটিল ব্যর্থতা দেখা দিয়েছে।

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

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

অপেক্ষাকৃত পরিপক্ক সিস্টেমে ইউনিট পরীক্ষাগুলি কী কার্যকর? আমাদের ইউনিটগুলির পরিপক্কতার উপর নির্ভর করে কমপক্ষে পরীক্ষার সুযোগটি ওজন করা উচিত? ইউনিট টেস্টিং কি উন্নয়নের গতি কমিয়ে দেবে? ইউনিট টেস্টিংকে আলাদাভাবে মূল্যায়ন করার দরকার আছে কি?

একটি রিলিজ-প্রারম্ভিক-মুক্তির প্রায়শই পরিবেশে পরিপক্ক প্ল্যাটফর্মের জন্য পরীক্ষার সর্বোত্তম অনুশীলনগুলি কী কী?


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

উত্তর:


15

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

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

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

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

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


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

@ স্লিপারস্মিথ: হ্যাঁ, এবং এ জাতীয় সহজ ইউনিট পরীক্ষাগুলি লিখতে সক্ষম করার জন্য ডিআই এবং আইএসপি প্রয়োগ করা ভাল ধারণা হতে পারে - আমি ঠিক উপরে লিখেছিলাম। আমি যদি এ বিষয়ে যথেষ্ট পরিস্কার না থাকি তবে দুঃখিত।
ডক ব্রাউন

4

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

আমার অভিজ্ঞতায় এটি বিশেষত গ্রন্থাগারের জন্য ঝুঁকির এবং আরও ভাল চিন্তার কোড তৈরি করে এবং এটি নির্দিষ্টকরণের একটি চালিত অংশ (যার অর্থ এটি সর্বদা সঠিক ডকুমেন্টেশন হবে)।

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


3

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

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

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