পুরো কভারেজ অর্জনের জন্য দলকে টিডিডিতে রূপান্তর করার পরে সমস্ত সম্ভাব্য পরীক্ষার কেসগুলি লেখা কি ভাল ধারণা?


17

ধরুন আমাদের কাছে কোনও ইউনিট / কার্যকরী পরীক্ষা ছাড়াই একটি বৃহত এন্টারপ্রাইজ-স্তরের অ্যাপ্লিকেশন রয়েছে। খুব কঠোর সময়সীমার কারণে বিকাশের সময় কোনও পরীক্ষা-চালিত বিকাশ প্রক্রিয়া ছিল না (আমি জানি আমাদের কখনই কোনও দৃ we় সময়সীমার প্রতিশ্রুতি দেওয়া উচিত নয় যখন আমরা নিশ্চিত নই, তবে কী করা হয়েছে!)

এখন যে সমস্ত সময়সীমা অতিক্রান্ত হয়েছে এবং জিনিসগুলি শান্ত, সকলেই আমাদেরকে একটি উত্পাদনশীল টিডিডি / বিডিডি ভিত্তিক দলে রূপান্তর করতে সম্মত হয়েছেন ... হ্যাঁ!

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

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

দ্রষ্টব্য : এই প্রশ্নটি কোনও উন্নয়ন টিমের সম্পূর্ণ বিশ্রী পরিস্থিতি ব্যাখ্যা / কল্পনা করছে। এটি আমার বা আমার কোনও সহকর্মী সম্পর্কে নয়; এটি কেবল একটি কাল্পনিক পরিস্থিতি। আপনি ভাবতে পারেন যে এটি কখনও ঘটবে না বা ডেভলপমেন্ট ম্যানেজার এই জাতীয় গোলযোগের জন্য দায়ী! তবে যাইহোক, যা করা হয়েছে তা শেষ হয়েছে। যদি সম্ভব হয় তবে দয়া করে কেবল এটিকে কম করবেন না বলে আপনি মনে করেন যে এটি কখনই ঘটবে না।



6
আপনার সম্ভবত পরবর্তী সময় সময়সীমার জন্য প্রস্তুত হওয়া উচিত এবং আপনাকে আর কোনও টিডিডি করার অনুমতি দেওয়া হবে না। কারও কারও কারও পক্ষে কারিগরি velopণখণ্ডের শেষ পর্বটি ঘুরিয়ে দেওয়ার কারণটি কেন এটি দুর্দান্ত ধারণা নয় by
jonrsharpe

1
@gnat আমি মনে করি এটি কোনও সদৃশ প্রশ্ন নয়। উল্লিখিত টিমের কোনও ধরণের পরীক্ষা নেই (এমনকি সংহতকরণের পরীক্ষাও নয়)
মিশেল গোকন

1
@ প্রশ্নগুলি জাগ্রত করুন: আমাদের নতুন ইউনিট পরীক্ষাগুলির কী হবে? তারা পূর্বের লিখিত কোডগুলির জন্য সমস্ত ইউনিট পরীক্ষা না লিখে অসম্পূর্ণ বা এমনকি অকেজো মনে হতে পারে। আপনি যে প্রশ্নটি উল্লেখ করেছেন তা এই নির্দিষ্ট উদ্বেগকে আচ্ছাদন করে না।
মিশেল গোকন

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

উত্তর:


36

খুব কঠোর সময়সীমার কারণে উন্নয়নের সময় কোনও পরীক্ষা-চালিত বিকাশ প্রক্রিয়া ছিল না

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

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

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

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

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

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

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

এটি বলেছিল, যখন দলটি আপনার পরীক্ষার কোডটি আপনার প্রোডাকশন কোডটি পড়তে সহায়তা করতে পারে এবং পরিচালনা যখন নতুন নতুন টিডিডি সরঞ্জাম কিনবে তখন তা দুর্দান্ত it's

দলটিকে টিডিতে রূপান্তরিত করার পরে সমস্ত সম্ভাব্য পরীক্ষার কেসগুলি লেখা কি ভাল ধারণা?

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

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

(1) সবকিছু ঠিকঠাকভাবে কাজ করা সত্ত্বেও বেশিরভাগ বিকাশ বন্ধ করা এবং শুরু থেকেই পুরো সম্ভাব্য পরীক্ষার কেসগুলি লেখা শুরু করা কি ঠিক আছে বা ভাল ধারণা? অথবা

