টিডিডি বনাম উত্পাদনশীলতা


131

আমার বর্তমান প্রকল্পে (একটি খেলা, সি ++ তে), আমি স্থির করেছিলাম যে উন্নয়নের সময় আমি টেস্ট ড্রাইভড বিকাশকে 100% ব্যবহার করব।

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

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

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

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

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

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


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

9
আমার কাছে টেস্টগুলি খুব তাড়াতাড়ি লেখার বিষয়টি খুব তাড়াতাড়ি অপ্টিমাইজ করার মতো। আপনি টেস্টিং কোডটিতে কঠোর পরিশ্রম করছেন আপনি ভবিষ্যতে যেভাবেই সরিয়ে ফেলবেন।
লেনিপ্রগ্রামার

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

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

4
আমি জনপ্রিয় মতামতের বিরুদ্ধে যাচ্ছি এবং বলব যে আপনি গেমস তৈরি করলে TDD সর্বদা সঠিক পছন্দ নাও হতে পারে। যেহেতু গেমদেব.স্ট্যাকেক্সচেঞ্জের কেউ ইতিমধ্যে দর্শনীয়ভাবে এই প্রশ্নের উত্তর দিয়েছেন, আমি কেবল এটি এখানে লিঙ্ক করব ।
l46kok

উত্তর:


77

আপনার অভিজ্ঞতা ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ জানিয়ে এবং আপনার উদ্বেগগুলি প্রকাশ করার জন্য আমাকে শুরু করতে দিন ... যা আমার বলতে হবে তা অস্বাভাবিক নয়।

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

এবং এটি আমাকে চূড়ান্ত ক্যোয়ারিতে নিয়ে আসে: আমি কীভাবে আরও ভাল হতে পারি? আমার (বা আন) উত্তরটি হ'ল পড়ুন, প্রতিবিম্বিত করুন এবং অনুশীলন করুন।

যেমন দেরীতে, আমি ট্যাবগুলি রাখি

  • আমার ছন্দটি আরজি [রেফারেন্স] আরজি [রেফ] আরজি [রেফ] প্রতিবিম্বিত করে বা এটি আরআরআরআরজিআরআইফ কিনা।
  • রেড / কম্পাইল ত্রুটি অবস্থায়% সময় ব্যয় করেছে।
  • আমি কি রেড / ব্রোকেন বিল্ডস স্টেটে আটকে আছি?

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

@ নাইরোয় - আপনি কোন পরীক্ষার রানার ব্যবহার করছেন তা নিশ্চিত নয়। আমি যা জানাতে চাইছিলাম তার জন্য আমি একটি নাম শিখেছি। অ্যাবস্ট্রাক্ট ফিক্সচার প্যাটার্ন [ goo.gl/dWp3k] । এটি এখনও কংক্রিট এসইউটি প্রকারের মতো আপনার আরও বেশি ফিক্সচারগুলি লেখার প্রয়োজন। আপনি যদি আরও সংক্ষিপ্ত হতে চান তবে আপনার রানার ডক্সটি দেখুন। উদাহরণস্বরূপ NUnit প্যারামিটারাইজড এবং জেনেরিক টেস্ট ফিক্সচারগুলিকে সমর্থন করে (এখন আমি এটির জন্য অনুসন্ধান করেছি) goo.gl/c1eEQ আপনার খুব প্রয়োজন এমন জিনিস মনে হচ্ছে।
গিশু

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

@asgeo - যে মন্তব্য সম্পাদনা করতে পারবেন না .. লিংক একটি trailing bracket.This কাজ করা উচিত কুড়ান হয়েছে - goo.gl/dWp3k
Gishu

'আটকে যাওয়ার জন্য +1 ডিজাইনের লক্ষণটির জন্য আরও কাজ করা দরকার', যদিও .. আপনি যখন ডিজাইনে আটকে যান (আমার মতো) তখন কী হবে?
লুসার

32

আপনার 100% শতাংশ পরীক্ষার কভারেজ দরকার নেই। ব্যবহারিক হতে হবে।


2
আপনার যদি 100% পরীক্ষার কভারেজ না থাকে তবে আপনার 100% আত্মবিশ্বাস নেই।
ক্রিস্টোফার মহান

