টি এল; ডিআর
ভাল, দরকারী পরীক্ষাগুলি লেখা শক্ত, এবং সি ++ এর দাম বেশি cost আপনি কি অভিজ্ঞ বিকাশকারীরা কখন এবং কখন পরীক্ষা করতে হবে সে সম্পর্কে আপনার যুক্তিটি ভাগ করতে পারেন?
দীর্ঘ কাহিনী
আমি টেস্ট-চালিত উন্নয়ন করতাম, আসলে আমার পুরো দল, তবে এটি আমাদের পক্ষে ভালভাবে কাজ করে নি। আমাদের অনেক পরীক্ষা আছে, তবে সেগুলি কখনই আমাদের প্রকৃত বাগ এবং রিগ্রেশনগুলির ক্ষেত্রে তা কাভার করে না বলে মনে হয় - যা সাধারণত ইউনিটগুলি তাদের বিচ্ছিন্ন আচরণ থেকে নয় বরং ইন্টারঅ্যাক্ট করার সময় ঘটে।
এটি প্রায়শই ইউনিট স্তরের পরীক্ষা করা এত কঠিন যে আমরা টিডিডি করা বন্ধ করে দিয়েছি (এমন উপাদানগুলি বাদে যেখানে এটি সত্যিই উন্নয়নের গতি বাড়ায়) এবং পরিবর্তে ইন্টিগ্রেশন পরীক্ষার কভারেজ বাড়ানোর জন্য আরও বেশি সময় ব্যয় করে। যদিও ছোট ইউনিট পরীক্ষাগুলি কখনই কোনও আসল বাগ খুঁজে পায় না এবং মূলত কেবল ওভারহেড রক্ষণাবেক্ষণ করে, ইন্টিগ্রেশন পরীক্ষাগুলি সত্যই প্রচেষ্টাটির পক্ষে মূল্যবান হয়েছিল।
এখন আমি একটি নতুন প্রকল্প উত্তরাধিকার সূত্রে পেয়েছি এবং কীভাবে এটি পরীক্ষা করতে হবে তা ভাবছি। এটি নেটিভ সি ++ / ওপেনজিএল অ্যাপ্লিকেশন, সুতরাং ইন্টিগ্রেশন টেস্টগুলি আসলে কোনও বিকল্প নয়। তবে সি ++ তে ইউনিট টেস্টিং জাভা থেকে কিছুটা শক্ত (আপনার স্পষ্টতই স্টাফ তৈরি করতে হবে virtual
), এবং প্রোগ্রামটি ভারিভাবে ওরিয়েন্টেড নয়, তাই আমি কিছু জিনিসকে উপহাস / স্টাব করতে পারি না।
আমি পরীক্ষাগুলি লেখার খাতিরে কিছু পরীক্ষা লেখার জন্য পুরোপুরি ছিঁড়ে ফেলতে চাই না এবং ওও-আইজ পুরো জিনিসটিই চাই না। সুতরাং আমি আপনাকে জিজ্ঞাসা করছি: আমার কীসের জন্য পরীক্ষা লিখতে হবে? উদাহরণ:
- আমি যে ক্রিয়াকলাপ / ক্লাসগুলি ঘন ঘন পরিবর্তনের প্রত্যাশা করি?
- ফাংশন / ক্লাস যেগুলি ম্যানুয়ালি পরীক্ষা করা আরও বেশি কঠিন?
- ফাংশন / ক্লাসগুলি যা ইতিমধ্যে পরীক্ষা করা সহজ?
তারা পরীক্ষা সম্পর্কে কীভাবে যায় তা দেখার জন্য আমি কয়েকটি শ্রদ্ধেয় সি ++ কোড বেসগুলি তদন্ত করতে শুরু করেছি investigate এই মুহুর্তে আমি ক্রোমিয়াম উত্স কোডটি সন্ধান করছি, তবে কোড থেকে তাদের পরীক্ষার যৌক্তিকতা বের করা আমার পক্ষে কঠিন। কারও কাছে যদি উদাহরণ রয়েছে বা জনপ্রিয় সি ++ ব্যবহারকারীদের (কমিটির সদস্যগণ, বই লেখক, গুগল, ফেসবুক, মাইক্রোসফ্ট, ...) এর কাছে এই বিষয়ে যোগাযোগ করা যায় তবে এটি অতিরিক্ত সহায়ক হতে পারে।
হালনাগাদ
এটি লেখার পর থেকে আমি এই সাইট এবং ওয়েবের চারপাশে আমার পথ অনুসন্ধান করেছি। কিছু ভাল জিনিস পাওয়া গেছে:
- ইউনিট পরীক্ষা না করা কখন উপযুক্ত?
- /programming/109432/what-not-to-test-when-it-comes-to-unit-testing
- http://junit.sourceforge.net/doc/faq/faq.htm#best
দুঃখের বিষয়, এই সমস্তগুলি বরং জাভা / সি # কেন্দ্রিক। জাভা / সি # তে প্রচুর পরীক্ষা লেখা কোনও বড় সমস্যা নয়, তাই সুবিধাটি সাধারণত ব্যয়ের চেয়ে বেশি হয়।
তবে আমি উপরে যেমন লিখেছি, এটি সি ++ তে আরও বেশি কঠিন। বিশেষত যদি আপনার কোড বেসটি তেমন না হয় তবে ভাল ইউনিট পরীক্ষার কভারেজ পাওয়ার জন্য আপনাকে গুরুতরভাবে গণ্ডগোল করতে হবে। উদাহরণস্বরূপ: আমার উত্তরাধিকার সূত্রে প্রাপ্ত অ্যাপ্লিকেশনটির একটি Graphics
নাম স্থান রয়েছে যা ওপেনগিএলের উপরে একটি পাতলা স্তর। সত্ত্বার যে কোনওটি যা সরাসরি এটির কাজগুলি সরাসরি ব্যবহার করে তা পরীক্ষা করতে - আমাকে এটিকে একটি ইন্টারফেস এবং শ্রেণিতে পরিণত করতে হবে এবং এটি সমস্ত সংস্থায় ইনজেকশন করতে হয়েছিল। এটি কেবল একটি উদাহরণ।
সুতরাং এই প্রশ্নের উত্তর দেওয়ার সময়, দয়া করে মনে রাখবেন যে আমাকে পরীক্ষার লেখার জন্য বরং একটি বড় বিনিয়োগ করতে হবে।