না এটি "আসুন একটি সম্পূর্ণ পুনর্লিখন করি" চিন্তাভাবনা। এটি হার্ড জিতে জ্ঞান ধ্বংস। টেস্ট লেখার জন্য সময় চেয়ে ম্যানেজমেন্টকে জিজ্ঞাসা করবেন না। শুধু পরীক্ষা লিখুন। একবার আপনি কী করছেন তা জানার পরে পরীক্ষাগুলি আপনাকে ধীর করবে না।

(২) কিছু খারাপ হওয়ার জন্য অপেক্ষা করা আরও ভাল এবং তারপরে ঠিক করার সময় নতুন ইউনিট পরীক্ষা লিখুন, বা

(3) এমনকি পূর্ববর্তী কোডগুলি ভুলে যান এবং কেবলমাত্র নতুন কোডগুলির জন্য ইউনিট পরীক্ষাগুলি লিখুন এবং পরবর্তী বড় রিফ্যাক্টরে সবকিছু স্থগিত করুন।

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

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

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


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

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

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

1
আমি এটি একটি বাড়ি কেনার অনুরূপ বলে মনে করি find যদি আপনার কোনও বাড়ি ছেড়ে দেওয়ার একক অঙ্ক থাকে তবে আপনি সুদের উপর অনেক কিছু সঞ্চয় করতে পারবেন এবং এটি দীর্ঘকালীন সময়ে দুর্দান্ত। তবে যদি আপনার তাত্ক্ষণিকভাবে কোনও বাড়ির প্রয়োজন হয় ... তবে আপনি দীর্ঘমেয়াদী সাবোপটিমাল একটি স্বল্পমেয়াদী পদ্ধতির গ্রহণ করতে বাধ্য হবেন
আলেকজান্ডার - মনিকা পুনরায়

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

22

শুরু থেকে বেশিরভাগ বিকাশ বন্ধ করে পুরো সম্ভাব্য পরীক্ষার কেসগুলি লেখা শুরু করা কি এখনও ঠিক আছে বা ভাল ধারণা [...]?

উত্তরাধিকার 1 কোড দেওয়া, এই পরিস্থিতিতে ইউনিট পরীক্ষা লিখুন:

  • বাগ ঠিক করার সময়
  • রিফ্যাক্টরিং যখন
  • বিদ্যমান কোডটিতে নতুন কার্যকারিতা যুক্ত করার সময়

ইউনিট পরীক্ষাগুলি যেমন কার্যকর, বিদ্যমান 1 কোডবাসের জন্য একটি সম্পূর্ণ ইউনিট টেস্ট স্যুট তৈরি করা সম্ভবত বাস্তবসম্মত ধারণা নয়। শক্তিশালী যেগুলি আপনাকে একটি কঠোর সময়সীমার উপর চাপিয়ে দিতে বাধ্য করেছে। আপনার বিকাশকালে তারা পর্যাপ্ত ইউনিট পরীক্ষা তৈরি করতে আপনাকে সময় দেয়নি। আপনি কি মনে করেন যে তারা "প্রোগ্রাম যে কাজ করে" এর জন্য পরীক্ষা তৈরির জন্য পর্যাপ্ত সময় দেবে?

1 লিগ্যাসি কোডটি ইউনিট পরীক্ষা ছাড়াই কোড। এটি লিগ্যাসি কোডের টিডিডি সংজ্ঞা। উত্তরাধিকারের কোডটি নতুনভাবে বিতরণ করা সত্ত্বেও এটি প্রযোজ্য [এমনকি কালিটি এখনও শুকনো না হলেও]।


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

7
(1) মূল্যহীন? অবশ্যই না. খুব কমপক্ষে, তারা নতুন বৈশিষ্ট্যটি পরীক্ষা করে। পরবর্তী সময় কেউ এই বৈশিষ্ট্যটি সংশোধন করতে চান, তারা বিদ্যমান পরীক্ষাগুলির অনেকাংশ পুনরায় ব্যবহার করবেন। (২) অসম্পূর্ণ? হয়তো, হয়তো না. যদি আপনি এমন একক পরীক্ষাও তৈরি করেন যা নতুন বৈশিষ্ট্যটির উপর নির্ভর করে লিগ্যাসির কার্যকারিতা পরীক্ষা করে, তবে পরীক্ষাগুলি ব্যবহারিক উদ্দেশ্যে যথেষ্ট পরিমাণে সম্পূর্ণ হতে পারে। অন্য কথায়, অতিরিক্ত ইউনিট পরীক্ষা তৈরি করুন যা উত্তরাধিকার কার্যকারিতাটি প্রবেশ করে penet কী গভীরতায় প্রবেশ? এটি প্রোগ্রামের আর্কিটেকচার, উপলব্ধ সংস্থানসমূহ, প্রাতিষ্ঠানিক সহায়তার উপর নির্ভর করে।
নিক আলেক্সিভ

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

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