60
100% পরীক্ষার কভারেজ থাকা সত্ত্বেও আপনার 100% আত্মবিশ্বাস নেই। এটি 101 পরীক্ষা করছে testing টেস্টগুলি প্রদর্শন করতে পারে না যে কোডটি ত্রুটি মুক্ত is বিপরীতে, তারা কেবল এটিই প্রদর্শন করতে পারে যে এতে কোনও ত্রুটি রয়েছে।
সিজারগন

7
এটির জন্য মূল্যবান, সবচেয়ে উত্সাহী টিডিডি অ্যাডভোকেটস, বব মার্টিন, 100% কভারেজ - ব্লগ.অবজেক্টমেন্টর / পার্টিকেলস / ২০০৯ / ২০১১ / ৩১ / recommend এর প্রস্তাব দিচ্ছেন না । উত্পাদন শিল্পে (অনুমোদিত, বিভিন্ন দিক থেকে সফ্টওয়্যার থেকে আলাদা), কেউই 100% আত্মবিশ্বাসের জন্য যায় না কারণ তারা 99% আত্মবিশ্বাসী হওয়ার প্রয়াসের একটি অংশ ব্যয় করতে পারে।
সম্ভাবনা

এছাড়াও (কমপক্ষে সর্বশেষে আমি যখন আমাদের কাছে থাকা সরঞ্জামগুলি পরীক্ষা করেছি) কোড কভারেজ রিপোর্টগুলি লাইনগুলি কার্যকর করা হয়েছিল কিনা তার সাথে সম্পর্কিত তবে মান কভারেজ অন্তর্ভুক্ত নয় - যেমন আজ আমি একটি বাগ রিপোর্ট করেছি যেখানে পরীক্ষাগুলিতে সম্পাদিত কোডের মাধ্যমে আমার সমস্ত পথ রয়েছে, তবে যেহেতু এখানে একটি লাইন ছিল a = x + yএবং যদিও কোডের সমস্ত লাইন পরীক্ষায় কার্যকর করা হয়েছিল, পরীক্ষাগুলি কেবল সেই ক্ষেত্রে পরীক্ষিত হয়েছিল যেখানে y = 0, তাই বাগ (এটি হওয়া উচিত a = x - yছিল) পরীক্ষায় কখনও পাওয়া যায় নি।
পিট

@ চ্যান্স - আমি রবার্ট মার্টিন বইটি "ক্লিন কোডার ..." পড়েছি যার দীর্ঘ নাম রয়েছে। এটি সেই বইতে বলেছে, এটি পরীক্ষাগুলির সাথে 100% আচ্ছাদিত হওয়া উচিত, যা 100% এর কাছাকাছি। এবং ব্লগ লিঙ্কটি আর কাজ করে না।
দারিয়াস.ভি

22

টিডিডি এখনও আমাকে যথেষ্ট গতি দিচ্ছে

এটা আসলে মিথ্যা।

টিডিডি ছাড়াই আপনি কয়েক সপ্তাহ লেখার কোডটি ব্যয় করেন যা বেশিরভাগই কাজ করে এবং পরের বছর "টেস্টিং" ব্যয় করে এবং বাগগুলির মধ্যে অনেকগুলি (তবে সমস্ত নয়) ঠিক করে।

টিডিডি সহ আপনি একটি বছর লেখার কোড ব্যয় করেন যা আসলে কাজ করে। তারপরে আপনি কয়েক সপ্তাহের জন্য চূড়ান্ত সংহতকরণ পরীক্ষা করেন।

অতিবাহিত সময় সম্ভবত একই হতে চলেছে। টিডিডি সফ্টওয়্যারটি যথেষ্ট উন্নতমানের হবে।


6
তাহলে আমার টিডিডি লাগবে কেন? "অতিবাহিত সময়টি একইরকম"

21
@ পিটার লং: কোডের মান। "টেস্টিং" বছরটি কীভাবে আমরা বেশিরভাগ কাজ করে এমন ক্রেপ সফ্টওয়্যারটি দিয়ে শেষ করি।
এস.লট

