আমি কোনও সফটওয়্যার ইঞ্জিনিয়ার নই। আমি ভূ-বিজ্ঞানের ক্ষেত্রে পিএইচডি শিক্ষার্থী।
প্রায় দুই বছর আগে আমি একটি বৈজ্ঞানিক সফ্টওয়্যার প্রোগ্রামিং শুরু করেছি। আমি কখনই অবিচ্ছিন্ন ইন্টিগ্রেশন (সিআই) ব্যবহার করি নি, মূলত কারণ প্রথমে আমি জানতাম না যে এটি বিদ্যমান আছে এবং আমি এই সফ্টওয়্যারটিতে কাজ করা একমাত্র ব্যক্তি।
এখন যেহেতু সফ্টওয়্যারটির বেসটি চলছে তাই অন্যান্য লোকেরা এতে আগ্রহী হতে শুরু করে এবং সফ্টওয়্যারটিতে অবদান রাখতে চায়। পরিকল্পনাটি হ'ল অন্যান্য বিশ্ববিদ্যালয়ের অন্যান্য ব্যক্তিরা মূল সফ্টওয়্যারটিতে সংযোজনগুলি প্রয়োগ করছেন। (আমি ভয় পাচ্ছি যে তারা বাগগুলি প্রবর্তন করতে পারে)। তদ্ব্যতীত, সফ্টওয়্যারটি বেশ জটিল হয়ে উঠেছে এবং পরীক্ষা করা আরও কঠিন এবং কঠিন হয়ে গেছে এবং আমি এটিতে কাজ চালিয়ে যাওয়ার পরিকল্পনাও করছি।
এই দুটি কারণে, আমি এখন সিআই ব্যবহারের সম্পর্কে আরও বেশি করে ভাবছি। যেহেতু আমার কাছে কখনই সফ্টওয়্যার ইঞ্জিনিয়ার শিক্ষা ছিল না এবং আমার চারপাশের কেউ কখনও সিআই (আমরা বিজ্ঞানী, কোনও প্রোগ্রামার নেই) সম্পর্কে শুনিনি (আমার পক্ষে আমার প্রকল্পের কাজ শুরু করা কঠিন)।
আমার কয়েকটি প্রশ্ন রয়েছে যেখানে আমি কিছু পরামর্শ পেতে চাই:
সফ্টওয়্যারটি কীভাবে কাজ করে তার একটি সংক্ষিপ্ত ব্যাখ্যা প্রথমে:
সফ্টওয়্যারটি সমস্ত প্রয়োজনীয় সেটিংসযুক্ত এক .xML ফাইল দ্বারা নিয়ন্ত্রিত হয়। আপনি সফ্টওয়্যারটি কেবল ইনপুট আর্গুমেন্ট হিসাবে .xML ফাইলের পাথ দিয়েই শুরু করেন এবং এটি ফলাফল সহ কয়েকটি ফাইল চালায় এবং তৈরি করে। একটি একক রান ~ 30 সেকেন্ড সময় নিতে পারে।
এটি একটি বৈজ্ঞানিক সফ্টওয়্যার। প্রায় সমস্ত কার্যক্রমে একাধিক ইনপুট প্যারামিটার থাকে, যার প্রকারগুলি বেশিরভাগ ক্লাস যা বেশ জটিল। আমার কাছে বড় ক্যাটালগ সহ একাধিক .txt ফাইল রয়েছে যা এই শ্রেণীর উদাহরণ তৈরি করতে ব্যবহৃত হয়।
এখন আমার প্রশ্নে আসা যাক:
ইউনিট পরীক্ষা, ইন্টিগ্রেশন পরীক্ষা, শেষ থেকে শেষের পরীক্ষা? : আমার সফ্টওয়্যারটি এখন প্রায় 30.000 লাইনের কোডের শত শত ফাংশন এবং ~ 80 ক্লাসের সাথে। ইতিমধ্যে বাস্তবায়িত শত শত ফাংশনগুলির জন্য ইউনিট পরীক্ষা লিখতে শুরু করা আমার কাছে একরকম অদ্ভুত মনে হয়। সুতরাং আমি কেবল কিছু পরীক্ষার কেস তৈরি করার কথা ভেবেছিলাম। 10-20 বিভিন্ন .xML ফাইল প্রস্তুত করুন এবং সফ্টওয়্যারটি চালিত হতে দিন। আমার ধারণা এটিকেই শেষ-থেকে-শেষের পরীক্ষা বলা হয়? আমি প্রায়শই পড়েছি যে আপনার এটি করা উচিত নয়, তবে আপনার যদি ইতিমধ্যে একটি ওয়ার্কিং সফ্টওয়্যার থাকে তবে এটি শুরু হিসাবে ঠিক হতে পারে? অথবা এটি ইতিমধ্যে ইতিমধ্যে कार्यरत সফ্টওয়্যারটিতে সিআই যুক্ত করার চেষ্টা করার জন্য কেবল বোবা ধারণা।
ফাংশন প্যারামিটারগুলি তৈরি করা কঠিন হলে আপনি ইউনিট পরীক্ষা কীভাবে লিখবেন? ধরুন আমার একটি ফাংশন রয়েছে
double fun(vector<Class_A> a, vector<Class_B>)
এবং সাধারণত, টাইপClass_A
এবং এর অবজেক্ট তৈরি করতে আমার প্রথমে একাধিক পাঠ্য ফাইলগুলিতে পড়তে হবেClass_B
। আমি এমন কিছু ডামি ফাংশন তৈরির কথা ভেবেছিলাম যেমনClass_A create_dummy_object()
পাঠ্য ফাইলগুলিতে না পড়ে। আমি এক ধরণের সিরিয়ালাইজেশন বাস্তবায়ন সম্পর্কেও ভেবেছিলাম । (ক্লাস অবজেক্টগুলি কেবলমাত্র একাধিক পাঠ্য ফাইলের উপর নির্ভর করে সেগুলি পরীক্ষা করার পরিকল্পনা আমি করি না)ফলাফলগুলি অত্যন্ত পরিবর্তনশীল হলে কীভাবে পরীক্ষা লিখতে হয়? আমার সফ্টওয়্যার বড় মন্টে-কার্লো সিমুলেশনগুলির ব্যবহার করে এবং পুনরাবৃত্তভাবে কাজ করে। সাধারণত, আপনার কাছে ~ 1000 পুনরাবৃত্তি এবং প্রতিটি পুনরাবৃত্তিতে, আপনি মন্টে-কার্লো সিমুলেশনের উপর ভিত্তি করে অবজেক্টগুলির ~ 500-20.000 উদাহরণ তৈরি করছেন। যদি একটি পুনরাবৃত্তির কেবলমাত্র একটি ফলাফল কিছুটা আলাদা হয় তবে আগত পুনরাবৃত্তিগুলি সম্পূর্ণ আলাদা। আপনি এই পরিস্থিতিটি কীভাবে মোকাবেলা করবেন? আমি মনে করি এটি শেষ থেকে শেষের পরীক্ষার বিরুদ্ধে একটি বড় পয়েন্ট, যেহেতু শেষ ফলাফলটি অত্যন্ত পরিবর্তনশীল?
সিআইয়ের সাথে অন্য কোনও পরামর্শের প্রশংসা করা হয়।