ভাল ইউনিট পরীক্ষা না করানোর জন্য বিকাশকারীর মূল অজুহাত হ'ল কোডটি ইউনিট পরীক্ষামূলক ফ্যাশনে ডিজাইন করা হয়নি। আমি কী ধরণের ডিজাইন এবং কোড যা ইউনিট পরীক্ষা করা যায় না তা বোঝার চেষ্টা করছি।
ভাল ইউনিট পরীক্ষা না করানোর জন্য বিকাশকারীর মূল অজুহাত হ'ল কোডটি ইউনিট পরীক্ষামূলক ফ্যাশনে ডিজাইন করা হয়নি। আমি কী ধরণের ডিজাইন এবং কোড যা ইউনিট পরীক্ষা করা যায় না তা বোঝার চেষ্টা করছি।
উত্তর:
একক পরীক্ষায় কোডটি বেশ কয়েকটি কারণকে জটিল করে তুলতে পারে। যখন এটি হয়, রিফ্যাক্টরিং এটি পরীক্ষামূলক হওয়ার জন্য কোডটি উন্নত করতে সহায়তা করে।
কোডের কয়েকটি উদাহরণ যা সম্ভবত পরীক্ষা করা কঠিন হবে:
function pGetDp_U(int i, int i2, string sText)
।নোট করুন যে সুস্পষ্ট আর্কিটেকচারের অভাবে কোডটি ইউনিট পরীক্ষার পক্ষে রেন্ডার করে না, ইউনিট টেস্টগুলি কোডের ছোট্ট অংশগুলিকে উদ্বেগ করে। অস্পষ্ট আর্কিটেকচারটি এখনও ইন্টিগ্রেশন এবং সিস্টেম পরীক্ষায় নেতিবাচক প্রভাব ফেলবে।
এমন অনেকগুলি বিষয় রয়েছে যা কোডকে ইউনিট পরীক্ষা করা কঠিন করে তোলে। কাকতালীয়ভাবে এর মধ্যে অনেকগুলি কোড বজায় রাখা কঠিন করে তোলে:
কোডের সাধারণ উদাহরণগুলি ইউনিট পরীক্ষায় যেতে চায় না:
মক ফ্রেমওয়ার্ক ব্যবহার করে, এই সমস্ত উদাহরণের ইউনিট পরীক্ষা করা যেতে পারে। এটি কেবল অভ্যন্তরীণ নির্ভরতার জন্য মক প্রতিস্থাপন সেটআপ করার কাজ।
যে জিনিসগুলি সত্যই ইউনিট পরীক্ষা করা যায় না:
কয়েকটি ক্ষেত্র যা ইউনিট পরীক্ষার জন্য এটি লিখতে আরও কঠিন করে তুলতে পারে। তবে আমি জোর দিয়ে বলব যে এর অর্থ এই নয় যে আপনি দরকারী কৌশলগুলি হাতছাড়া করে নিন কারণ তারা আপনার পরীক্ষায় কিছু জটিলতা যুক্ত করতে পারে। কোন কোডিং সঙ্গে আপনি আপনার নিজের বিশ্লেষণের কাজ করা উচিত কিনা তা নির্ধারণ করতে সুবিধা খরচ outway, এবং অন্ধ নেট কি কিছু র্যান্ডম লোক পোস্ট গ্রহণ করে না।
নিয়ন্ত্রণের বাইরে এই সর্পিলের বেশিরভাগের জন্য ব্যয় আপনি যদি না জানেন যে আপনি কী করছেন। দুর্ভাগ্যক্রমে, অনেকেই জানেন না কীভাবে এই কৌশলগুলি টেস্টিং জটিলতার মতো জিনিসগুলি প্রশমিত করার উপায়ে ব্যবহার করতে হয়।
কোড বলে কোনও জিনিস নেই যা পরীক্ষা করা যায় না। তবে কোডের কয়েকটি উদাহরণ রয়েছে যা সত্যই পরীক্ষা করা সত্যিই কঠিন (সম্ভবত চেষ্টাটির পক্ষে উপযুক্ত নয়) এর জন্য:
হার্ডওয়্যার ইন্টারঅ্যাকশনস - যদি কোডটি হার্ডওয়্যারটিকে সরাসরি পরিচালনা করে (উদাহরণস্বরূপ, কোনও দৈহিক ডিভাইস সরানোর জন্য কোনও রেজিস্টারে লিখিতভাবে), তবে ইউনিট পরীক্ষা করা এটি খুব কঠিন বা ব্যয়বহুল হতে পারে। আপনি যদি পরীক্ষার জন্য সত্যিকারের হার্ডওয়্যার ব্যবহার করেন, যা পরীক্ষার জোরে (আরও বেশি সরঞ্জাম!) যথাযথ প্রতিক্রিয়া পেতে দামি হতে পারে এবং যদি আপনি এটি না করেন তবে আপনাকে শারীরিক বস্তুর যথাযথ আচরণ অনুকরণ করতে হবে - এতে কোনও ছোট কৌশল নেই কিছু উদাহরণ।
ঘড়ির মিথস্ক্রিয়া - এটি সাধারণত সহজ, কারণ প্রায়শই সর্বদা তুচ্ছভাবে সিস্টেমের ঘড়ির কাজগুলি উপহাস করা সম্ভব। কিন্তু যখন আপনি পারবেন না, তখন এই পরীক্ষাগুলি নিয়ন্ত্রণহীন হয়ে যায় - রিয়েল-টাইমের উপর ভিত্তি করে পরীক্ষাগুলি চালাতে অনেক বেশি সময় নেয় এবং আমার অভিজ্ঞতায় তারা খুব ভঙ্গুর হতে থাকে কারণ সিস্টেমের বোঝা জিনিসগুলিকে তাদের চেয়ে বেশি সময় নেয় make , ভুত পরীক্ষার ব্যর্থতা কারণ।
এর জন্য আমার প্রধান তিনটি গ্রুপ হ'ল:
বাহ্যিক পরিষেবাগুলির উপর নির্ভর করে এমন কোড
এমন সিস্টেমগুলি যা পরীক্ষকদের আবেদনের স্বাধীনভাবে রাষ্ট্র পরিবর্তন করতে দেয় না।
পরীক্ষার পরিবেশগুলি যা উত্পাদন সেটআপটিকে প্রতিলিপি করে না।
বিকাশকারী কিউএ ইঞ্জিনিয়ার হিসাবে এটিই আমি সবচেয়ে বেশি অভিজ্ঞ।