"পাসিং / ব্রোকেন বিল্ড" সূচকটির বিকল্প?


14

প্রতিটি প্রতিশ্রুতিতে পরীক্ষাগুলি চালিয়ে অবিচ্ছিন্ন একীকরণ থাকার সময়, একটি সাধারণ সেরা অনুশীলন হ'ল সমস্ত পরীক্ষা সব সময় পাস করা হয় (ওরফে "বিল্ডটি ভাঙবেন না")।

আমি এতে কিছু সমস্যা খুঁজে পাই:

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

এবং আমি বিশ্বাস করি না যে আপনার রেপোতে ব্যর্থ পরীক্ষা নেওয়া খারাপ জিনিস , এটি আপনার ট্র্যাকারটিতে প্রকাশ্য সমস্যা থাকার মতো। এগুলি ঠিক করার জন্য অপেক্ষা করা জিনিস।

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

এতটুকু বলার জন্য, আমি কি বিল্ড প্রসেস / ক্রমাগত একীকরণের অপব্যবহার / ভুল বোঝাবুটি করছি? আমার কাছে মনে হচ্ছে "পাসিং" / "পাস না করা" খুব সংকীর্ণ সূচক।

একটানা সংহতকরণ এবং টিডিডি সামঞ্জস্য করার কোনও উপায় আছে কি?

হতে পারে "নতুন পরীক্ষা" (এটি ব্যর্থ হতে পারে) এবং "রিগ্রেশন টেস্ট" (এটি ব্যর্থ হওয়া উচিত না কারণ তারা কাজ করত) কে আলাদা করার জন্য একটি স্ট্যান্ডার্ড সমাধান / অনুশীলন রয়েছে ?


1
একটি সূচক রয়েছে যা দেখায় যে ব্যর্থ পরীক্ষাগুলির সংখ্যা গত ঘন্টা (বা তাই) এ বেড়েছে (লাল) বা নীচে (সবুজ)।
জোচিম সৌর

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

@ জোছিমসৌয়ার হ্যাঁ তবে কি এই জাতীয় মেট্রিকটি কোনও বড় প্রকল্পে মানযুক্ত / ব্যবহৃত হয়? আমি বেশিরভাগ প্রকল্প (এবং সিআই সরঞ্জামগুলি) কেন সেভাবে কাজ করে তা বোঝার চেষ্টা করছি।
ম্যাথিউ নাপোলি

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

@ ম্যাডকিথভি ঠিকঠাক
নাপোলি

উত্তর:


12

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

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

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

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

আবার, আমি যথেষ্ট গুরুত্ব জোর করতে পারি না। ট্রাঙ্কে ভাঙা কোডটি কখনই কমিট করবেন না! আপনার অবদানগুলি অন্যান্য প্রোগ্রামারদের কাজের উপর প্রভাব ফেলতে পারে না।

সম্পাদন করা

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

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


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

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

the build would always have failing testsঅবিকল! তবে কি এতো খারাপ জিনিস? আমাদের একমাত্র মেট্রিক হ'ল "বিল্ডটি ভেঙে গেছে কি না" তবে আপনার কোডটি জানা বাগগুলিতে পূর্ণ হতে পারে , যাতে কোনও প্রতিক্রিয়া না থাকলে সত্যিকার অর্থে এটির কোনও অর্থ নেই। নিখুঁত বিশ্বে, প্রতিটি ট্র্যাকার ইস্যুর একটি পরীক্ষা হবে (ফিক্সিংয়ের তুলনায় পুনরুত্পাদন সহজতর)। সুতরাং উলটাপালটি দেখতে হবে যে সমস্ত পরীক্ষার 35 টি পরীক্ষা / 70% উত্তীর্ণ হয়, শাখা-এ এটিকে 40 টি পরীক্ষায় উন্নীত করে (80%) কোনও প্রতিরোধ ছাড়াই, এবং শাখা-বিতে রিগ্রেশন রয়েছে। আজ আপনি কেবলমাত্র মাস্টার এবং শাখা-এ ঠিক আছে এবং শাখা-বি ভাঙ্গা বলতে পারেন।
ম্যাথিউ নাপোলি

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

