আমার কাছে যদি এমন কিছু কোড থাকে যার ৮০% পরীক্ষার কভারেজ থাকে (সমস্ত পরীক্ষায় উত্তীর্ণ হয়) তবে এটি কি ন্যায়বিচারের সাথে বলা যায় যে এটি কোনও পরীক্ষার কভারেজ নেই এমন কোডের চেয়ে উচ্চ মানের?
নাকি এটিকে আরও রক্ষণাবেক্ষণযোগ্য বলাটা কি ন্যায্য?
আমার কাছে যদি এমন কিছু কোড থাকে যার ৮০% পরীক্ষার কভারেজ থাকে (সমস্ত পরীক্ষায় উত্তীর্ণ হয়) তবে এটি কি ন্যায়বিচারের সাথে বলা যায় যে এটি কোনও পরীক্ষার কভারেজ নেই এমন কোডের চেয়ে উচ্চ মানের?
নাকি এটিকে আরও রক্ষণাবেক্ষণযোগ্য বলাটা কি ন্যায্য?
উত্তর:
কঠোর অর্থে টেস্ট স্যুটটির মান প্রতিষ্ঠিত না হওয়া পর্যন্ত কোনও দাবি করা মোটেও ন্যায়সঙ্গত নয়। পরীক্ষাগুলির 100% পাস করা অর্থবহ নয় যদি বেশিরভাগ পরীক্ষাগুলি একে অপরের সাথে তুচ্ছ বা পুনরাবৃত্তি হয়।
প্রশ্নটি হ'ল: প্রকল্পের ইতিহাসে, এই পরীক্ষাগুলির মধ্যে কোনওটি কী বাগগুলি উন্মোচিত করেছিল? একটি পরীক্ষার লক্ষ্য হ'ল বাগগুলি খুঁজে পাওয়া। এবং যদি তা না করে তবে তারা পরীক্ষা হিসাবে ব্যর্থ হয়েছিল। কোডের মান উন্নত করার পরিবর্তে তারা আপনাকে কেবল সুরক্ষার একটি মিথ্যা ধারণা দিচ্ছেন।
আপনার পরীক্ষার নকশা উন্নত করতে, আপনি (1) হোয়াইটবক্স কৌশল, (2) ব্ল্যাকবক্স কৌশল এবং (3) মিউটেশন টেস্টিং ব্যবহার করতে পারেন।
(1) আপনার পরীক্ষার নকশাগুলিতে প্রয়োগ করার জন্য এখানে কিছু ভাল হোয়াইটবক্স কৌশল রয়েছে। নির্দিষ্ট উত্স কোডটি মাথায় রেখে একটি হোয়াইটবক্স পরীক্ষা তৈরি করা হয়। হোয়াইটবক্স পরীক্ষার একটি গুরুত্বপূর্ণ বিষয় হ'ল কোড কভারেজ:
if
বা while
), আপনার কি এমন একটি পরীক্ষা আছে যা এটিকে সত্য হতে বাধ্য করে এবং অন্যটি এটি মিথ্যা হতে বাধ্য করে? [সিদ্ধান্তের কভারেজ]&&
) বা সংশ্লেষ (ব্যবহার ||
) প্রতিটি শর্তের জন্য, প্রতিটি subexpression এর একটি পরীক্ষা আছে যেখানে এটি সত্য / মিথ্যা? [শর্ত কভারেজ]break
লুপ থেকে আচ্ছাদিত?(২) ব্ল্যাকবক্স কৌশলগুলি প্রয়োজনীয়তাগুলি উপলভ্য হলে ব্যবহৃত হয়, তবে কোডটি নিজেই নয়। এগুলি উচ্চ মানের পরীক্ষার দিকে নিয়ে যেতে পারে:
(3) পরিশেষে, ধরুন আপনার কাছে ইতিমধ্যে হোয়াইটবক্সের কভারেজের জন্য প্রচুর দুর্দান্ত পরীক্ষা আছে এবং ব্ল্যাকবক্স কৌশল প্রয়োগ রয়েছে। তুমি আর কি করতে পারো? আপনার টেস্ট পরীক্ষা করার সময় এসেছে । আপনি যে কৌশলটি ব্যবহার করতে পারেন তা হ'ল মিউটেশন টেস্টিং।
মিউটেশন পরীক্ষার অধীনে, আপনি একটি ত্রুটি তৈরির আশায় আপনার প্রোগ্রামে (একটি অনুলিপি) পরিবর্তন করতে পারেন। একটি রূপান্তর হতে পারে:
একটি ভেরিয়েবলের একটি রেফারেন্সকে অন্য ভেরিয়েবলে পরিবর্তন করুন; অ্যাবস () ফাংশন sertোকান; এর চেয়ে কম-বেশিতে পরিবর্তন করুন; একটি বিবৃতি মুছুন; একটি ধ্রুবক সঙ্গে একটি পরিবর্তনশীল প্রতিস্থাপন; একটি ওভাররাইড পদ্ধতি মুছুন; একটি সুপার পদ্ধতির একটি রেফারেন্স মুছুন; যুক্তির ক্রম পরিবর্তন করুন
আপনার প্রোগ্রামের বিভিন্ন জায়গায় কয়েক ডজন মিউট্যান্ট তৈরি করুন [পরীক্ষার জন্য প্রোগ্রামটি এখনও সংকলন করতে হবে]। যদি আপনার পরীক্ষাগুলিতে এই বাগগুলি না পাওয়া যায় তবে আপনার এখন একটি পরীক্ষা লিখতে হবে যা আপনার প্রোগ্রামের রূপান্তরিত সংস্করণে বাগটি খুঁজে পেতে পারে। একবার পরীক্ষার মাধ্যমে বাগটি খুঁজে পাওয়া গেলে আপনি মিউট্যান্টকে মেরে ফেলেছিলেন এবং আবার চেষ্টা করতে পারেন।
সংযোজন : আমি এই প্রভাবটি উল্লেখ করতে ভুলে গেছি: বাগগুলি ক্লাস্টারের ঝোঁক থাকে । এর অর্থ হ'ল একটি মডিউলে আপনি যত বেশি বাগ খুঁজে পাবেন, তত বেশি ত্রুটি আপনি খুঁজে পাবেন। সুতরাং, যদি আপনার কোনও পরীক্ষা হয়ে যায় যা ব্যর্থ হয় (যা বলা যায় যে পরীক্ষাটি সফল, যেহেতু লক্ষ্যটি বাগগুলি সন্ধান করা হয়), তবে আপনি কেবল বাগটি ঠিক করতে পারবেন না, তবে আপনাকে মডিউলটির জন্য আরও পরীক্ষা লিখতে হবে, উপরের কৌশল।
আপনি যতক্ষণ স্থির হারে ত্রুটিগুলি খুঁজে পাচ্ছেন ততক্ষণ পরীক্ষার প্রচেষ্টা অবশ্যই চালিয়ে যেতে হবে। কেবলমাত্র নতুন বাগের হারের হ্রাস যখন পাওয়া যায় তখনই আপনার আত্মবিশ্বাস থাকা উচিত যে আপনি উন্নয়নের সেই পর্যায়ে ভাল পরীক্ষার প্রচেষ্টা করেছেন।
একটি সংজ্ঞা অনুসারে এটি আরও রক্ষণাবেক্ষণযোগ্য, যেহেতু কোনও ব্রেকিং পরিবর্তন টেস্টগুলির দ্বারা ধরা পড়ার সম্ভাবনা বেশি।
যাইহোক, কোডটি ইউনিট পরীক্ষায় পাস করার অর্থ এই নয় যে এটি অভ্যন্তরীণভাবে উচ্চ মানের। কোডটি এখনও অপ্রাসঙ্গিক মন্তব্য এবং অনুপযুক্ত ডেটা স্ট্রাকচারের সাথে খারাপভাবে ফর্ম্যাট করা যেতে পারে তবে এটি এখনও পরীক্ষায় উত্তীর্ণ হতে পারে।
আমি জানি যে আমি কোন কোড বজায় রাখতে এবং প্রসারিত করতে পছন্দ করব।
একেবারে কোনও পরীক্ষার সহ কোড অত্যন্ত উচ্চমানের, পাঠযোগ্য, সুন্দর এবং দক্ষ (বা মোট জাঙ্ক) হতে পারে, তাই না, এটি বলা মোটেও উপযুক্ত নয় যে ৮০% পরীক্ষার কভারেজ সহ কোডটি কোনও পরীক্ষার কভারেজ নেই এমন কোডের চেয়ে উচ্চমানের।
এটা বলা ঠিক হবে যে ভাল পরীক্ষার সাথে 80% কোড আবৃত সম্ভবত গ্রহণযোগ্য মানের, এবং সম্ভবত তুলনামূলকভাবে রক্ষণাবেক্ষণযোগ্য। তবে এটি সত্যিই সামান্য গ্যারান্টি দেয়।
আমি এটিকে আরও প্রত্যাবর্তনযোগ্য বলব। কোডটি প্রচুর পরীক্ষায় isাকা থাকলে রিফ্যাক্টরিং অত্যন্ত সহজ হয়ে যায়।
এটিকে আরও রক্ষণাবেক্ষণযোগ্য বলা ভাল হবে।
আমি রক্ষণাবেক্ষণ অংশ সম্পর্কে একমত হবে। মাইকেল ফেদারস সম্প্রতি তাঁর " টেস্টিবিলিটি এবং ভাল ডিজাইনের মধ্যে গভীর সমযোগ " নামে একটি দুর্দান্ত আলাপের একটি ভিডিও পোস্ট করেছেন যাতে তিনি এই বিষয়টি নিয়ে আলোচনা করেন। আলোচনায় তিনি বলেছিলেন যে সম্পর্কের একটি উপায়, তা হল, যে কোডটি ভালভাবে ডিজাইন করা হয়েছে তা টেস্টযোগ্য, তবে টেস্টেবল কোড অগত্যা ভালভাবে ডিজাইন করা হয় না।
এটি লক্ষণীয় যে ভিডিও স্ট্রিমিং ভিডিওতে দুর্দান্ত নয়, তাই আপনি যদি পুরোটি দেখতে চান তবে এটি ডাউনলোড করার উপযুক্ত।
"শর্ত কভারেজ" সম্পর্কিত আমি নিজেকে কিছুদিন ধরে এই প্রশ্নটি জিজ্ঞাসা করছি। অতএব অ্যাটলিক ডট কম থেকে এই পৃষ্ঠাটি সম্পর্কে কীভাবে "কোড কভারেজ বিশ্লেষণ কেন?"
আরও প্রযুক্তিগতভাবে, কোড কভারেজ বিশ্লেষণটি আপনার প্রোগ্রামের এমন অঞ্চলগুলি সন্ধান করে যা আপনার পরীক্ষার কেস দ্বারা আচ্ছাদিত নয়, আপনাকে অতিরিক্ত পরীক্ষা তৈরি করতে সক্ষম করে যা অন্যথায় আপনার প্রোগ্রামের অনির্ধারিত অংশগুলি কভার করে। এইভাবে এটি বোঝার জন্য গুরুত্বপূর্ণ যে কোড কভারেজটি আপনাকে নিজের পরীক্ষার পদ্ধতির মান বুঝতে সহায়তা করে, কোডের মান নিজেই নয় ।
এটি এখানে বেশ প্রাসঙ্গিক বলে মনে হয়। যদি আপনার কাছে এমন কোনও টেস্ট কেস সেট থাকে যা নির্দিষ্ট স্তরের (কোড বা অন্যথায়) কভারেজ অর্জন করতে পরিচালিত করে, তবে আপনি সম্ভবত ইনপুট মানগুলির পরিবর্তে বিস্তৃত সেট সহ পরীক্ষার অধীনে কোডটি আহ্বান করছেন! এটি আপনাকে পরীক্ষার অধীনে কোড সম্পর্কে খুব বেশি কিছু বলবে না (যদি না কোড ফুটে ওঠে বা সনাক্তযোগ্য ত্রুটিগুলি তৈরি করে না) তবে আপনার পরীক্ষার কেস সেটটিতে আপনাকে আত্মবিশ্বাস দেয় ।
একটি আকর্ষণীয় নেকার কিউব চেঞ্জ-অফ ভিউতে, পরীক্ষার কোডটি এখন পরীক্ষার অধীনে কোড দ্বারা পরীক্ষা করা হচ্ছে!
গ্যারান্টি দেওয়ার অনেকগুলি উপায় রয়েছে যে কোনও প্রোগ্রাম আপনি যা চান তা করে এবং পরিবর্তনগুলি কোনও অনিচ্ছাকৃত প্রভাব বহন করবে না তা নিশ্চিত করার জন্য।
পরীক্ষা এক। তথ্যের রূপান্তর এড়ানো অন্য একটি। সুতরাং একটি টাইপ সিস্টেম। বা আনুষ্ঠানিক যাচাই।
সুতরাং, আমি যখন সম্মত হই যে পরীক্ষা সাধারণত ভাল জিনিস হয় তবে পরীক্ষার একটি প্রদত্ত শতাংশের অর্থ খুব বেশি না হতে পারে। আমি বরং পরীক্ষিত পিএইচপি লাইব্রেরির চেয়ে হাস্কেলের কোনও পরীক্ষার ছাড়াই রচিত কিছু বিষয়ের উপর নির্ভর করব