2
@ ফ্ল্যাটার আমি কুরুচিপূর্ণ উত্পাদন কোডের জন্য দৃ as়তা জানাই নি। আমি জোর দিয়েছি যে পরীক্ষার পয়েন্টটি হ'ল প্রোডাকশন কোডটি পাঠযোগ্য। আমি আনন্দের সাথে পরীক্ষার একটি সারগ্রাহী ভিড় গ্রহণ করব যা উত্পাদন কোডটি পড়া সহজ করে তোলে। অভিন্নতাটিকে নিজের মধ্যে লক্ষ্য বানানোর বিষয়ে সতর্ক থাকুন। পঠনযোগ্যতা রাজা।
candied_orange

12

আমার অভিজ্ঞতা হিসাবে, পরীক্ষাগুলি সহায়ক হওয়ার জন্য মোট কভারেজের প্রয়োজন হয় না। পরিবর্তে, কভারেজ বাড়ার সাথে সাথে আপনি বিভিন্ন ধরণের সুবিধা অর্জন করতে শুরু করেন:

  • ৩০% এরও বেশি কভারেজ (যেমন একীভূতকরণের পরীক্ষাগুলি): যদি আপনার পরীক্ষাগুলি ব্যর্থ হয় তবে কিছু চূড়ান্তভাবে ভেঙে যায় (বা আপনার পরীক্ষাগুলি ফাঁকা থাকে)। ধন্যবাদ, পরীক্ষাগুলি আপনাকে দ্রুত সতর্ক করে দিয়েছে! তবে রিলিজগুলি এখনও ব্যাপক ম্যানুয়াল পরীক্ষার প্রয়োজন হবে।
  • 90% এরও বেশি কভারেজ (ওরফে বেশিরভাগ উপাদানগুলির উপর পর্যাপ্ত ইউনিটের পরীক্ষা রয়েছে): যদি আপনার পরীক্ষাগুলি পাস হয় তবে সফ্টওয়্যারটি বেশিরভাগ ক্ষেত্রেই ভাল। স্বীকৃত অংশগুলি প্রান্তের কেস, যা অ-সমালোচনামূলক সফ্টওয়্যারটির জন্য জরিমানা। তবে রিলিজগুলির জন্য এখনও কিছু ম্যানুয়াল পরীক্ষার প্রয়োজন হবে।
  • ফাংশন / বিবৃতি / শাখা / প্রয়োজনীয়তার খুব উচ্চ কভারেজ: আপনি টিডিডি / বিডিডি স্বপ্নের জীবন যাপন করছেন এবং আপনার পরীক্ষাগুলি আপনার সফ্টওয়্যারটির কার্যকারিতাটির একটি সঠিক প্রতিচ্ছবি। আপনি বৃহত্তর স্থাপত্যের পরিবর্তনগুলি সহ উচ্চ আত্মবিশ্বাসের সাথে রিফ্যাক্টর করতে পারেন। পরীক্ষাগুলি পাস হলে, আপনার সফ্টওয়্যারটি প্রায় মুক্তির জন্য প্রস্তুত; শুধুমাত্র কিছু ম্যানুয়াল ধোঁয়া পরীক্ষার প্রয়োজন।

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

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

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

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

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


"৯০% এরও বেশি কভারেজ (ওরফে বেশিরভাগ উপাদানগুলির উপর হাইফিশিয়াল ইউনিট পরীক্ষা রয়েছে): যদি আপনার পরীক্ষাগুলি পাস হয় তবে সফ্টওয়্যারটি সম্ভবত বেশিরভাগই ভাল থাকে The অরীক্ষিত অংশগুলি প্রান্তের ক্ষেত্রে, যা অ-সমালোচনামূলক সফ্টওয়্যারটির জন্য জরিমানা ।" এটি আমার কাছে কিছুটা শোনায়, এফডাব্লুআইডাব্লু, আমি প্রত্যাশিত পথ আচরণের (যা ম্যানুয়াল পরীক্ষকদের পক্ষে সহজ) সম্পূর্ণরূপে 90% এর চেয়ে বেশিরভাগ প্রান্তের ক্ষেত্রে 30% কভারেজ থাকা পছন্দ করি; আমি যখন পরীক্ষার কথা লিখি এবং যখনই সম্ভব হয় তখন ম্যানুয়ালি সনাক্ত করা (অস্বাভাবিক) পরীক্ষার কেসগুলি বন্ধ করে দেওয়ার সময় "বাক্সের বাইরে" চিন্তা করার পরামর্শ দিই।
জুন

5