নিখুঁতভাবে! আমি যা ভাবছি তা হ'ল "এটি কি কারও দ্বারা করা হয়েছে, কোথাও? এবং এমন কোনও সরঞ্জাম রয়েছে যা সমর্থন করে (সিআই এবং ইউনিট পরীক্ষার লাইব্রেরি?" কারণ আমি যদি এই পরীক্ষাগুলি কেবল ক্লাসিক সিআই এবং ইউনিট-পরীক্ষার সরঞ্জামগুলির সাথে শ্রেণীবদ্ধ করি তবে বিল্ডটি সর্বদা থাকবে যাইহোক ব্যর্থ হয় এবং আমি কোন পরীক্ষাগুলিতে ব্যর্থ হয়েছিল তার মধ্যে কোনও পার্থক্য দেখতে পাব না এবং এটি কার্যকর হবে না: /
ম্যাথিউ ন্যাপোলি

4

ব্যর্থ পরীক্ষাগুলি সহ একটি মাস্টার শাখা দেওয়া, আপনি কীভাবে নিশ্চিত হতে পারেন - পূর্ববর্তী বিল্ডগুলির সাথে তালিকার তুলনা না করে - আপনি বাগ প্রবর্তন করেন নি?

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

আপনার মাস্টার শাখা সর্বদা পরিষ্কার এবং সবুজ রাখুন । একটি শাখায় কাজ। শাখাকে সিআই এর অধীনে, একটি পৃথক চাকরিতে রাখুন এবং আপনার হৃদয়ের বিষয়বস্তুতে ব্যর্থ টেস্ট রয়েছে have শুধু মাস্টার ভাঙবেন না।

শাখার পর্যালোচককে কেবলমাত্র আপনার শাখাটি যদি সমস্ত পরীক্ষায় পাস করে তবে তা মার্জ করুন। (আরও দৃ strongly়ভাবে: পর্যালোচনা কেবলমাত্র শাখাকে মাস্টারে মার্জ করার ফলাফল যদি সমস্ত পরীক্ষায় উত্তীর্ণ হয় তবে কেবল আপনার শাখাটি মার্জ করতে সক্ষম হবে!)


2
Simply tracking the number of failing tests is insufficientএটিই কেবল সম্ভাব্য মেট্রিক নয়। উদাহরণস্বরূপ: Branch-A improves it to 40 tests (80% passing) with no regression। কোনও প্রতিরোধের অর্থ আগের পরীক্ষাগুলি সর্বদা পাস করা হয়। সংক্ষেপে, একটি পরীক্ষা যতক্ষণ না এটি পাস হয় ততক্ষণ ব্যর্থ হওয়ার অনুমতি দেওয়া হবে। আমার কাছে মনে হয় যে আমরা প্রধান শাখাগুলিতে ব্যর্থ পরীক্ষাগুলি নিষিদ্ধ করার জন্য বাধা দিয়ে ভাল জিনিসগুলিতে মিস করছি। (অবশ্যই এটির জন্য আলাদাভাবে কাজ করার সরঞ্জামগুলির প্রয়োজন হবে: ইউনিট টেস্ট, সিআই, ...)
ম্যাথিউ ন্যাপোলি

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

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

ইউনিতের উপেক্ষিত পরীক্ষার ধারণা রয়েছে। এটি একটি বিকল্প হতে পারে: তারা দৌড়ায় না তাই তারা ব্যর্থ হয় না, তবে তাদের এখনও অবহেলিত বলে রিপোর্ট করা হয়।
ফ্রাঙ্ক শায়ারার

2

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

আমি টিকিটের সাথে মিলে এমন একটি 'ভাঙ্গা পরীক্ষা' করার সমস্যাটি দিয়ে শুরু করব। একটি সমাধান হ'ল সমস্যাটি প্রকাশ করে এক বা একাধিক ব্রেকিং পরীক্ষা তৈরি করা, তারপরে আসলে সমস্যাটি ঠিক করুন , যাতে তারা মূল কোড লাইনে আবার একত্রিত হতে পারে। দ্বিতীয় সমাধানটি হ'ল ভাঙা পরীক্ষা করা, তবে কিছু ধরণের অগ্রাহ্য পতাকা ব্যবহার করুন যাতে তারা প্রকৃতপক্ষে চালনা করে না এবং ভঙ্গ করে। সম্ভবত একটি মন্তব্য বা একটি বিশেষ টিকা যুক্ত করুন যা এটি খুব স্পষ্ট করে তোলে যে এটি এর জন্য একটি ভাঙ্গা পরীক্ষা Ticket#N। টিকিটে নিজেই একটি নোট সংযুক্ত করুন যা তৈরি করা পরীক্ষাগুলিকে বোঝায় যা অযৌক্তিকর এবং দৌড়ে যাওয়ার জন্য অপেক্ষা করছে । এটি কোনও ব্যক্তিকে টিকিট স্থির করতে সহায়তা করবে, তবে পরীক্ষার আগমনকারী কারও জন্য এটি লাল-পতাকা হবে না।

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

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


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

