ইউনিট টেস্টিং পদ্ধতিগত কোড কার্যকর কি?


13

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

সুতরাং সংক্ষেপে আমার প্রশ্নটি কি আমাদের বর্তমান কোডবেসের সাথে ইউনিট পরীক্ষা চালিয়ে যাওয়া বা বুদ্ধিমানের প্রস্তাব দেওয়া উচিত যে আবেদনটি কোনও ওওপি কাঠামোতে স্থানান্তরিত না করা অবধি স্থগিত রাখা উচিত?

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


13
ইউনিট টেস্টিং নতুন বাগগুলি প্রতিরোধ করে না, এটি নিয়ন্ত্রণগুলি প্রতিরোধ করে।
দেনিথ

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

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

@ l0b0 হ্যাঁ আমি করেছি। আমার ক্ষমাপ্রার্থী, পরীক্ষাটি আরও পরিষ্কার হতে আপডেট করবে
কানাডিয়ান

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

উত্তর:


14

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

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

মনে রাখবেন যে আপনার এগুলি করতে হবে:

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

  • বিশ্ব সুযোগ সম্পর্কে চিন্তা করুন । সমস্যাটি ওওপি-তেও বিদ্যমান, তবে আপনি যদি বলেন যে আপনাকে স্প্যাগেটি কোড পরীক্ষা করতে হবে, সম্ভাবনা হ'ল যে এই কোডটি লিখেছেন তাদের লোকদের খারাপ অভ্যাস রয়েছে, যেমন গ্লোবাল স্কোপ বেশি ব্যবহার করা এবং ভিতরে পরিবর্তন করা $_GETবা $_POSTঅ্যারে করার মতো কিছু পাগল কাজ করা as ফাংশন।

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

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


5

প্রস্তাব দেওয়া হয় যে আবেদনটি যথাযথ ওওপি কাঠামোয় স্থানান্তরিত না করা পর্যন্ত স্থগিত করা হবে

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


5

ইউনিট টেস্টিং শুরু করার সবচেয়ে কার্যকর উপায় হ'ল প্রায়শই ঘটে যাওয়া ত্রুটিগুলির শ্রেণি সনাক্তকরণ বা সর্বাধিক ব্যয়। তারপরে সেই ত্রুটিগুলি লক্ষ্য করে এমন পরীক্ষাগুলি তৈরি করুন।

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

  • গ্লোবাল ব্যবহার
  • ক্ষতিকর দিক
  • শক্তভাবে সংযুক্ত কোড
  • খারাপভাবে সংযুক্ত কোড
  • শর্তসাপেক্ষে একটি বিশাল সংখ্যা
  • খারাপভাবে ডিজাইন করা "ইউনিট"

এগুলি সমস্তই ভাষার দৃষ্টান্তের চেয়ে পরীক্ষার অসুবিধাতে বেশি প্রভাব ফেলবে।


4

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

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


-4

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

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


5
-1: খারাপ নকশা এবং বাস্তবায়ন সমস্যা, পদ্ধতিগত কোড নয়। আপনি যেমন ভয়ানক ওপি লিখতে পারেন ঠিক তেমন দুর্দান্ত পদ্ধতিগত কোডও লিখতে পারেন।
mattnz

@ ম্যাটনজ - আমি নিশ্চিত নই যে আপনার মন্তব্য কীভাবে ইউনিট পরীক্ষামূলক পদ্ধতিতে যাচ্ছিলেন, বা সক্ষম হবেন না তার সম্পর্কে আমি কী বলেছিলাম to
রব গ্রে

7
কার্যবিধি কোড স্প্যাগেটির সমান হয় না। কার্যনির্বাহী পদ্ধতিতে ভাল ডিজাইন করা, মডুলার, পরিষ্কারভাবে পৃথক, উচ্চ সংহতি / কম সংযোগের কোড লেখা খুব সম্ভব।
মার্জন ভেনেমা

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