একটি রাষ্ট্রীয় সিস্টেমের জন্য ইউনিট পরীক্ষার নকশা করা


20

পটভূমি

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

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

সূত্র: http://www.artima.com/weblogs/viewpost.jsp?thread=35578

তারা এ জাতীয় কথাও বলে (এরপরে "ব্যক্তিগত পদ্ধতি নীতি" বা পিএমপি হিসাবে পরিচিত ):

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

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

উত্স: আপনি কীভাবে ব্যক্তিগত পদ্ধতি পরীক্ষা করেন?

পরিস্থিতি

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

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

  • পিএমপি পরামর্শ দেয় যে আমি এই "স্টেট বিল্ড আপ" পদক্ষেপটি এড়াতে পারি না এবং কেবল সেই পদ্ধতিগুলি যা পরীক্ষামূলকভাবে স্বাধীনভাবে পরিচালনা করে তা পরীক্ষা করতে পারি না।

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


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


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

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

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

উত্তর:


15

পরিপ্রেক্ষিত:

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

আমি সেই দৃষ্টিভঙ্গি এনেছি কারণ আমি মনে করি যে বিবরণে হারিয়ে যাওয়া এবং আমরা কী অর্জন করার চেষ্টা করছি তার দৃষ্টি হারানো সহজ lose

মূলনীতি - এসএপি:

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

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

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

মূলনীতি - পিএমপি:

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

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


ফলিত টিডিডি (আপনার জন্য )

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

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

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

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

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

প্রথমত, আপনাকে মেনে নিতে হবে যে আপনি কোনও পরিস্থিতিতে পরীক্ষা হিসাবে এবং অন্য পরিস্থিতিতে সেটআপ হিসাবে কিছু ব্যবহার করছেন। একদিকে, এটি স্যাপের সরাসরি লঙ্ঘন বলে মনে হয়। তবে যদি আপনি যৌক্তিকভাবে ChangeFooToState1দুটি উদ্দেশ্য হিসাবে ফ্রেম করে থাকেন তবে আপনি এখনও এসএপি আমাদেরকে কী শিখিয়ে দিচ্ছেন তার চেতনা পূরণ করছেন। আপনার যখন Foo()পরিবর্তনগুলি নিশ্চিত করার দরকার হয় তখন আপনি ChangeFooToState1পরীক্ষা হিসাবে ব্যবহার করেন। এবং "যখন" Foo()এর আউটপুটটি বৈধ করার দরকার হয় State1তখন আপনি ChangeFooToState1সেটআপ হিসাবে ব্যবহার করেন।

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

একসাথে রেখে:

আপনার রাজ্য চিত্রটি ব্যবহার করে, আপনি স্থানান্তরগুলি কভার করার জন্য পরীক্ষা তৈরি করবেন gene আবার, আপনার চিত্রটি ব্যবহার করে, আপনি রাষ্ট্র দ্বারা চালিত সমস্ত ইনপুট / আউটপুট ডেটা প্রসেসিং কেসগুলি কভার করার জন্য পরীক্ষা তৈরি করে।

আপনি যদি এই পদ্ধতির অনুসরণ করেন তবে bloated, complicated, long, and difficult to writeপরীক্ষাগুলি পরিচালনা করা কিছুটা সহজ হওয়া উচিত। সাধারণভাবে, তাদের ছোট হওয়া উচিত এবং এগুলি আরও সংক্ষিপ্ত হওয়া উচিত (অর্থাত্ জটিল জটিল)। আপনার খেয়াল করা উচিত যে পরীক্ষাগুলি আরও ডিকপলড বা মডুলার হিসাবেও রয়েছে।

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


11

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

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

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

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

অন্য কথায়, আপনি সম্পূর্ণরূপে রাষ্ট্র এড়াতে পারবেন না, তবে আপনি এটি হ্রাস করতে এবং পৃথক করতে পারবেন।


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

"+ এর জন্য" আপনি রাষ্ট্রকে পুরোপুরি এড়াতে পারবেন না তবে আপনি এটি হ্রাস করতে এবং পৃথক করতে পারবেন। " আমি রাজি হতে পারি না। রাষ্ট্র সফ্টওয়্যার একটি প্রয়োজনীয় মন্দ।
ব্র্যান্ডন

0

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

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

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

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