1

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

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

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

আমার প্রস্তাবটি এমন একটি প্রকল্পের সন্ধান করা যা সবুজকে কিছুটা লাল রঙের মনে করবে না।


1
 > a common best practice is to have all the tests passing (green) at all times.

আমি সমস্ত পরীক্ষাগুলি ব্যর্থ না হওয়া (লাল নয়) পছন্দ করি।

এই সামান্য পৃথক সংজ্ঞা দিয়ে আপনি পরীক্ষাগুলিও সংজ্ঞায়িত করতে পারেন

  • এখনও বাস্তবায়িত হয়নি (নুনিটে ধূসর যদি একটি নোটআইপ্লিমেন্টেড এক্সেক্সশন থাকে)
  • ব্যর্থ হিসাবে পরিচিত = "করণীয় দরকার" পরীক্ষার চিহ্ন হিসাবে / এ্যানোটেট করে উপেক্ষা করা (হলুদ)

আমি এগুলি সংগ্রহস্থলটিতে পরীক্ষা করে দেখি আপনার ক্রমাগত বিল্ডটি ভাঙা হয়নি এবং তাই বৈধ।


0

আপনি দুটি ভিন্ন সিআই বিল্ড "ধারণা" বিবেচনা করতে পারেন।

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

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

    • নতুন প্রয়োজনীয় কার্যকারিতার জন্য টেস্টগুলি যুক্ত করা হয়েছে যা এখনও কার্যকর হয়নি।

    • বৈশিষ্ট্যটি কীভাবে কার্যকর করা যায় বা ঠিক করতে হয় তার চেয়ে ব্যর্থতা বা বৈশিষ্ট্য পরীক্ষা করা কীভাবে তা সহজেই জানা যায় এবং উত্স নিয়ন্ত্রণের উপর পরীক্ষার প্রতিশ্রুতি দিয়ে দুটি ধাপ পৃথক করে কোনও তথ্য হারাতে না পারে তা নিশ্চিত করতে কার্যকর হতে পারে।

"স্ট্যান্ডার্ড" সিআই এর মতো, নিয়মিত উন্নয়ন ব্যবস্থায় দলটি কেবল নিয়মিত বিল্ডের দৈনিক বিল্ড ফলাফলগুলি দেখত।

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

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


0

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

সমস্যাটি পরীক্ষাগুলিতে ব্যর্থ হচ্ছে না, এটি রিগ্রেশনের একটি সাধারণ, প্রসঙ্গ কম সূচক। আকা: একজন বিকাশকারী হিসাবে, আমি কি একটি একক সূচক পরীক্ষা করতে পারি এবং জানতে পারি যে আমি কোনও রিগ্রেশন বা ব্রেকিং কোড প্রবর্তন করেছি কিনা।

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

সর্বাধিক সরঞ্জাম ঠিকানা যে 'সবুজ / পাসিং' প্রত্যাশিত ফলাফলটি প্রতিফলিত করে - কোডটি কাজ করছে না তা নয়:

  • ফিটনেসে প্রত্যাশিত ব্যর্থতার ধারণা রয়েছে।
  • JUnit এর @ ইঙ্গিত / @ টেস্ট (প্রত্যাশা =) রয়েছে
  • শসা'র 'এখনও প্রয়োগ করা হয়নি' (বা যা বলা হোক না কেন) তার স্ট্যাটাস রয়েছে

এগুলি তাদের নিজস্ব সমস্যা নিয়ে আসে (আপনি কীভাবে 'হ্যাঁ, আমরা জানি এটি ভেঙে গেছে, এটি নিয়ে কাজ করা' এবং 'সঠিক আচরণটি একটি ব্যতিক্রম') - তবে তারা সহায়তা করে।


0

আমি স্কিপড টেস্ট ব্যবহার করি।

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

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