1
@ পিটার, আপনি মজা করছেন টিডিডি সমাধানের গুণমানটি আরও উন্নত হবে।
মার্ক টমাস

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

7
@ পিটার লং: "অতিবাহিত সময়টি একই রকম" ... এবং সেই সময়ে যে কোনও সময় আপনি কার্য কোড সরবরাহ করতে পারেন ।
ফ্রাঙ্ক শায়ারার

20

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

এটি আমাকে অবাক করে দেয় আপনি কতটা টিডিডির "রিফ্যাক্টর" পদক্ষেপ অনুসরণ করছেন।

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

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

টিডিডি সম্পর্কে কয়েকটি দার্শনিক পয়েন্ট যা সহায়ক হতে পারে:

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

সম্পাদনা: ইউনিট পরীক্ষার দর্শনের বিষয়টিতে , আমি মনে করি এটি পড়তে আপনার পক্ষে আকর্ষণীয় হতে পারে: টেস্টিয়াসের উপায়

এবং আরও কার্যকর, যদি প্রয়োজনীয়ভাবে খুব সহায়ক না হয় তবে নির্দেশ করুন:

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

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

2
আমি একমত নই যে রিফ্যাক্টরিং পরীক্ষাগুলি বিপজ্জনক। আপনি যখন সমস্ত কিছু চলে যাচ্ছেন কেবল তখনই আপনি রিফ্যাক্টরিং করছেন, তাই আপনি যদি একটি রিফ্যাক্টরিং করেন এবং সবকিছু এখনও সবুজ থাকে তবে আপনি ঠিক আছেন। আপনি যদি মনে করেন আপনার পরীক্ষার জন্য পরীক্ষা লিখতে হবে তবে আমার মনে হচ্ছে এটি এমন একটি সূচক যা আপনাকে সহজ পরীক্ষা লিখতে হবে।
জাস্টিন

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

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

1
গুগল সি ++ বিদ্রূপ কাঠামো (গুগল সি ++ টেস্ট এফডাব্লুয়ের সাথে সংহত) - খুব, খুব পাওয়ারফুল বিদ্রূপের লাইব্রেরি - নমনীয়, সমৃদ্ধ বৈশিষ্ট্যযুক্ত - অন্য কোনও উপহাস কাঠামোর সাথে তুলনীয় quite
রতকোক

9

খুব মজার প্রশ্ন।

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

মূলত গেমিং অনেকগুলি জিইউআই, শব্দ এবং থ্রেড। জিইউআই, এমনকি স্ট্যান্ডার্ড উপাদানগুলির সাথেও আপনি ডাব্লুএম_কে পাঠাতে পারেন, ইউনিট-পরীক্ষার পক্ষে শক্ত is

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

তারপরে আবার, আমি টিডিডি গুরু বা প্রচারক নই, সুতরাং লবণের এক দানা দিয়ে এই সমস্ত নিন।

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

একটি ত্রুটি দ্বারা বন্ধ করা, সি ++, আরআইআই এবং একটি ভাল ডিজাইনের চতুর ব্যবহার তাদের প্রতিরোধে দীর্ঘতর পথ অতিক্রম করে।

আপনি গেমটি ছেড়ে দিতে চাইলে মূলত আপনার বুনিয়াদিগুলি আবরণ করার জন্য আপনাকে অনেক কিছু করতে হবে। আমি নিশ্চিত না যে টিডিডি সাহায্য করবে কিনা।


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

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

এর সাথে একমত একটি বাস্তববাদী উত্তরের জন্য ধন্যবাদ যা গোপনে টিডিডিকে সমস্ত কিছুর উত্তর হিসাবে নির্ধারণ করে না, এটি যা তার পরিবর্তে, যা বিকাশকারী সরঞ্জামদণ্ডে কেবল অন্য একটি সরঞ্জাম।
জেবি

6

আমি অন্যান্য উত্তরগুলির সাথে একমত, তবে আমি একটি খুব গুরুত্বপূর্ণ বিষয়ও যুক্ত করতে চাই: রিফ্যাক্টরিং ব্যয়গুলি !!

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


4

