আমি ইউনিট টেস্টিংয়ের আগে কিছুটা অভিজ্ঞতা অর্জন করেছি, আমি যা বলি (দৃj়ভাবে নয়) ক্লাসিক সফ্টওয়্যার ইঞ্জিনিয়ারিং প্রকল্প: একটি এমভিসি, একজন ব্যবহারকারী জিইআইআই, একটি ডাটাবেস, মাঝারি স্তরের ব্যবসায়িক যুক্তি ইত্যাদি। এখন আমি ' আমি সি # তে একটি বৈজ্ঞানিক কম্পিউটিং লাইব্রেরি লিখছি (হ্যাঁ, আমি জানি সি # খুব ধীর, সি ব্যবহার করুন, চাকাটি পুনরায় উদ্ভাবন করবেন না এবং সেগুলি সবই আছে, তবে আমাদের অনেক লোক সি # তে আমার অনুষদে বৈজ্ঞানিক গণনা করছেন, এবং আমাদের এটির প্রয়োজন হয়)। এটি একটি ছোট প্রকল্প, সফ্টওয়্যার ডেভলপমেন্ট ইন্ডাস্ট্রির দিক থেকে, কারণ আমি এটি বেশিরভাগ নিজেই লিখেছি এবং সময়ে সময়ে কয়েকজন সহকর্মীর সহায়তায়। এছাড়াও, আমি এর জন্য অর্থ প্রদান করি না, এবং সবচেয়ে গুরুত্বপূর্ণ, এটি একটি একাডেমিক প্রকল্প। মানে, আমি আশা করি এটি কোনও দিন পেশাদার মানের হবে, কারণ আমি উন্মুক্ত উত্সে যাওয়ার পরিকল্পনা করছি,
যাইহোক, প্রকল্পটি বড় হচ্ছে (প্রায় 18,000 লাইন কোড, যা আমি মনে করি একজনের প্রকল্পের জন্য বড়) এবং এটি আমার হাত থেকে বেরিয়ে আসছে। আমি উত্স নিয়ন্ত্রণের জন্য গিট ব্যবহার করছি, এবং আমি মনে করি যে আমি ঠিকঠাক হয়ে উঠছি, তবে আমি পুরানো বিদ্যালয়ের মতো পরীক্ষা করছি, মানে, সম্পূর্ণ কনসোল অ্যাপ্লিকেশনগুলি লিখছি যা সিস্টেমের একটি বড় অংশ পরীক্ষা করে, মূলত কারণ আমার কীভাবে কোনও ধারণা নেই এই দৃশ্যে ইউনিট টেস্টিং করা, যদিও আমার মনে হয় এটিই আমার করা উচিত। সমস্যাটি হ'ল লাইব্রেরিতে বেশিরভাগ অ্যালগরিদম রয়েছে, উদাহরণস্বরূপ, গ্রাফ অ্যালগরিদম, শ্রেণিবদ্ধকারী, সংখ্যাসূচক সমাধানকারী, এলোমেলো বিতরণ ইত্যাদি I stochastic আমি সঠিকতা যাচাই করতে জানি না। শ্রেণিবিন্যাসের জন্য, উদাহরণস্বরূপ, কিছু সূক্ষ্মতা যেমন যথার্থতা এবং পুনরায় কল করা হয়, তবে এই ম্যাট্রিকগুলি একটি একক অ্যালগরিদমের বিচারের চেয়ে দুটি অ্যালগরিদমের তুলনা করার জন্য ভাল। সুতরাং, আমি এখানে কিভাবে সংজ্ঞা দিতে পারি?
Finally there is also the problem of performance. I know its a whole different set of tests, but performance is one of the important features of a scientific tools, rather than user satisfaction, or other software engineering metrics.
আমার বৃহত্তম সমস্যাগুলির একটি হ'ল ডেটা স্ট্রাকচার। কেডি-ট্রিয়ের জন্য আমি যে পরীক্ষা করতে পারি তা হ'ল স্ট্রেস টেস্ট: প্রচুর এলোমেলো ভেক্টর সন্নিবেশ করান এবং তারপরে প্রচুর এলোমেলো অনুসন্ধান করা, এবং একটি নিষ্পাপ লিনিয়ার অনুসন্ধানের সাথে তুলনা করুন। পারফরম্যান্সের জন্য একই। এবং সংখ্যাসূচক অপটিমাইজারগুলির সাথে, আমার বেঞ্চমার্ক ফাংশন রয়েছে যা আমি পরীক্ষা করতে পারি, তবে আবার, এটি স্ট্রেস টেস্ট। আমি মনে করি না যে এই পরীক্ষাগুলি ইউনিট টেস্ট হিসাবে শ্রেণীবদ্ধ করা যেতে পারে এবং সবচেয়ে গুরুত্বপূর্ণ, ক্রমাগত চালানো হয় কারণ তাদের বেশিরভাগই ভারী। তবে আমি আরও মনে করি যে এই পরীক্ষাগুলি করা দরকার, আমি কেবল দুটি উপাদান সন্নিবেশ করতে পারি না, মূলটি পপ করতে পারি এবং হ্যাঁ, এটি 0-1-এন ক্ষেত্রে কাজ করে।
সুতরাং, এই ধরণের সফ্টওয়্যারটির (ইউনিট) পরীক্ষার পদ্ধতিটি কী, যদি কোনও হয়? এবং আমি কীভাবে ইউনিট পরীক্ষাগুলি এবং কোড-বিল্ড-কমিট-ইন্টিগ্রেটেড চক্রের চারপাশে ভারীগুলি সংগঠিত করব?