ইউনিট পরীক্ষা বনাম কোনও পরীক্ষার সাথে বিকাশের মধ্যে সময়ের পার্থক্য


132

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

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

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

প্রশ্নটি হল, অনির্ধারিত কোডের তুলনায় ইউনিট-পরীক্ষিত কোড লেখার ক্ষেত্রে কতটা সময় পার্থক্য থাকে এবং প্রকল্পের ক্ষেত্রটি প্রশস্ত হওয়ার সাথে কীভাবে সেই সময়ের পার্থক্য স্কেল হয়?


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ম্যাপেল_শ্যাফ্ট

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

20
আপনি কি বুঝতে পেরেছেন যে "মূলত এটি করার জন্য আমার কাছে দু'বার সময় আছে, তবে একবারে সঠিকভাবে করার সময় নেই?"
রাবারডাক

5
@ রাবারডাক আসলে টাইম টু রাইটিং বনাম টাইম টু টেস্ট হিসাবে পরিমাপকৃত প্রকল্প জটিলতার বক্ররেখার একটি বিন্দু রয়েছে যেখানে "এটি লিখুন এবং এটি পরীক্ষা করুন" এর চেয়ে "দু'বার ঝাপটা", এর চেয়ে কম সময় নেয়। আমি মনে করি এটি ব্যাশ অনলাইনারের অঞ্চলে কোথাও হতে পারে।
লিন্ডন হোয়াইট

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

উত্তর:


149

পরে আপনি পরীক্ষা করেন, পরীক্ষাগুলি লিখতে তত বেশি খরচ হয়।

বাগ যত বেশি বাঁচে, ঠিক করা তত বেশি ব্যয়বহুল।

হ্রাস প্রাপ্ত রিটার্নের আইন নিশ্চিত করে যে কোনও বাগ নেই তা নিশ্চিত করার চেষ্টা করে আপনি নিজেকে বিস্মৃতিতে পরীক্ষা করতে পারেন।

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

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

পরীক্ষাগুলি ছাড়াই কোডের প্রতিটি লাইন ডিবাগ করা বা পুনর্লিখন করা উল্লেখযোগ্যভাবে আরও কঠিন।

আপনার লেখার প্রতিটি পরীক্ষায় সময় লাগবে।

প্রতিটি বাগ ঠিক করতে সময় নিবে।

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

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

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

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

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

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


68
খুব ভাল জিনিসের মতো জিনিস রয়েছে আপনি বা বুদ্ধ আমার দাদির কুকিজ পরীক্ষা করেছেন না :-)
পিয়ের আরলাড

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

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

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

6
@ টনিসফোকল66 আপনি সঠিক, এটি বিল ফি প্রদানের বৈশিষ্ট্যগুলি কাজ করে (ফ্লিমফ্ল্যাম বিক্রয়কে বাদ দিয়ে) তবে, লোকেরা টিডিডি জিনিস হওয়ার অনেক আগে থেকেই কাজের বৈশিষ্ট্য তৈরি করছিল। তারা চলে যাওয়ার অনেক পরে। মনে রাখবেন, টিডিডি পরীক্ষার একটি সুশৃঙ্খল উপায়। এটি পরীক্ষার একমাত্র শৃঙ্খলাবদ্ধ উপায় নয়।
candied_orange

112

আমি বাকী উত্তরগুলির সাথে একমত হই তবে সময় পার্থক্যের প্রশ্নটি সরাসরি কী তা উত্তর দিতে answer

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

তার ফলাফলগুলি এরকম ছিল:

টিমের অগ্রগতি এবং আউটপুট পরীক্ষার সাথে এবং না মাপা

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


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

7
@ জিমি জেমস এটি একটি কেস স্টাডি, যা ব্যবসায় ব্যাপকভাবে ব্যবহৃত হয় এবং বিজ্ঞানের ক্ষেত্রে যখন প্রচুর পরিমাণে পুনরুত্পাদনযোগ্য পরীক্ষা চালানো সম্ভব হয় না (তখনও) অনেক কিছু ঘটে। সেগুলিতে পূর্ণ মনোবিজ্ঞানের জার্নাল রয়েছে। "অবৈজ্ঞানিক" সঠিক শব্দ নয়।
djechlin

