কম্পিউটার

প্রথম জটিল পরীক্ষা লিখুন

আপনার কোন কোড পরীক্ষা করা হয় না? এটি কি এমন কোড যা আপনি নিয়ন্ত্রণ করেন না এমন জটিল পরিস্থিতি নিয়ে কাজ করে? থ্রেড, চলমান কমান্ড, গিট, নেটওয়ার্কিং, বা UI?

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

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

কিন্তু এটি জিনিসগুলিকে আরও ভাল করে তুলবে না৷৷ আপনি একই সমস্যা, একই বাগ, পরের বার একই চাপের মধ্যে পড়বেন - এবং তার পরে প্রতিবার। কীভাবে আপনি সেই চ্যালেঞ্জিং পরীক্ষাগুলিকে এমন কিছু করতে পারেন যা আপনি নির্ভর করতে পারেন?

আপনার মানসিকতা পরিবর্তন করুন

এই পরীক্ষা সম্পর্কে সবচেয়ে হতাশাজনক জিনিস? এটা লিখতে দশগুণ সময় লাগবে যতটা মনে হয়। যদি আপনি অনুমান করেন যে আপনি পরীক্ষাটি লিখতে যে সময় ব্যয় করেন তার বিপরীতে পরীক্ষাটি আপনাকে বাঁচায়, তবে এটির মূল্য বলে মনে হয় না।

কিন্তু এটা শুধু এই পরীক্ষা সম্পর্কে নয়। এটি আপনার ভবিষ্যতের সমস্ত পরীক্ষা সম্পর্কে .

আমি দেখেছি সবচেয়ে সেরা-পরীক্ষিত কোডগুলির অনেক সমর্থন রয়েছে৷৷ এটি শুধুমাত্র test/models-এর কোড নয় . অত্যন্ত ভাল-পরীক্ষিত কোডে নকল রয়েছে, এটিতে উপহাস রয়েছে, এটিতে পরীক্ষার ফিক্সচারের একটি ভাল সেট রয়েছে, এটিতে পরীক্ষার জন্য বিশেষভাবে কনফিগারেশন বিকল্প রয়েছে৷

যা লিখতে এবং একসাথে রাখতে সময় লাগে।

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

আপনি নির্ভর করতে পারেন আপনি ইতিমধ্যে যে কাজ করেছেন তার উপর।

সুতরাং এটি কেবল জটিল কোডে বাগ প্রতিরোধের বিষয়ে নয়। এটি ভবিষ্যতের কোডকে টুকরো টুকরো করে পরীক্ষা করা সহজ করে তোলার বিষয়েও৷

এটিকে একটি ইন্টিগ্রেশন পরীক্ষা করুন (আপাতত)

কখনও কখনও, যদিও, এটি মান বোঝার বিষয়ে নয় - আমি এটি পেয়েছি। পরিবর্তে, আমি আটকে যাই কারণ আমি বুঝতে পারি না কিভাবে একটি ছোট, দ্রুত, ইউনিট পরীক্ষা লিখব।

আপনি কিভাবে বুঝবেন যে আপনি git না চালিয়ে আপনার ডিপ্লয়মেন্ট টুলে সঠিক গিট কমান্ড চালাচ্ছেন? ? আপনি কিভাবে নিশ্চিত করবেন যে আপনি একটি দূরবর্তী সার্ভারকে সঠিক শিরোনাম পাঠাচ্ছেন?

পর্যাপ্ত সময়ের সাথে, আপনি আপনার পরীক্ষার উপর নির্ভর করার জন্য একটি মানসম্পন্ন জাল তৈরি করতে পারেন।

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

শুধু যে সার্ভার কল. শুধু যে কমান্ড চালান. কেন?

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

আপনি সম্ভবত এই পরীক্ষাগুলি চিরতরে রাখতে চান না, যদিও:

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

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

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

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

কখনও কখনও, যদিও, এটি যথেষ্ট নয়। আপনি যদি জানেন যে কীভাবে আপনার কোডটি বাস্তব জগতে কাজ করে তা নিশ্চিত করতে পারেন, কিন্তু কীভাবে এটি পরীক্ষা করবেন তা বুঝতে না পারেন?

যখন এটি ঘটে, পরীক্ষাটিকে এমন কিছু হিসাবে দেখা বন্ধ করুন যা আপনাকে বিশুদ্ধ এবং বিচ্ছিন্ন রাখতে হবে। পরিবর্তে, আপনি ইতিমধ্যে ম্যানুয়ালি যা করছেন তা স্বয়ংক্রিয়ভাবে করার একটি উপায় হিসাবে দেখুন৷

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


  1. C# কোডের জন্য ইউনিট টেস্টিং

  2. কিভাবে C# এ প্রথম প্রোগ্রাম লিখবেন?

  3. টেস্ট-কমিট-রিভার্ট:রুবিতে লিগ্যাসি কোড পরীক্ষা করার জন্য একটি দরকারী কর্মপ্রবাহ

  4. আমার পরীক্ষা কভারেজ কি ঘটেছে?