সমস্ত উত্পাদনশীলতা এবং অনুপ্রেরণা না মেরে অন্যান্য ব্যক্তিরা কীভাবে টিডিডি থেকে বেঁচে থাকতে পারেন?

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

আপনি (এবং আমার!) ভুল করেছেন তা জানার জন্য নম্রতা থাকার বিষয়ে টিডিডি রয়েছে।

আমার জন্য সময় থেকে ইউনিটসেট লেখার সময় টিডিডি ব্যবহার করে শুরু হওয়া প্রকল্পগুলির জন্য হ্রাসকৃত ডিবাগিংয়ের সময় সাশ্রয়ের চেয়ে বেশি।

আপনি যদি ভুল না করেন তবে টিডিডি আপনার পক্ষে ততটা গুরুত্বপূর্ণ নয় যতটা তা আমার পক্ষে!


ভাল, আপনার টিডিডি কোডেও আপনার বাগ রয়েছে;)
কোডার

যে সত্য! তবে টিডিডি সঠিকভাবে করা হলে এগুলি অন্য ধরণের বাগ হতে থাকে। আমার ধারণা, কোডটি শেষ করতে 100% বাগ ফ্রি হতে হবে এটি সঠিক নয়। যদিও কেউ ইউনিট পরীক্ষার সংজ্ঞায়িত আচরণ থেকে বিচ্যুতি হিসাবে বাগটিকে সংজ্ঞায়িত করে, তবে আমার ধারণা এটি বাগ মুক্ত free :)
টম

3

আমি কেবল কয়েকটি মন্তব্য করেছি:

  1. দেখে মনে হচ্ছে আপনি সবকিছু পরীক্ষা করার চেষ্টা করছেন । আপনার সম্ভবত করা উচিত নয়, নির্দিষ্ট কোড / পদ্ধতিতে কেবল উচ্চ-ঝুঁকিপূর্ণ এবং প্রান্তের কেসগুলি। আমি নিশ্চিত যে এখানে 80/20 বিধি প্রযোজ্য: আপনি আপনার কোডের শেষ 20% বা আচ্ছাদিত নয় এমন ক্ষেত্রে 20% রচনার জন্য ব্যয় করেছেন।

  2. অগ্রাধিকার। চতুর সফ্টওয়্যার বিকাশে পান, এবং এক মাসের মধ্যে প্রকাশের জন্য আপনাকে আসলেই কী করতে হবে তার একটি তালিকা তৈরি করুন। তারপরে মুক্তি দিন, ঠিক তেমনই। এটি আপনাকে বৈশিষ্ট্যগুলির অগ্রাধিকার সম্পর্কে ভাবতে বাধ্য করবে। হ্যাঁ, আপনার চরিত্রটি যদি ব্যাকফ্লিপ করতে পারে তবে এটি দুর্দান্ত হবে তবে এর ব্যবসায়িক মূল্য আছে কি?

টিডিডি ভাল, তবে কেবল যদি আপনি 100% পরীক্ষার কভারেজের লক্ষ্য না রাখেন, এবং এটি আপনাকে প্রকৃত ব্যবসায়ের মান উত্পাদন করা থেকে বিরত রাখে না (যেমন বৈশিষ্ট্যগুলি, এমন জিনিস যা আপনার গেমটিতে কিছু যুক্ত করে)।


1

হ্যাঁ, টেস্ট এবং কোড লেখার ক্ষেত্রে কেবল কোড লেখার চেয়ে বেশি সময় লাগতে পারে - তবে কোড লেখার সাথে সম্পর্কিত ইউনিট টেস্টগুলি (টিডিডি ব্যবহার করে) কোড লেখার পরে এটি ডিবাগ করার চেয়ে অনেক বেশি অনুমানযোগ্য।

টিডিডি ব্যবহার করার সময় ডিবাগিং প্রায় শেষ হয়ে যায় - যা সমস্ত বিকাশ প্রক্রিয়াটিকে অনেক বেশি অনুমানযোগ্য এবং শেষ পর্যন্ত - তাত্ক্ষণিকভাবে দ্রুততর করে তোলে।

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


0

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

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