পরীক্ষা চালিত বিকাশ (টিডিডি) আসলেই কোন বাস্তব প্রকল্পে উপকৃত হয়েছে?


36

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

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

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

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

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

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


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


3
butunclebob.com/ArticleS.Uncleलय.JustTenMinutesWithoutAtest এখানে আঙ্কেল বব-এর একটি বাস্তব বিশ্ব পরিস্থিতির পরিস্থিতি সম্পর্কে একটি গল্প রয়েছে।
হাকান ডেরিয়াল

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

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

উত্তর:


26

এই গবেষণাপত্রটি দেখায় যে টিডিডি অন্যথায় পছন্দ মতো প্রকল্পগুলিতে ত্রুটিযুক্ত ঘনত্বের 40-90% হ্রাসের বিনিময়ে 15-25% বিকাশের সময় যোগ করে।

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

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

পুরো কাগজটিতে সংক্ষেপে টিডিডি সম্পর্কিত প্রাসঙ্গিক গবেষণাগুলির সংক্ষিপ্তসার এবং তাদের উচ্চ স্তরের ফলাফলগুলি (বিভাগ 3 সম্পর্কিত কাজ ), জর্জ এবং উইলিয়ামস 2003, মুলার এবং হাগনার (2002), এরদোগমাস এট আল সহ সংক্ষিপ্তসার রয়েছে। (2005), মোলার এবং টিচি (2001), জানজেন এবং সাইয়েডিয়ান (2006)।


2
মেটা.স্ট্যাক ওভারফ্রোতে আলোচনার ভিত্তিতে , আপনি কি এই কাগজ থেকে অতিরিক্ত তথ্য যুক্ত করতে পারেন যা প্রশ্নকর্তার সাথে প্রাসঙ্গিক হতে পারে এবং ভবিষ্যতের লোকেরা যারা এই প্রশ্নটি খুঁজে পাচ্ছেন?
থমাস ওয়ানস

2
@ThomasOwens, আমি উপসংহার চিন্তা ( "TDD- এ 15-35% উন্নয়ন সময় খুঁত ঘনত্ব একটি 40-90% কমিয়ে বিনিময়ে যোগ") ছিল অতিরিক্ত তথ্য যে উত্তর মূল প্রশ্ন <: _ <

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

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

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

16

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

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

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

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

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

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

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

তবে বাস্তব প্রকল্পগুলিতে এটি কতটা ভাল কাজ করে?

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

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

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

সুতরাং এটি সংক্ষেপে বলতে গেলে, আমার অভিজ্ঞতায় একবার আপনি টিডিডির শিল্পে দক্ষতা অর্জনের পরে, আপনি কেবল দীর্ঘ সময়ের জন্য সময় সাশ্রয় করবেন না, আপনি সামনের সময় সাশ্রয় করবেন। তবে এটি টিডিডির কলা আয়ত্ত করতে সময় লাগে এমনকি অভিজ্ঞ প্রোগ্রামারকেও। এবং বিভিন্ন দক্ষতার বিকাশকারীদের একটি দলের জন্য টিডিডির কলা আয়ত্ত করতে আরও বেশি সময় লাগে।


9

আমরা ব্যাপকভাবে লাভবান হয়েছি।

আমরা টিয়ার 1 মার্চেন্ট, যার অর্থ আমরা প্রতি বছর ছয় মিলিয়ন প্রদানের লেনদেন প্রক্রিয়া করি।

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

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

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

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

ভিসার পিসিআই রেফারেন্স: http://usa.visa.com/merchants/risk_management/cisp_merchants.html


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

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

7

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

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

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

এবং একটি নির্দিষ্ট গ্রিডে প্রয়োগ করা কৌশলগুলি হ'ল "এলোমেলো", এর অর্থ এটি আপনি কোনও নির্দিষ্ট গ্রিডে ব্যবহার করবেন না।

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


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

6

টিডিডির সুবিধা হ'ল আসল কোডটি লেখার আগে আপনার কোডটি কীভাবে কল করতে হবে তা নির্ধারণ করুন।

অন্য কথায়, টিডিডি আপনার এপিআই এর নকশা তৈরিতে সহায়তা করে।

আমার অভিজ্ঞতায় এটির উন্নত এপিআই-এর ফলাফল ফলাফল যা আরও ভাল কোড দেয়।


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

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

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

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


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

3
রাজি হয়েছি, তবে ভোট নেমে যাওয়ার খ্যাতি আমার নেই। এটি কেবলমাত্র "টিডিডি আরও ভাল ফলাফল দেয়" এটি রক্ষণাবেক্ষণের জন্য কোনও টিডিডি উত্পন্ন প্রকল্পের কোনও উদাহরণ নেই যার উত্তরটি আমি এড়াতে চেয়েছিলাম তা ব্যাক আপ করার জন্য।
জেমস

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

@ ডেলানান "আমি সাহসী ডাউন" - শব্দগুলির একটি আকর্ষণীয় পছন্দ। সম্পাদনাটি কি আপনার স্বাদে পড়েছে?