25
কেন আমি মনে করি যদি সেই কেস স্টাডির ফলাফল যদি বিপরীতভাবে দেখায় তবে তা বইটিতে তৈরি করা যেত না ;-)?
ডক ব্রাউন

11
@ ডকব্রাউন আমি অবাক হয়েছি যে সঠিক উত্তরগুলির সাথে একটি আবিষ্কার করার আগে কতগুলি কেস স্টাডি করা হয়েছিল এবং বাতিল করা হয়েছিল :-)
gbjbaanb

6
@ জিমি জেমস যা প্রায় অবশ্যই বিজ্ঞানের হিসাবে যোগ্যতা অর্জন করে। আরও একজন বিজ্ঞানী এই স্টাডির "n = 1" কেস স্টাডিটি পড়তে পারেন, এটি আরও অধ্যয়নের জন্য উপযুক্ত সিদ্ধান্ত নিতে পারেন, তারপরে দীর্ঘমেয়াদে একটি বৃহত্তর পরিসংখ্যানের স্টাটিস্টিকাল স্টাডি বা এমনকি একটি নিয়ন্ত্রিত পরীক্ষা চালিয়ে যেতে পারেন এবং এটি নিশ্চিত বা অস্বীকার করতে পারেন। বিজ্ঞান ঠিক এভাবেই কাজ করে। এভাবেই কাজ করার কথা। তুমি কেমন বিজ্ঞান এখানে কাজ করে আরও পড়তে পারেন en.wikipedia.org/wiki/Scientific_method
djechlin

30

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

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

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


1
অতিরিক্ত প্রতিবন্ধকতা আরোপ করা আরও আকর্ষণীয় হবে: কোনও পরিবর্তনযোগ্য রাষ্ট্র, সলাইড অনুসরণ না করে, স্থিতিশীল টাইপিং, নির্ভর করে না null, আবশ্যকতার উপর কার্যকরী, কোড চুক্তি, স্থির বিশ্লেষণ, স্বয়ংক্রিয় রিফ্যাক্টরিং, কোনও আইওসি পাত্রে থাকে না (তবে ডিআই) ইত্যাদি I ইউনিট পরীক্ষার হ্রাস হবে (তবে অদৃশ্য হবে না)।
ডেন

24

ভাল হয়ে গেছে, অতিরিক্ত বাগগুলির সুবিধা ধরা না পড়ায় ইউনিট টেস্টের সাহায্যে বিকাশ দ্রুততর হতে পারে।

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

  1. কোড পরিবর্তন করুন
  2. অ্যাপ্লিকেশন সংকলন
  3. অ্যাপ্লিকেশন চালান
  4. প্রয়োগ লগ ইন করুন
  5. একটি উইন্ডো খুলুন
  6. অন্য উইন্ডোটি খুলতে সেই উইন্ডো থেকে একটি আইটেম নির্বাচন করুন
  7. সেই উইন্ডোতে কিছু নিয়ন্ত্রণ সেট করুন এবং একটি বোতামে ক্লিক করুন

এবং অবশ্যই, সর্বোপরি, এটি সঠিকভাবে পেতে সাধারণত কয়েক রাউন্ড ট্রিপ নেয়।

এখন, আমি যদি ইউনিট পরীক্ষা ব্যবহার করছি? তারপরে প্রক্রিয়াটি আরও দেখতে লাগে:

  1. একটি পরীক্ষা লিখুন
  2. পরীক্ষা চালান, নিশ্চিত হয়ে নিন যে এটি প্রত্যাশিত পথে ব্যর্থ হয়েছে
  3. কোড লিখুন
  4. আবার পরীক্ষা চালান, দেখুন এটি পাস হয়েছে

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

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


1
এবং এনক্রাঞ্চের মতো কিছু ব্যবহার করা প্রতিক্রিয়া লুপটিকে আরও শক্ত করে তুলতে 2 এবং 4 পদক্ষেপ কেটে ফেলতে পারে।
ইউফোরিক

