আমি দেখতে পেয়েছি যে আমার প্রচুর গণ্য বিজ্ঞান প্রোগ্রামিংয়ের পরীক্ষার প্রয়োজনীয়তা রয়েছে যা মানক পরীক্ষার ফ্রেমওয়ার্কের আওতায় আসে না:
গণনার সময় পরীক্ষা
- অ্যালগরিদমগুলি ধীর না হয় তা নিশ্চিত করার জন্য। আমি যেমন কিছু করতে পারতাম
assureSmallerEqual(RuntimeWrapper(algorithm),53)
তবে আমি চাই যে আমি অ্যালগরিদমে কাজ করার সাথে সাথে 53 সেকেন্ডের প্রান্তিক ক্রমাগত হ্রাস পেতে পারি, যেমন কিছুassureSmallerEqual(RuntimeWrapper(algorithm),'previousbest+noisetolerance')
- অ্যালগরিদমগুলি ধীর না হয় তা নিশ্চিত করার জন্য। আমি যেমন কিছু করতে পারতাম
পারফরম্যান্স টেস্টিং
- এটি নিশ্চিত করার জন্য যে কোনও অ্যালগরিদম যা বিশ্লেষণাত্মক সমাধানের পূর্বে একটি ভাল অনুমানের সন্ধান পেয়েছিল তা এখনও একটি সমাধান খুঁজে পেয়েছে যা কমপক্ষে ভাল বা আরও ভাল। আবার এটি একটি স্ট্যান্ডার্ড ইন্টিগ্রেশন টেস্ট দ্বারা অনুকরণ করা যেতে পারে, তবে আমি চাই যে অ্যালগরিদম আরও ভাল এবং উন্নত হওয়ার সাথে সাথে সহনশীলতা ক্রমাগত সঙ্কুচিত হয়।
assureAlmostEqual(foo(),1,places=3)
দ্বারা প্রতিস্থাপন চিন্তা করুনassureAlmostEqual(foo(),1,places='previousbest')
- এটি নিশ্চিত করার জন্য যে কোনও অ্যালগরিদম যা বিশ্লেষণাত্মক সমাধানের পূর্বে একটি ভাল অনুমানের সন্ধান পেয়েছিল তা এখনও একটি সমাধান খুঁজে পেয়েছে যা কমপক্ষে ভাল বা আরও ভাল। আবার এটি একটি স্ট্যান্ডার্ড ইন্টিগ্রেশন টেস্ট দ্বারা অনুকরণ করা যেতে পারে, তবে আমি চাই যে অ্যালগরিদম আরও ভাল এবং উন্নত হওয়ার সাথে সাথে সহনশীলতা ক্রমাগত সঙ্কুচিত হয়।
শারীরিক প্রয়োজনীয়তা পরীক্ষা করা
- অ্যালগরিদমগুলিতে হঠাৎ করে আরও মেমরি / হার্ড ডিস্ক জায়গার প্রয়োজন নেই তা নিশ্চিত করতে। খুব অনুরূপ 1।
বিমূর্ত প্রয়োজনীয়তা পরীক্ষা করা
- চৌম্বকীয় অনুমানের সাথে সূক্ষ্ম কাজ করে এমন একটি অ্যালগরিদম হঠাৎ ঘন ঘন অনুমানের প্রয়োজন হয় না তা স্থিরতার জন্য হঠাৎ 0.01 প্রয়োজন হয় না তা নিশ্চিত করার জন্য। আবার এগুলি স্ট্যান্ডার্ড ইন্টিগ্রেশন টেস্ট দ্বারা অনুকরণ করা যায়, তবে লক্ষ্যটি মনে রাখতে হবে যে ক্ষুদ্রতম প্রয়োজনের প্যারামিটারটি একটি নির্দিষ্ট লক্ষ্য অর্জন করেছিল, তাই এর জন্য ম্যানুয়াল আপডেটের প্রচুর প্রয়োজন হবে। উদাহরণস্বরূপ, যদি
foo(10)
পূর্বে কোনও ব্যতিক্রম ছুঁড়ে ফেলা না হয়, তবে ফ্রেমওয়ার্কটিfoo(10)
এখনও কাজ করে কিনা তা নিশ্চিত করা এবংfoo(9)
এখন কাজ করে কিনা তা চেষ্টা করে দেখতে চাই (ভবিষ্যতে সমস্ত পরীক্ষাগুলিfoo(9)
এখনও কাজ করে তা নিশ্চিত করে)।
- চৌম্বকীয় অনুমানের সাথে সূক্ষ্ম কাজ করে এমন একটি অ্যালগরিদম হঠাৎ ঘন ঘন অনুমানের প্রয়োজন হয় না তা স্থিরতার জন্য হঠাৎ 0.01 প্রয়োজন হয় না তা নিশ্চিত করার জন্য। আবার এগুলি স্ট্যান্ডার্ড ইন্টিগ্রেশন টেস্ট দ্বারা অনুকরণ করা যায়, তবে লক্ষ্যটি মনে রাখতে হবে যে ক্ষুদ্রতম প্রয়োজনের প্যারামিটারটি একটি নির্দিষ্ট লক্ষ্য অর্জন করেছিল, তাই এর জন্য ম্যানুয়াল আপডেটের প্রচুর প্রয়োজন হবে। উদাহরণস্বরূপ, যদি
কেউ তর্ক করতে পারে যে আমি যা চাইছি তা ইউনিট / ইন্টিগ্রেশন টেস্টিংয়ের অর্থে পরীক্ষার বর্ণনা দেয় না, যেহেতু রানটাইম বৃদ্ধি পেয়েছে, উদাহরণস্বরূপ, অন্যান্য উন্নতির বিনিময়ে গ্রহণযোগ্য হতে পারে।
বাস্তবে, তবে আমি জানি যে উপরের টেস্টিংয়ের কার্যকারিতা থাকলে আমি প্রচুর ডিবাগিংয়ের সময় সাশ্রয় করতে পারতাম, কারণ 95% ক্ষেত্রে প্রয়োজনীয়তা এবং কার্য সম্পাদন আমি যে বাগগুলি প্রবর্তন করেছিলাম তার কারণ হয়ে যায়। প্রকৃতপক্ষে, আমি একটি সত্যের জন্য জানি যে আমি বহিরাগত সংখ্যাযুক্ত সফ্টওয়্যার লাইব্রেরি সহ অনেকগুলি বাগ (আমার নিজের কোড পরীক্ষা করার পরে অনেক সময় নষ্ট করার পরে) উপরের পরীক্ষাগুলি কঠোরভাবে প্রয়োগ করা যদি তুচ্ছভাবে এড়ানো যেত।
পুনশ্চ
অনুরূপ নামকরণ করা প্রশ্নটি /programming/34982863/framework-for-regression-testing-of-numerical-code কোনও সদৃশ নয় কারণ এটি কার্যকারিতা বর্ণনা করে যা স্ট্যান্ডার্ড রিগ্রেশন টেস্টিং ফ্রেমওয়ার্কগুলির সাথে আরও সহজেই অর্জনযোগ্য।
প্রশ্ন ইউনিট টেস্টিং এবং পরীক্ষা চালিত উন্নয়নের জন্য কৌশলের যেমন একটি কাঠামো সাহায্য করে তাদের বাস্তবায়ন (এবং কৌশল / জন্য এটি জিজ্ঞেস করে যে উত্তর প্রদান করা হয় আমি এখানে যা বর্ণনা, আমার মতে চেয়ে ভিন্ন হয়) বিরোধিতা কৌশল জন্য অনুরোধ।