হ্যাঁ, আমি এখন আমার ডাউনটোটটি সরিয়েছি যে আমি এটি লক্ষ্য করেছি।

5

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

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

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

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

আপনি আপনার প্রশ্নে নিম্নলিখিতটি বলেছেন:

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

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

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

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

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

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

টিএল: ডিআর - হ্যাঁ, এগুলি সত্যই বিশ্ব সহায়তা, তবে তারা একটি বিনিয়োগ। সুবিধাগুলি কেবল পরে প্রকাশিত হয়।


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

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

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

4

আমি কাজের সময় বেশিরভাগ সময় টিডিডি ব্যবহার করি। আমার অভিজ্ঞতা টিডিডি নিজেকে ন্যায্যতা দেয় কারণ আপনি অতিরিক্ত সময় বা প্রচেষ্টা প্রদান করেন না, আপনি এটি সংরক্ষণ করেন।

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

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

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

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

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

হতে পারে আপনি ইউনিট টেস্টগুলি রিগ্রেশন টেস্ট হিসাবে ভাবেন। এটাই তাদের উদ্দেশ্য এক কিন্তু তাদের একটি হাতিয়ার হিসেবে বুঝতে জন্য উন্নয়ন তাদের আরো অনেক কিছু সার্থক করে তোলে।


গুণ বিনামূল্যে!
ম্যাথঅ্যাটাক

2
খারাপ মানের ব্যয়বহুল!
ওল্ফগ্যাং

3

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


2

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

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

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

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


2

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

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

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

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

একটি টিপ জন্য সময়

টিপ # 1

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

টিপ # 2

"ঠিক আছে, আমি এই ক্লাসে এখনই কাজ করছি ... ঠিক" ঠিক তেমন একটি সঠিক "ক্যানক্রিয়েট" পরীক্ষার মাধ্যমে নতুন ক্লাস পরীক্ষা শুরু করুন your

তারপরে আরও পরীক্ষাগুলি যুক্ত করা শুরু করুন, তবে একবারে কেবল একটি করে, এবং নিশ্চিত করুন যে প্রতিটি পরীক্ষাই আপনি তৈরি করেন এটি পরবর্তী সহজতম ঘটনা যা সেই মুহুর্তে আপনার মনে আসে (এটি সম্পর্কে 30 সেকেন্ডের বেশি সময় না নিয়ে চিন্তা করুন এবং তারপরে সময়সীমা নির্ধারণ করুন) সেরা যে আপনি পয়েন্ট পেয়েছেন সঙ্গে)।

এবং মনে রাখ

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

আরেকটি শট দিন। এবং আমাকে ক্লিন কোড কাস্টস দেখার বিশেষত টিডিডি সম্পর্কিত বিষয়গুলি দেখার পরামর্শ দিন ।


1

রিয়েল ওয়ার্ল্ড অ-তুচ্ছ উদাহরণ:

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


-1

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

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

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

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

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

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

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

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

নকশা নিদর্শন সঙ্গে ঠিক একই। তারা কীভাবে কাজ করে এবং কেন তাদের তৈরি করা হয়েছে এবং কী ধরণের সমস্যাগুলি তারা সমাধান করে এবং পাশাপাশি তাদের অসুবিধাগুলি কী তা বুঝতে পারেন Unders প্রস্তাবিত সমাধানগুলি মনে রাখার চেয়ে যুক্তিটি বোঝার উপায়টি আরও গুরুত্বপূর্ণ। আজ একটি ব্যয়বহুল ক্রিয়াকলাপটি অন্য প্রযুক্তিগুলির সাথে সহজেই কাল অর্জন করা যেতে পারে। যদি কিছু ভাল স্থিত সমাধানের ভিত্তি আর কার্যকর হয় না তবে সম্ভবত সমাধানটি আর ব্যবহারের জন্য সেরা নয় best প্রয়োজনীয়তা, উপলভ্য প্রযুক্তি বা সংস্থার কৌশল পরিবর্তিত হয়ে গেলে আপনার সর্বদা আপনার সরঞ্জামবক্সটি পুনর্নির্মাণ করা উচিত এবং যখন এটি ঘটে তখন আপনার বুঝতে হবে কেন আপনি প্রতিটি পথকে সেরা বিকল্প হিসাবে অনুদানের জন্য নেওয়ার পরিবর্তে প্রথম স্থানে বেছে নিয়েছিলেন।


এমনকি এটি জিজ্ঞাসা করা প্রশ্নের উত্তর দেওয়ার চেষ্টাও করে না: "অবশেষে কি আমাদের কোনও বেতন আছে যা সত্য প্রমাণিত আছে? উদাহরণস্বরূপ, কেউ কি উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছে বা টিডির সাথে ডিজাইন / বিকাশকৃত কোডে ফিরে গেছে এবং ইউনিট পরীক্ষার একটি সম্পূর্ণ সেট আছে এবং আসলেই একটা পেওফ লাগলো? "
gnat

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

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

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

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