আইএমএইচও, "আমাকে এখনও ম্যানুয়ালি অ্যাপ্লিকেশনটি চালাতে হবে" একটি গুরুত্বপূর্ণ পর্যবেক্ষণ। রুপার বুলেট নেই।
ডেন

20

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

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

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

http://rbcs-us.com/documents/Why-Most-Unit-Testing-is-Waste.pdf


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


9
"পরীক্ষার স্বার্থে (তুচ্ছ বা টোটোলজিকাল পরীক্ষা) পরীক্ষা করা, বা কিছু স্বেচ্ছাচারিত মেট্রিকের (কোড কভারেজের মতো) আঘাত করা, এটি কার্গো-কাল্ট প্রোগ্রামিং।" তাই সত্য এবং তাই খুব ভাল। এমনভাবে পরীক্ষা করুন যাতে আপনি একটি দুর্দান্ত খারাপের মতো অনুভব করেন - নিজেকে একজন গুপ্তচর, অভিজাত অ্যাথলেট হিসাবে ভাবেন ... "সরকারি বিভাগ" এর মতো পরীক্ষা করবেন না। তুমি জান?
ফ্যাটি

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

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

9

এটি ব্যক্তির উপর নির্ভর করে পাশাপাশি আপনি যে কোডটির সাথে কাজ করছেন তার জটিলতা এবং আকারের উপর নির্ভর করে।

আমার জন্য, বেশিরভাগ প্রকল্পে, ইউনিট পরীক্ষা লেখার অর্থ আমি প্রায় 25% দ্রুত কাজটি সম্পন্ন করি। হ্যাঁ, এমনকি পরীক্ষাগুলি লেখার সময়ও অন্তর্ভুক্ত।

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


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

1
@ কাই - +1 আমি টিডিডি চেষ্টা করার আগে কয়েক সপ্তাহ পড়েছি। আমি খুঁজে পেলাম সবই পড়ি। আমি বই পড়ি। আমি উদাহরণস্বরূপ সমস্ত সুপরিচিত চতুর ব্লগটি পড়েছি। আমি xUnit টেস্ট প্যাটার্নগুলি কভার-টু-কভার পড়েছি । প্রথম কয়েক সপ্তাহ, এটি এখনও আমাকে দ্বিগুণ সময় নিয়েছে।
জুলে

2
আমি রাজী. টিডিডি কঠিন। মানসিকতা কঠিন। যে কেউ "প্রথমে পরীক্ষাগুলি লিখুন" এবং দাবি করে যে এটি বিনামূল্যে এটি কীভাবে করবেন তা জানেন না। এটি অনুশীলন লাগে।
duffymo

@ কাই: একই কারণে অনেক লোক স্পর্শ-টাইপ করতে পারে না। তারা একবার চেষ্টা করেছিল এবং পুরো ঘন্টা পরে এখনও আগের চেয়ে দ্রুত কোনও টাইপ করছে না ;-)
স্টিভ জেসোপ

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

4

প্রশ্নটি হল, অনির্ধারিত কোডের তুলনায় ইউনিট-পরীক্ষিত কোড লেখার ক্ষেত্রে কতটা সময় পার্থক্য থাকে এবং প্রকল্পের ক্ষেত্রটি প্রশস্ত হওয়ার সাথে কীভাবে সেই সময়ের পার্থক্য স্কেল হয়?

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

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

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

ফলস্বরূপ, যথেষ্ট পরিমাণে বাগ উত্পাদনে পালিয়ে যায়, যা আমাকে ঠিক করতে হবে এবং ফলস্বরূপ আমার অন্যান্য প্রকল্পগুলি ফিরিয়ে আনবে।

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

আরও ভাল প্রশ্ন হতে পারে:

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

পড়াশোনা একটি দ্বি-পর্যায়ে প্রক্রিয়া: এটি যথেষ্ট ভাল করতে শিখুন, তারপরে আরও দ্রুত এটি শিখুন।


3

কিছু দিক বিবেচনা করতে হবে, অন্য উত্তরে উল্লেখ নেই।

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

সারাংশ

