নীল-আকাশ / প্রোটোটাইপ প্রকল্পে প্রথমে ইউনিট পরীক্ষা বা ইন্টিগ্রেশন পরীক্ষা লিখতে হবে কিনা তা মূল্যায়ন করছে


11

আমি যখন নিম্নলিখিত ধরণের প্রকল্পগুলি করছি তখন আমি কিছু লক্ষ্য করেছি:

  • যখন একটি প্রকল্প শুরু
  • এমভিপি / প্রোটোটাইপ নিয়ে কাজ করা
  • সম্পূর্ণরূপে সংজ্ঞায়িত নয় এমন বৈশিষ্ট্য যুক্ত করা
  • একটি ছোট স্কেল প্রকল্পে কাজ

রেফারেন্সের জন্য, আমি এখন পাইথন প্রকল্পে কাজ করছি যার কাছে বর্তমানে কিছু মন্তব্য এবং সমস্ত সাদা স্থান সহ ~ 1k কোডের লাইন রয়েছে।

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

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

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


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

@ ফ্র্যাঙ্কহিলিমান প্রকৃতপক্ষে, এটি আমার পদ্ধতির। তবে যেহেতু আমি কৌতূহলী তাই আমি নিশ্চিত করতে চাই যে আমি যদি কিছু মিস করছি তবে আমি সঠিক পদ্ধতিটি করছি doing
এন্ডারল্যান্ড

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

1
প্রোটোটাইপ নিয়ে কাজ করার ক্ষেত্রে এটি পরীক্ষার মোটেও লেখা নয় ঠিক not প্রোটোটাইপের লক্ষ্য হ'ল কার্যকরী ধারণা পরীক্ষা করা। প্রোটোটাইপ প্রয়োগ প্রয়োগের প্রত্যাশিত নকশা সনাক্ত করতে সহায়তা করবে।
ফ্যাবিও

একে বাইরের ইন উন্নয়ন বলে। আপনি নীচের বইটি যাচাই করতে চাইতে পারেন, যা হুবহু এটি করে: amazon.com/dp/0321503627
শাশ্বত 21

উত্তর:


7

আমি কি এআইপিআই আরও দৃified়তর হওয়ার আগে এই ধরণের প্রকল্পগুলির পরীক্ষার ইউনিটের মূল্য অনুভব করছি?

না, আপনি ভাল করছেন।

টিডিডির দুটি বড় লক্ষ্য হ'ল:

  • অভ্যন্তরীণ বাস্তবায়ন 1 এর পরিবর্তে প্রকৃত ব্যবহার দ্বারা ইন্টারফেসগুলি সংজ্ঞায়িত করা
  • পরীক্ষার কভারেজ সর্বাধিক করা হচ্ছে

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

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

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


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

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


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


1

আপনি যেভাবে কাজ করছেন আমি সেভাবে কাজ করেছি। এবং আমি আপনাকে বলতে যাচ্ছি না আপনি পারবেন না। আমি আপনাকে এমন কিছু সম্পর্কে সতর্ক করব যা আপনি প্রবেশ করতে পারেন।

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

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

বলেছে

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

বুঝতে হবে যে ইউনিট পরীক্ষা কেবল একটি পরীক্ষা নয় যা এক শ্রেণিতে কাজ করে। এতক্ষণ আপনি যে এপিআইতে কাজ করছেন তা নীচের কোনওটি না করেই আপনি পরীক্ষা করতে পারবেন আপনি ইউনিট টেস্টিং ঠিকঠাক করছেন:

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

মাইকেল পালক: ইউনিট পরীক্ষার বিধিগুলির একটি সেট

সুতরাং যদি আপনার শেষ-শেষের পরীক্ষায় একাধিক অবজেক্ট জড়িত থাকে যা ভাল। এটি ইউনিট টেস্টিং অবজেক্ট টেস্টিং নয়।

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

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