পরীক্ষা চালিত নকশা গ্রহণ করে আমি কী হারাব?
কেবল নেতিবাচক তালিকা; নেতিবাচক আকারে লিখিত সুবিধা তালিকাভুক্ত করবেন না do
পরীক্ষা চালিত নকশা গ্রহণ করে আমি কী হারাব?
কেবল নেতিবাচক তালিকা; নেতিবাচক আকারে লিখিত সুবিধা তালিকাভুক্ত করবেন না do
উত্তর:
বেশ কয়েকটি ডাউনসাইড (এবং আমি দাবি করছি না কোনও লাভ নেই - বিশেষত কোনও প্রকল্পের ভিত্তি লেখার সময় - এটি শেষে প্রচুর সময় সাশ্রয় করত):
আপনি যদি "রিয়েল" টিডিডি করতে চান (পড়ুন: প্রথমে লাল, সবুজ, রিফ্যাক্টর পদক্ষেপের সাথে পরীক্ষা করুন) তবে আপনাকে যখন ইন্টিগ্রেশন পয়েন্টগুলি পরীক্ষা করতে চান তখন আপনাকে মক / স্টাবগুলিও ব্যবহার করতে হবে।
আপনি যখন উপদ্রবগুলি ব্যবহার শুরু করেন, কিছুক্ষণ পরে, আপনি নির্ভরতা ইনজেকশন (ডিআই) এবং একটি বিপরীতমুখী নিয়ন্ত্রণ (আইওসি) ধারক ব্যবহার শুরু করতে চাইবেন। এটি করার জন্য আপনাকে প্রতিটি কিছুর জন্য ইন্টারফেস ব্যবহার করতে হবে (যার মধ্যে অনেকগুলি সমস্যা রয়েছে)।
দিনের শেষে, আপনাকে "প্লেইন ওল্ড ওয়ে" না করেই আপনাকে অনেক বেশি কোড লিখতে হবে। কেবল গ্রাহক শ্রেণীর পরিবর্তে আপনাকে ইন্টারফেস, একটি মক ক্লাস, কিছু আইওসি কনফিগারেশন এবং কয়েকটি পরীক্ষাও লিখতে হবে।
এবং মনে রাখবেন যে পরীক্ষার কোডটিও বজায় রাখা এবং যত্ন নেওয়া উচিত। টেস্টগুলি প্রতিটি কিছুর মতো পঠনযোগ্য হওয়া উচিত এবং ভাল কোড লিখতে সময় লাগে।
অনেকগুলি বিকাশকারী এই সমস্ত "সঠিক উপায়ে" কীভাবে করবেন তা যথেষ্ট বোঝে না। তবে যেহেতু সকলেই তাদের বলে যে টিডিডি হ'ল সফটওয়্যার বিকাশের একমাত্র সত্য উপায়, তারা কেবল তাদের যথাসাধ্য চেষ্টা করে।
এটি মনে করার চেয়েও শক্ত। প্রায়শই টিডিডি দিয়ে করা প্রকল্পগুলি অনেকগুলি কোডের সাথে শেষ হয় যা সত্যই কেউ বুঝতে পারে না। ইউনিট পরীক্ষাগুলি প্রায়শই ভুল জিনিস, ভুল উপায়ে পরীক্ষা করে। এবং কেউ একমত হয় না যে একটি ভাল পরীক্ষা কেমন হওয়া উচিত, এমনকি তথাকথিত গুরুরাও নয়।
এই সমস্ত পরীক্ষাগুলি "সিস্টেম পরিবর্তন" (রিফ্যাক্টরিংয়ের বিপরীতে) আপনার সিস্টেমের আচরণ এবং সাধারণ পরিবর্তনগুলি কেবল খুব কঠোর এবং সময় সাপেক্ষ হয়ে ওঠে make
আপনি যদি টিডিডি সাহিত্য পড়েন তবে সর্বদা খুব ভাল উদাহরণ পাওয়া যায় তবে প্রায়শই বাস্তব জীবনের অ্যাপ্লিকেশনগুলিতে আপনার অবশ্যই একটি ইউজার ইন্টারফেস এবং একটি ডাটাবেস থাকতে হবে। এখানেই টিডিডি সত্যিই শক্ত হয়ে যায় এবং বেশিরভাগ উত্স ভাল উত্তর দেয় না। এবং যদি তারা তা করে থাকে তবে এটি সর্বদা আরও বিমূর্ততা জড়িত: মক অবজেক্টস, ইন্টারফেসে প্রোগ্রামিং, এমভিসি / এমভিপি প্যাটার্নস ইত্যাদি, যার জন্য আবার অনেক জ্ঞানের প্রয়োজন হয়, এবং ... আপনাকে আরও কোড লিখতে হবে।
সুতরাং সাবধান হন ... আপনার যদি উত্সাহী দল না থাকে এবং কমপক্ষে অভিজ্ঞ অভিজ্ঞ বিকাশকারী না হন যিনি ভাল পরীক্ষা লিখতে জানেন এবং ভাল আর্কিটেকচার সম্পর্কে কয়েকটি জিনিস জানেন তবে আপনাকে টিডিডি রাস্তায় নামার আগে সত্যিই দু'বার ভাবতে হবে ।
আপনি যখন একটি বিশাল সংখ্যক পরীক্ষা-নিরীক্ষার পয়েন্টে পৌঁছান, সিস্টেমটি পরিবর্তনের জন্য আপনার কয়েকটি বা সমস্ত পরীক্ষা পুনরায় লেখার প্রয়োজন হতে পারে, পরিবর্তিতগুলির দ্বারা কোনটি অকার্যকর হয়ে পড়েছে তার উপর নির্ভর করে। এটি একটি তুলনামূলকভাবে দ্রুত পরিবর্তনকে খুব সময় সাশ্রয়ী এক হিসাবে রূপান্তর করতে পারে।
এছাড়াও, আপনি সম্ভবত ভাল ডিজাইনের প্রিন্সিপালের চেয়ে টিডিডির উপর ভিত্তি করে ডিজাইনের সিদ্ধান্ত নেওয়া শুরু করতে পারেন। আপনার কাছে একটি খুব সহজ, সহজ সমাধান থাকতে পারে যেখানে টিডিডি যেভাবে দাবি করেন তা পরীক্ষা করা অসম্ভব, আপনার কাছে এখন আরও জটিল সিস্টেম রয়েছে যা আসলে ভুলগুলির প্রবণতা।
if part of the system is covered by tests and they pass, then everything is fine (including design)
।
আমি মনে করি আমার পক্ষে সবচেয়ে বড় সমস্যাটি "এতে প্রবেশ করা" সময় লাগে এমন বিশাল সময়ের ক্ষতি। আমি এখনও টিডিডি নিয়ে আমার যাত্রার শুরুতে খুব বেশি আছি (আপনি যদি আগ্রহী হন তবে আমার পরীক্ষামূলক অ্যাডভেঞ্চারগুলি আপডেট করার জন্য আমার ব্লগটি দেখুন ) এবং আমি আক্ষরিকভাবে কয়েক ঘন্টা শুরু করতে শুরু করেছি।
আপনার মস্তিষ্ককে "টেস্টিং মোডে" আনতে অনেক সময় লাগে এবং "টেস্টেবল কোড" লেখা নিজের মধ্যে দক্ষতা।
টিবিএইচ, আমি ব্যক্তিগত পদ্ধতিগুলি জনসাধারণ্যে তৈরির বিষয়ে জেসন কোহেনের মন্তব্যের সাথে শ্রদ্ধার সাথে একমত নই , এটি কী তা নয়। আমি আমার নতুন কাজের পদ্ধতিতে আগের চেয়ে আর পাবলিক পদ্ধতি তৈরি করি নি । এটি যদিও আর্কিটেকচারাল পরিবর্তনগুলি জড়িত করে এবং আপনাকে কোডের "হট প্লাগ" মডিউলগুলি অন্য সমস্ত কিছু পরীক্ষা করা সহজ করার জন্য অনুমতি দেয়। এটি করার জন্য আপনার কোডটির ইন্টারনালগুলি আরও অ্যাক্সেসযোগ্য করা উচিত নয় । অন্যথায় আমরা সর্বজনীন হওয়ার সাথে সাথে স্কয়ার একে ফিরে এসেছি, সেখানে এনক্যাপসুলেশনটি কোথায়?
সুতরাং, (সংক্ষেপে)
পিএস: আপনি যদি ইতিবাচক লিঙ্কগুলি চান, আমি এটিতে বেশ কয়েকটি প্রশ্ন জিজ্ঞাসা করেছি এবং উত্তর দিয়েছি, আমার প্রোফাইলটি দেখুন ।
কয়েক বছর যাবত আমি টেস্ট চালিত বিকাশের অনুশীলন করেছি, আমাকে বলতে হবে সবচেয়ে বড় ডাউনসাইডগুলি হ'ল:
টিডিডি জোড়ায় সেরা হয়। একটির জন্য, কেবলমাত্র যদি / অন্য বিবৃতিটি কীভাবে লিখতে হয় তা আপনি কীভাবে জানেন যখন কেবল প্রয়োগকরণটি লেখার তাগিদকে প্রতিহত করা শক্ত । তবে একটি জুড়ি আপনাকে কাজে রাখবে কারণ আপনি তাকে কাজে রাখেন। দুঃখের বিষয়, অনেক সংস্থাগুলি / পরিচালকদের মনে হয় না যে এটি সম্পদের একটি ভাল ব্যবহার। একটি বৈশিষ্ট্য লেখার জন্য কেন দু'জনের জন্য অর্থ প্রদান করবেন, যখন আমার দুটি বৈশিষ্ট্য একই সাথে করা দরকার?
কিছু লোকের ইউনিট পরীক্ষা লেখার জন্য ধৈর্য থাকে না। কিছু তাদের কাজ নিয়ে খুব গর্বিত। বা, কিছু যেমন পঁচা পদ্ধতিগুলি / ফাংশনগুলি দেখার মত পর্দার শেষ প্রান্তে রক্ত ঝরে যায়। টিডিডি সবার জন্য নয়, তবে আমি সত্যিই এটির ইচ্ছা করি। কোডটি উত্তরাধিকারী যারা হতদরিদ্র আত্মার পক্ষে এটি জিনিসপত্র রক্ষণাবেক্ষণকে এত সহজ করে তুলবে।
আদর্শভাবে, যখন আপনি কোনও খারাপ কোডের সিদ্ধান্ত নেন তখনই আপনার পরীক্ষাগুলি ভেঙে যায়। এটি হ'ল, আপনি ভেবেছিলেন সিস্টেমটি একরকম কাজ করেছে, এবং এটি সক্রিয় হয়েছে didn't একটি পরীক্ষা, বা একটি (ছোট) পরীক্ষাগুলি ভাঙ্গার দ্বারা, এটি আসলে সুসংবাদ। আপনার নতুন কোডটি সিস্টেমে কীভাবে প্রভাব ফেলবে তা আপনি ঠিক জানেন । তবে, যদি আপনার পরীক্ষাগুলি খারাপভাবে লিখিত হয়, শক্তভাবে মিলিত হয় বা আরও খারাপ হয়, উত্পন্ন হয় ( কাশি ভিএস টেস্ট), তবে আপনার পরীক্ষাগুলি বজায় রাখা দ্রুত গায়দার হতে পারে। এবং পর্যাপ্ত পরীক্ষার ফলে তারা আরও কাজ করতে শুরু করে যে তারা যে পরিমাণ অনুমানের মূল্য তৈরি করছে তা পরীক্ষা-নিরীক্ষা মুছে ফেলা হবে যখন শিডিউলগুলি সংকুচিত হয়ে যায় (উদাহরণস্বরূপ, এটি ক্র্যাঙ্কিংয়ের সময় হয়ে যায়)
আদর্শভাবে, আবার, আপনি যদি পদ্ধতিটি মেনে চলেন তবে আপনার কোডটি ডিফল্টরূপে 100% পরীক্ষিত হবে। সাধারণত, চিন্তাভাবনা, আমি 90% এর ওপরের দিকে কোড কভারেজ দিয়ে শেষ করি। এটি সাধারণত যখন আমার কিছু টেম্পলেট শৈলীর আর্কিটেকচার থাকে এবং বেসটি পরীক্ষা করা হয় এবং আমি কোণগুলি কাটতে চেষ্টা করি এবং টেম্পলেট কাস্টমাইজেশন পরীক্ষা না করি। এছাড়াও, আমি এটি খুঁজে পেয়েছি যে যখন আমি নতুন বাধার মুখোমুখি হয়েছি যখন এর আগে আমার মুখোমুখি হয়নি, তখন এটি পরীক্ষা করার ক্ষেত্রে আমার একটি শেখার বক্ররেখা থাকে। আমি পুরানো কুল পথের কোডের কয়েকটি লাইন লিখতে স্বীকার করব, তবে আমি সত্যিই এটি 100% পছন্দ করতে চাই। (আমি অনুমান করি যে আমি স্কুলে একজন ওভার অর্জনকারী, স্কুল)।
তবে, আমি এটি দিয়েই বলব যে টিডিডি-র সুবিধাগুলি এই সহজ ধারণার জন্য নেতিবাচকতা ছাড়িয়ে যায় যে আপনি যদি নিজের অ্যাপ্লিকেশনটি কভার করে এমন একটি ভাল সেট অর্জন করতে পারেন তবে এতটাই নাজুক না হন যে একটি পরিবর্তন সেগুলি ভেঙে ফেলে তবে আপনি আপনার প্রকল্পের 300 টি দিনে আপনি যেমন নতুন বৈশিষ্ট্য যুক্ত করতে সক্ষম হবেন আপনি 1 টির মতো করেছিলেন। এটি যারা তাদের টিডিডি চেষ্টা করে তাদের সমস্ত বাগ-চালিত কোডটিতে ম্যাজিক বুলেট বলে ভাবছেন তাদের সাথে এটি ঘটবে না এবং তাই তারা মনে করে এটি এটি করতে পারে কাজ না, সময়কাল।
ব্যক্তিগতভাবে আমি খুঁজে পেয়েছি যে টিডিডি দিয়ে আমি সহজ কোড লিখি, নির্দিষ্ট কোড সমাধান কার্যকর হবে কিনা তা নিয়ে আমি বিতর্ক করতে কম সময় ব্যয় করি এবং যে কোডের রেখাটি নির্ধারিত মানদণ্ডগুলি পূরণ করে না তার পরিবর্তন করার আমার কোনও ভয় নেই that দলটি.
টিডিডি হ'ল মাস্টার্সের পক্ষে একটি কঠোর শৃঙ্খলা এবং আমি কয়েক বছর ধরে এটি করেছি এবং আমি এখনও সমস্ত সময় পরীক্ষার নতুন কৌশল শিখি। এটি সামনের দিকে একটি বিশাল সময়ের বিনিয়োগ, তবে, দীর্ঘমেয়াদে, আপনার যদি স্বয়ংক্রিয় ইউনিট পরীক্ষা না করে থাকে তবে আপনার স্থায়িত্ব অনেক বেশি হবে। এখন, যদি কেবল আমার কর্তারা এটিকে খুঁজে বের করতে পারতেন।
আপনার প্রথম টিডিডি প্রকল্পে দুটি বড় ক্ষতি, সময় এবং ব্যক্তিগত স্বাধীনতা রয়েছে
আপনি সময় হারাবেন কারণ:
আপনি ব্যক্তিগত স্বাধীনতা হারিয়েছেন কারণ:
আশাকরি এটা সাহায্য করবে
এই পরীক্ষাগুলি পাস করার জন্য কোডটি লেখার আগে আপনার ক্লাসগুলি কীভাবে পরিচালিত হবে তা পরিকল্পনা করার জন্য টিডিডি আপনার প্রয়োজন। এটি একটি প্লাস এবং বিয়োগ উভয়ই।
"ভ্যাকুয়াম" -তে পরীক্ষা লিখতে আমার পক্ষে কঠিন মনে হচ্ছে - এর আগে কোনও কোড লেখা হয়েছে। আমার অভিজ্ঞতায় আমি আমার পরীক্ষাগুলি ঘুরে দেখি যখনই আমি ক্লাস লেখার সময় অনিবার্যভাবে কিছু চিন্তা করি যা আমি আমার প্রাথমিক পরীক্ষাগুলি লেখার সময় ভুলে গিয়েছিলাম। তারপরে সময়টি কেবল আমার ক্লাসগুলিকেই সংশোধন করার নয়, তবে আমার পরীক্ষাগুলিও রয়েছে। এটি তিন বা চারবার পুনরাবৃত্তি করুন এবং হতাশ হতে পারে।
আমি আমার ক্লাসের একটি খসড়া লিখতে পছন্দ করি তারপরে ইউনিট পরীক্ষার ব্যাটারি লিখি (এবং বজায় রাখি)। আমার একটি খসড়া হওয়ার পরে, টিডিডি আমার পক্ষে ভাল কাজ করে। উদাহরণস্বরূপ, যদি কোনও বাগের প্রতিবেদন করা হয়, আমি সেই বাগটি শোষণের জন্য একটি পরীক্ষা লিখব এবং তারপরে কোডটি ঠিক করব যাতে পরীক্ষাটি পাস হয়।
টিডিডি দিয়ে প্রোটোটাইপিং খুব কঠিন হতে পারে - আপনি কোন রাস্তায় কোনও সমাধান নিতে যাচ্ছেন তা যখন আপনি নিশ্চিত নন, তখন পরীক্ষার সম্মুখভাগে লেখা কঠিন হতে পারে (খুব বিস্তৃত ব্যতীত অন্য)। এটি একটি ব্যথা হতে পারে।
সত্যই আমি মনে করি না যে "মূল বিকাশ" এর জন্য বিশাল সংখ্যক প্রকল্পের বাস্তব বাস্তবতা রয়েছে, যদিও; এটি যতটা হওয়া উচিত তার চেয়ে অনেক বেশি কথা বলা হয়েছে, সাধারণত যারা বিশ্বাস করেন যে তাদের কোড যথেষ্ট ভাল তাদের পরীক্ষার দরকার নেই (এটি কখনই হয় না) এবং যে লোকেরা কেবল সরল তাদের এগুলি লিখতে বিরক্ত করতে পারে না।
ভাল, এবং এই প্রসারিত, আপনি আপনার পরীক্ষা ডিবাগ করতে হবে। এছাড়াও, পরীক্ষাগুলি লেখার জন্য একটি নির্দিষ্ট সময় আছে, যদিও বেশিরভাগ লোকজন একমত যে এটি একটি আপ-ফ্রন্ট বিনিয়োগ যা অ্যাপ্লিকেশনটির আজীবন জুড়ে সাশ্রয়যোগ্য ডিবাগিং এবং স্থায়িত্ব উভয় ক্ষেত্রেই পরিশোধ করে।
এটির সাথে আমি ব্যক্তিগতভাবে সবচেয়ে বড় সমস্যাটি পেয়েছি, যদিও প্রকৃতপক্ষে পরীক্ষাগুলি লেখার জন্য শৃঙ্খলা অর্জন করা। একটি দলে, বিশেষত একটি প্রতিষ্ঠিত দলে, তাদের বোঝানো কঠিন যে তাদের ব্যয় করা সময়টি উপযুক্ত।
যদি আপনার পরীক্ষাগুলি খুব গভীরভাবে না হয় তবে আপনি পরীক্ষাগুলি পাস করার কারণে আপনি "সবকিছুই কাজ করে" এর মিথ্যা অনুভূতিতে পড়তে পারেন। তাত্ত্বিকভাবে যদি আপনার পরীক্ষাগুলি পাস হয়, কোডটি কাজ করছে; তবে আমরা যদি প্রথমবারের মতো কোডটি নিখুঁতভাবে লিখতে পারি তবে আমাদের পরীক্ষার দরকার পড়েনি। এখানকার নৈতিকতা হ'ল কোনও কিছু সম্পূর্ণ কল করার আগে নিজেরাই স্যানিটি পরীক্ষা করা নিশ্চিত করা, কেবল পরীক্ষার উপর নির্ভর করবেন না।
এই নোটটিতে, যদি আপনার স্যানিটি পরীক্ষা করে পরীক্ষা করা হয় না এমন কিছু খুঁজে পাওয়া যায়, তবে নিশ্চিত হয়ে ফিরে যান এবং এটির জন্য একটি পরীক্ষা লিখুন।
টিডিডির খারাপ দিকটি হ'ল এটি সাধারণত 'methodগিল' পদ্ধতির সাথে দৃ associated়ভাবে জড়িত থাকে যা কোনও সিস্টেমের ডকুমেন্টেশনের উপর কোনও গুরুত্ব দেয় না , বরং কোনও পরীক্ষার 'কেন' কেবল কোনও বিকাশকারীর মধ্যে থাকে তার চেয়ে একটি নির্দিষ্ট মান ফেরত দেওয়া উচিত তার পিছনে বোঝা behind মাথা।
বিকাশকারীরা ছেড়ে যাওয়ার বা ভুলে যাওয়ার সাথে সাথে পরীক্ষাটি একটি নির্দিষ্ট মান দেয় এবং অন্য কোনওটি নয়, আপনি ভুল হয়ে যান। টিডিডি ঠিক আছে যদি এটি পর্যাপ্তভাবে ডকুমেন্টেড এবং মানব-পঠনযোগ্য (যেমন পয়েন্টি-কেশিক পরিচালক) ডকুমেন্টেশন দ্বারা ঘিরে থাকে তবে 5 বছরের মধ্যে উল্লেখ করা যেতে পারে যখন বিশ্বের পরিবর্তন হয় এবং আপনার অ্যাপটিরও প্রয়োজন হয় needs
আমি যখন ডকুমেন্টেশনের কথা বলি, এটি কোডের কোনও ঝাপসা নয়, এটি সরকারী লেখাই যা প্রয়োগের বাহ্যিক যেমন ব্যবহারের ক্ষেত্রে এবং পটভূমির তথ্য যা পরিচালক, আইনজীবি এবং দরিদ্র স্যাপ দ্বারা উল্লেখ করা যেতে পারে যাকে আপডেট করতে হবে ২০১১ সালে আপনার কোড
আমি বেশ কয়েকটি পরিস্থিতির মুখোমুখি হয়েছি যেখানে টিডিডি আমাকে উন্মাদ করে তোলে। কিছু নাম রাখার জন্য:
টেস্ট কেস রক্ষণাবেক্ষণযোগ্যতা:
আপনি যদি কোনও বড় উদ্যোগে থাকেন তবে অনেকগুলি সম্ভাবনা হ'ল আপনি নিজেই পরীক্ষার কেসগুলি নিজের হাতে লিখতে হবে না বা কমপক্ষে বেশিরভাগগুলি আপনি যখন কোম্পানিতে প্রবেশ করেন তখন অন্য কেউ লিখেছেন। অ্যাপ্লিকেশনটির বৈশিষ্ট্যগুলি সময়ে সময়ে পরিবর্তিত হয় এবং যদি আপনার এইচপি কোয়ালিটি সেন্টারের মতো জায়গায় কোনও সিস্টেম না থাকে তবে সেগুলি ট্র্যাক করার জন্য আপনি কোনও সময়েই পাগল হয়ে যাবেন।
এর অর্থ হ'ল নতুন দলের সদস্যদের পরীক্ষার ক্ষেত্রে কী ঘটছে তা দখল করতে যথেষ্ট পরিমাণ সময় লাগবে take পরিবর্তে, এটি আরও বেশি অর্থের মধ্যে অনুবাদ করা যেতে পারে।
পরীক্ষা অটোমেশন জটিলতা:
আপনি যদি কিছু বা সমস্ত পরীক্ষার কেস মেশিনে চালিতযোগ্য টেস্ট স্ক্রিপ্টগুলিতে স্বয়ংক্রিয়ভাবে চালিত করেন তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে এই টেস্ট স্ক্রিপ্টগুলি তাদের সম্পর্কিত ম্যানুয়াল পরীক্ষার ক্ষেত্রে এবং অ্যাপ্লিকেশন পরিবর্তনের সাথে সামঞ্জস্য করছে।
এছাড়াও, আপনি কোডগুলি ডিবাগ করার জন্য সময় ব্যয় করবেন যা আপনাকে বাগগুলি ধরতে সহায়তা করে। আমার মতে, এই বাগগুলির বেশিরভাগই অটোমেশন পরীক্ষার স্ক্রিপ্টে অ্যাপ্লিকেশন পরিবর্তনগুলি প্রতিফলিত করতে টেস্টিং টিমের ব্যর্থতা থেকে আসে। ব্যবসায়িক যুক্তি, জিইউআই এবং অন্যান্য অভ্যন্তরীণ সামগ্রীর পরিবর্তনগুলি আপনার স্ক্রিপ্টগুলি অবিশ্বাস্যভাবে চলমান বা চলমান বন্ধ করতে পারে। কখনও কখনও পরিবর্তনগুলি খুব সূক্ষ্ম এবং সনাক্ত করা কঠিন। একবার আমার সমস্ত স্ক্রিপ্টগুলি ব্যর্থতার কথা জানায় কারণ তারা তাদের গণনাটি টেবিল 1 থেকে প্রাপ্ত তথ্যের উপর ভিত্তি করে যখন টেবিল 1 এখন টেবিল 2 ছিল (কারণ কেউ যদি অ্যাপ্লিকেশন কোডটিতে টেবিলের বিষয়গুলির নাম অদলবদল করে)।
সবচেয়ে বড় সমস্যা হ'ল সেই লোকেরা যারা সঠিক ইউনিট পরীক্ষা লিখতে জানেন না। তারা একে অপরের উপর নির্ভর করে এমন পরীক্ষাগুলি লিখেন (এবং তারা পিঁপড়ের সাথে দৌড়াদৌড়ি করে দুর্দান্ত কাজ করে, তবে আমি যখন তাদেরকে গ্রহন থেকে চালিত করি তখন হঠাৎ করেই ব্যর্থ হয়, কারণ তারা বিভিন্ন ক্রমে চালিত হয়)। তারা এমন পরীক্ষাগুলি লিখেন যা কোনও কিছুরই পরীক্ষা করে না - তারা কেবল কোডটি ডিবাগ করে, ফলাফলটি পরীক্ষা করে এবং পরীক্ষাকে এটিকে "টেস্ট 1" নামে ডাকে। তারা ক্লাস এবং পদ্ধতিগুলির ক্ষেত্রকে আরও প্রশস্ত করে, কেবলমাত্র তাদের জন্য ইউনিট পরীক্ষাগুলি লেখা আরও সহজ হবে। সমস্ত ক্লাসিকাল প্রোগ্রামিং সমস্যাগুলির সাথে ইউনিট পরীক্ষার কোডটি ভয়াবহ (ভারী সংযোগ, এমন পদ্ধতিগুলি যা 500 লাইন দীর্ঘ, হার্ড-কোডিং মান, কোড সদৃশ) এবং এটি বজায় রাখা একটি জাহান্নাম। কিছু অদ্ভুত কারণে লোকেরা ইউনিট পরীক্ষাগুলিকে "আসল" কোডের চেয়ে নিকৃষ্ট কিছু হিসাবে বিবেচনা করে এবং তারা ' তাদের গুণমান সম্পর্কে মোটেও যত্ন নেই। :-(
আপনি লেখার পরীক্ষাগুলিতে ব্যয় করেছেন অনেক সময় lose অবশ্যই, দ্রুত বাগগুলি ধরে এটিকে প্রকল্পের শেষের দিকে রক্ষা করা যেতে পারে।
সবচেয়ে বড় ক্ষতিটি হ'ল আপনি যদি সত্যিই টিডিডি সঠিকভাবে করতে চান তবে আপনাকে সফল হওয়ার আগে আপনাকে অনেক ব্যর্থ হতে হবে। কতগুলি সফ্টওয়্যার সংস্থাগুলি কাজ করে তা দেওয়া হয়েছে (কেএলকে প্রতি ডলার) আপনি শেষ পর্যন্ত বরখাস্ত হয়ে যাবেন। এমনকি আপনার কোডটি দ্রুত, ক্লিনার, বজায় রাখা সহজ, এবং এতে কম বাগ রয়েছে।
আপনি যদি এমন কোনও সংস্থায় কাজ করছেন যা আপনাকে কেএলসিএস দিয়ে অর্থ প্রদান করে (বা প্রয়োগ করা আবশ্যকতাগুলি - এমনকি পরীক্ষিত না হলেও) টিডিডি থেকে দূরে থাকুন (বা কোড পর্যালোচনা, বা জুড়ি প্রোগ্রামিং, বা ধারাবাহিক একীকরণ ইত্যাদি ইত্যাদি)।
আপনার সমস্ত কোড পরীক্ষা করার আগে আপনি "সম্পন্ন" হওয়ার ক্ষমতা হারাবেন।
কোড চালানোর আগে আপনি কয়েক হাজার বা কয়েক হাজার লাইন লেখার ক্ষমতা হারাবেন।
আপনি ডিবাগিংয়ের মাধ্যমে শেখার সুযোগ হারাবেন।
আপনি শিপ কোডটিতে নমনীয়তা হারাবেন যা আপনি নিশ্চিত নন।
আপনি আপনার মডিউলগুলি শক্ত করে দম্পতির স্বাধীনতা হারাবেন।
আপনি নিম্ন স্তরের ডিজাইনের ডকুমেন্টেশন রচনার বিকল্পটি হারাবেন lose
কোড সহ যে স্থিতিশীলতা রয়েছে তা আপনি হারিয়ে ফেলেন যা প্রত্যেকে পরিবর্তন হতে ভয় পায়।
কঠিন, অপ্রত্যাশিত প্রয়োজনীয়তার উপর ফোকাস করা প্রোগ্রামারটির অবিচ্ছিন্ন নিষিদ্ধকরণ। পরীক্ষামূলকভাবে চালিত বিকাশ আপনাকে ইতিমধ্যে জানা, জাগতিক প্রয়োজনীয়তার দিকে মনোনিবেশ করতে বাধ্য করে এবং আপনার বিকাশকে ইতিমধ্যে যা কল্পনা করা হয়েছে তার মধ্যে সীমাবদ্ধ করে।
এটি সম্পর্কে চিন্তা করুন, আপনি নির্দিষ্ট পরীক্ষার ক্ষেত্রে ডিজাইনিং শেষ করতে পারেন, তাই আপনি সৃজনশীল পাবেন না এবং ভাবতে শুরু করবেন না "যদি ব্যবহারকারী এক্স, ওয়াই এবং জেড করতে পারে তবে এটি দুর্দান্ত হবে"। সুতরাং, যখন ব্যবহারকারী সম্ভাব্য শীতল প্রয়োজনীয়তাগুলি এক্স, ওয়াই এবং জেড সম্পর্কে সমস্ত উত্তেজিত হওয়া শুরু করে, আপনার নকশা ইতিমধ্যে নির্দিষ্ট করা পরীক্ষার ক্ষেত্রে খুব দৃ rig়তার সাথে মনোনিবেশ করতে পারে এবং এটি সামঞ্জস্য করা কঠিন হবে।
এটি অবশ্যই একটি দ্বিগুণ তরোয়াল। আপনি যদি নিজের সমস্ত সময় কোনও অনুমেয়যোগ্য, কল্পনাযোগ্য, এক্স, ওয়াই এবং জেডের জন্য ডিজাইনিং করতে ব্যয় করেন যা কোনও ব্যবহারকারী কখনও চাইতে পারে তবে আপনি অবশ্যই অনিবার্যভাবে কোনও কিছুই সম্পূর্ণ করতে পারবেন না। আপনি যদি কিছু সম্পন্ন করেন তবে আপনার কোড / ডিজাইনে আপনি কী করছেন সে সম্পর্কে কারও পক্ষে নিজেকে (নিজেকে অন্তর্ভুক্ত করা) ধারণা থাকা অসম্ভব।
এটি এক্সএমএল-ফিডস এবং ডাটাবেসগুলির মতো "এলোমেলো" ডেটার জন্য কঠিন এবং সময় সাপেক্ষ লেখার পরীক্ষা হতে পারে (এতটা কঠিন নয়)। আমি ইদানীং আবহাওয়ার ডেটা ফিডগুলির সাথে কাজ করে কিছু সময় ব্যয় করেছি। এটির জন্য এটি বেশ বিভ্রান্তিকর লেখার পরীক্ষা, কমপক্ষে টিডিডি নিয়ে আমার খুব বেশি অভিজ্ঞতা নেই বলে।
আপনি একাধিক দায়িত্ব নিয়ে বড় ক্লাস হারাবেন। আপনি সম্ভবত একাধিক দায়িত্ব নিয়ে বড় পদ্ধতি হারাবেন। আপনি রিফ্যাক্টর করার কিছু দক্ষতা হারাতে পারেন, তবে আপনি চুল্লিটির প্রয়োজনীয়তাও হারাবেন।
জেসন কোহেন এমন কিছু বলেছিলেন: টিডিডি আপনার কোডের জন্য একটি নির্দিষ্ট সংস্থা প্রয়োজন। এটি স্থাপত্যগতভাবে ভুল হতে পারে; উদাহরণস্বরূপ, যেহেতু ব্যক্তিগত পদ্ধতিগুলি শ্রেণীর বাইরে কল করা যায় না, তাই পরীক্ষাগুলি পরীক্ষার জন্য আপনাকে পদ্ধতিগুলি বেসরকারী করতে হবে।
আমি বলছি এটি একটি মিস করা বিমূর্ততা নির্দেশ করে - যদি ব্যক্তিগত কোডটি সত্যিই পরীক্ষার প্রয়োজন হয় তবে এটি সম্ভবত একটি পৃথক শ্রেণিতে থাকতে হবে।
ডেভ মান
আপনাকে অ্যাপ্লিকেশনগুলি অন্যভাবে লিখতে হবে: এগুলি সেগুলি পরীক্ষামূলক করে তোলে। প্রথমে এটি কতটা কঠিন তা আপনি অবাক হবেন।
কিছু লোক খুব শক্ত লেখার আগে তারা কী লিখতে হবে সে সম্পর্কে চিন্তাভাবনা আবিষ্কার করে। উপহাসের মত ধারণাগুলি কারও কারও পক্ষেও কঠিন হতে পারে। উত্তরাধিকার অ্যাপ্লিকেশনগুলিতে টিডিডি খুব কঠিন হতে পারে যদি সেগুলি পরীক্ষার জন্য তৈরি করা না হয়। টিডিডি বন্ধুত্বপূর্ণ নয় এমন ফ্রেমওয়ার্কগুলির চারপাশের টিডিডিও লড়াই হতে পারে।
টিডিডি হ'ল একটি দক্ষতা যাতে জুনিয়র দেবগণ প্রথমে লড়াই করতে পারে (মূলত কারণ তাদের এইভাবে কাজ করা শেখানো হয়নি)।
সামগ্রিকভাবে যদিও লোকেরা দক্ষ হয়ে ওঠার সাথে সাথে সমস্যার সমাধান হয়ে যায় এবং আপনি 'গন্ধযুক্ত' কোডটি বিমূর্ত করেন এবং আরও স্থিতিশীল ব্যবস্থা রাখেন।
সব ভাল উত্তর। টিডিডির অন্ধকার দিক এড়াতে আমি কয়েকটি উপায় যুক্ত করব:
আমি অ্যাপগুলিকে তাদের নিজস্ব এলোমেলোভাবে স্ব-পরীক্ষা করতে লিখেছি। নির্দিষ্ট পরীক্ষাগুলি লেখার সমস্যাটি যদি আপনি সেগুলি প্রচুর পরিমাণে লেখেন তবে সেগুলি কেবল আপনার মনে করা কেসগুলি কভার করে। এলোমেলো-পরীক্ষার জেনারেটরগুলি এমন সমস্যা আবিষ্কার করে যা আপনি ভাবেননি।
প্রচুর ইউনিট পরীক্ষার সম্পূর্ণ ধারণাটি বোঝায় যে আপনার কাছে এমন উপাদান রয়েছে যা জটিল ডেটা স্ট্রাকচারের মতো অবৈধ অবস্থায় যেতে পারে। যদি আপনি জটিল ডেটা স্ট্রাকচার থেকে দূরে থাকেন তবে পরীক্ষা করার মতো অনেক কম।
আপনার অ্যাপ্লিকেশন এটিকে যে পরিমাণ অনুমোদন করে, ডিজাইনের সাথে লজ্জা পান যা বিজ্ঞপ্তি, ইভেন্ট এবং পার্শ্ব-প্রতিক্রিয়াগুলির যথাযথ ক্রমের উপর নির্ভর করে। এগুলি সহজেই ফেলে দেওয়া বা স্ক্র্যাম্বল হয়ে যেতে পারে তাই তাদের প্রচুর পরীক্ষার প্রয়োজন।
টিডিডি আপনার কোডের জন্য একটি নির্দিষ্ট সংস্থা প্রয়োজন। এটি অদক্ষ বা পড়া কঠিন হতে পারে। বা এমনকি স্থাপত্যগতভাবেও ভুল; উদাহরণস্বরূপ, যেহেতুprivate
পদ্ধতিগুলিকে শ্রেণীর বাইরে কল করা যায় না পরীক্ষাগুলি পরীক্ষার জন্য আপনাকে পদ্ধতিগুলি বেসরকারী করতে হবে, যা কেবল ভুল।
কোড পরিবর্তন করার সাথে সাথে আপনাকে পরীক্ষাগুলিও পরিবর্তন করতে হবে। রিফ্যাক্টরিংয়ের সাথে এটি অতিরিক্ত কাজ হতে পারে।
আমাকে যোগ করতে দিন যে আপনি যদি কোনও টিডিডি প্রকল্পে বিডিডি নীতি প্রয়োগ করেন তবে আপনি এখানে তালিকাভুক্ত কয়েকটি প্রধান ত্রুটি (বিভ্রান্তি, ভুল বোঝাবুঝি ইত্যাদি) উপশম করতে পারেন। আপনি যদি বিডির সাথে পরিচিত না হন তবে আপনার ড্যান নর্থের ভূমিকাটি পড়া উচিত। কর্মক্ষেত্রে টিডিডি প্রয়োগ করার ফলে উত্থাপিত কয়েকটি সমস্যার উত্তরে তিনি ধারণাটি হাজির করেছিলেন। বিডির সাথে ড্যানের পরিচয় পাওয়া যাবে এখানে ।
আমি কেবল এই পরামর্শটিই দিচ্ছি কারণ বিডিডি এই জাতীয় কিছু নেতিবাচক বিষয়কে সম্বোধন করে এবং ফাঁক-স্টপ হিসাবে কাজ করে। আপনার প্রতিক্রিয়া সংগ্রহ করার সময় আপনি এটি বিবেচনা করতে চাইবেন।
আপনাকে নিশ্চিত করতে হবে যে আপনার পরীক্ষাগুলি সর্বদা আপ টু ডেট থাকে, আপনি যে মুহুর্তে লাল বাতিগুলি উপেক্ষা করতে শুরু করেন সেই মুহূর্তেই পরীক্ষাগুলি অর্থহীন হয়ে যায়।
আপনাকে পরীক্ষাগুলি বিস্তৃত কিনা তা নিশ্চিত করতে হবে, বা একটি বড় ত্রুটি উপস্থিত হওয়ার মুহূর্তে, আপনি আরও বেশি কোড লেখার জন্য সময় কাটাতে দেওয়ার বিষয়ে দৃ convinced়প্রত্যয়ী পদক্ষেপের ব্যবস্থা করেছেন এবং অভিযোগ করবেন যে আপনি অভিযোগ করতে পারেন।
যে ব্যক্তি আমার দলকে চটপট বিকাশের শিক্ষা দিয়েছিল সে পরিকল্পনার প্রতি বিশ্বাস করে না, আপনি কেবলমাত্র ক্ষুদ্রতম প্রয়োজনের জন্যই লিখেছিলেন।
তার মূলমন্ত্রটি ছিল রিফ্যাক্টর, রিফ্যাক্টর, রিফেক্টর। আমি বুঝতে পেরেছিলাম যে রিফ্যাক্টরটির অর্থ 'পরিকল্পনা না করা'।
বিকাশের সময় বাড়ে: প্রতিটি পদ্ধতির পরীক্ষার প্রয়োজন, এবং নির্ভরতার সাথে আপনার যদি বৃহত অ্যাপ্লিকেশন থাকে তবে আপনাকে পরীক্ষার জন্য আপনার ডেটা প্রস্তুত এবং পরিষ্কার করতে হবে।