বিদ্যমান কোডের জন্য পরীক্ষা লিখবেন না। এটা মূল্য নয়।

আপনি যা তৈরি করেছেন তা ইতিমধ্যে কিছুটা অনানুষ্ঠানিকভাবে পরীক্ষা করা হয়েছে - আপনি অবিরাম হাতে চেষ্টা করে দেখেছেন, লোকেরা কিছুটা বিনা পরীক্ষামূলক পরীক্ষা করেছিল, এটি এখন ব্যবহৃত হচ্ছে। সেটার অর্থ হল আপনি অনেক বাগ খুঁজে পাবে না

বাকি যে বাগগুলি আপনি ভাবেননি সেগুলি। তবে এগুলি হ'ল আপনি সেইগুলির জন্য ইউনিট পরীক্ষা লেখার জন্য ভাবেন না, তাই আপনি সম্ভবত এখনও এটি খুঁজে পাবেন না।

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

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

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

সংক্ষেপে, ডিভগুলি এটিকে ঘৃণা করবে এবং পরিচালকরা এটিকে ব্যয়বহুল হিসাবে দেখবেন, যদিও অনেকগুলি বাগ পাওয়া যায় না। আপনি কখনই আসল টিডিডি অংশে পাবেন না।

প্রক্রিয়াটির একটি সাধারণ অংশ হিসাবে আপনি যে জিনিসগুলি পরিবর্তন করতে চান তাতে এটি ব্যবহার করুন।


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

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

2

একটি পরীক্ষা বোঝার যোগাযোগের একটি মাধ্যম।

অতএব কেবল যা বোঝেন তা পরীক্ষা করার জন্য সত্য লিখুন।

আপনি যখন এটির সাথে কাজ করবেন তখন কেবল সত্য হওয়া উচিত You

সুতরাং যে কোডটির সাথে আপনি কাজ করছেন তার জন্য কেবল পরীক্ষাগুলি লিখুন।

আপনি কোডটি নিয়ে কাজ করার সময় আপনি শিখবেন।

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

পাখলান পুনরাবৃত্তি.

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

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

দুটি বিকল্প:

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

0

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

পরীক্ষাগুলির মূল উদ্দেশ্যগুলির মধ্যে একটি হ'ল এটি নিশ্চিত করা যে কোনও পরিবর্তন কোনও কিছুই ভেঙে না ফেলে। এটি একটি তিন ধাপ প্রক্রিয়া:

  1. পরীক্ষাগুলি সফল হয়েছে তা নিশ্চিত করুন
  2. আপনাকে পরিবর্তন করুন
  3. নিশ্চিত করুন যে পরীক্ষাগুলি এখনও সফল হয়েছে

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

সুতরাং আমি বিকাশকারীদের একে অপরের জন্য মানকে ত্যাগ করতে এড়াতে টেস্ট-রাইটিং এবং পরিবর্তন-সম্পাদনের কাজগুলিকে বিভক্ত করার পরামর্শ দিই।

যদিও সবকিছু ঠিকঠাক কাজ করছে ঠিক আছে (এখনও!)?

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

(3) এমনকি পূর্ববর্তী কোডগুলি ভুলে যান এবং কেবলমাত্র নতুন কোডগুলির জন্য ইউনিট পরীক্ষাগুলি লিখুন এবং পরবর্তী বড় রিফ্যাক্টরে সবকিছু স্থগিত করুন

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

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

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

এবং পরবর্তী বড় রিফ্যাক্টারে সবকিছু স্থগিত করুন

পরবর্তী বড় রিফ্যাক্টর যদি কোনও প্রদত্ত হয় তবে আপনাকে অবশ্যই পরীক্ষাগুলি লেখার দরকার নেই।

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


0

আমার দুই সেন্ট:

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

বিকল্পভাবে, ধরা যাক আপনি একটি এসসিআরএম শপ, আপনার কাজের চাপ ক্ষমতা দ্বারা প্রতিনিধিত্ব করা হয় এবং আপনি এর এক %কে ইউনিট পরীক্ষায় বরাদ্দ করতে পারেন, তবে ...

আপনি ফিরে যান এবং পরীক্ষা লিখতে যাচ্ছেন বলছেন নির্বোধ, আপনি যা করতে যাচ্ছেন তা হ'ল পরীক্ষা, রিফ্যাক্টর লিখুন, এবং রিফ্যাক্টর কোডটি আরও পরীক্ষামূলক করে তোলার পরে আরও পরীক্ষা লিখুন, এ কারণেই এটি শুরু করা ভাল is পরীক্ষাগুলি যেমন আপনি ইতিমধ্যে সচেতন, এবং ...

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

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