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