টিডিডি দিয়ে শুরু করার সময় আপনি "সময়-সীমাবদ্ধ কাজের পরিবেশের" অধীনে থাকা অবস্থায় "ব্যয়ের চেয়ে বেশি উপকার" অবস্থানে পৌঁছানো শক্তিশালী, বিশেষত যদি "চালাক পরিচালক" থাকে যা আপনাকে "ব্যয়বহুল, অকেজো থেকে মুক্তি দিতে বলে" পরীক্ষার স্টাফ "

দ্রষ্টব্য: "ইউনিট টেস্টিং" এর অর্থ "বিচ্ছিন্নতায় টেস্টিং মডুলগুলি"।

দ্রষ্টব্য: "রিগ্রেশন টেস্টিং" সহ আমি বোঝাতে চাইছি

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

প্রুফরিডিং দরকার (পরীক্ষার সাহিত্যের সমতুল্য?)
জেডিগোগস

3

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

পরীক্ষা না লিখে, অনেকটা ক্রেডিট কার্ড থাকার মতো; আমরা আরও ব্যয় করতে বা আরও কোড লেখার ঝোঁক করি। আরও কোডে আরও বাগ রয়েছে।

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

আস্তে আস্তে শুরু করুন। আপনি বিচারের আগে কিছু সাবলীলতা তৈরি করুন। আপনি সর্বদা থামাতে পারেন।


3

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

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

আমি বলছিলাম পরীক্ষাটি ভাল, তবে আপনি তাড়াতাড়ি পরীক্ষা করে নিশ্চিত হন এবং লাভ কোথায় তা পরীক্ষা করে নিন।


1
"আমার কি সত্যই ভিবিএর জন্য একটি পরীক্ষা মডিউল বিকাশ করা উচিত?" অভিশাপ আপনার ঠিক করা উচিত। rubberduckvba.com/Features#unitTesting
RubberDuck

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

সমস্ত ন্যায্য পয়েন্টসমূহ @ আর্থার হ্যাভলিসেক।
রাবারডাক

2
লিখিত পরীক্ষাগুলি এখনও ভিবিএতে তুচ্ছ। কিছু ইউনিটেস্ট ফ্রেমওয়ার্কগুলিতে সমস্ত অভিনব বৈশিষ্ট্য রয়েছে? এটি আরও শক্ত, তবে এমন একটি প্রোগ্রাম চালানো mainTest()যা আপনার সমস্ত পরীক্ষার মডিউলগুলিকে কল করে really
এন্ডারল্যান্ড

1

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

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

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

বিকাশকারীরা বুঝতে পারেন যে পরে বাগ সংশোধন করা আরও ব্যয়বহুল, তবে এটি তার পিছনে ফ্লিপ করুন। আপনি যদি এখন কোড করেন তার কোডে যদি আপনাকে প্রতিদিন 500 ডলার বা আপনি টিডিডি উপায়ে লিখেন তবে আপনাকে 2nd 1000 প্রদান করা যেতে পারে, আপনি সেই দ্বিতীয় ব্যক্তিকে অফার দেওয়ার হাত বন্ধ করবেন। আপনি যত তাড়াতাড়ি পরীক্ষা-নিরীক্ষা হিসাবে দেখা বন্ধ করেন এবং এটিকে অর্থ সঞ্চয়কারী হিসাবে দেখেন, আপনি তত ভাল হবেন।


আপনার প্রথম বাক্যে সেই জিনিসটিকে
বিড়াল

0

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

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

এই উন্নতির অংশটি ছিল আমার কাছে কম উত্পাদন বাগ ছিল যার ফলস্বরূপ কম বাধা সৃষ্টি হয়েছিল -> যে কোনও সময়ে আমার আরও ভাল ফোকাস ছিল।

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

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


0

কেবল পূর্ববর্তী উত্তরগুলির পরিপূরক হিসাবে: মনে রাখবেন পরীক্ষা করা কোনও উদ্দেশ্য নয়। পরীক্ষাগুলি তৈরির উদ্দেশ্যটি হ'ল আপনার অ্যাপ্লিকেশনটি বিবর্তনের মাধ্যমে, অপ্রত্যাশিত প্রেক্ষাপটে ইত্যাদির মধ্যে প্রত্যাশা অনুযায়ী আচরণ করা is

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

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

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

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