সংখ্যাগত সফ্টওয়্যার বিকাশের জন্য কি টেস্টিং ফ্রেমওয়ার্ক রয়েছে?


10

আমি দেখতে পেয়েছি যে আমার প্রচুর গণ্য বিজ্ঞান প্রোগ্রামিংয়ের পরীক্ষার প্রয়োজনীয়তা রয়েছে যা মানক পরীক্ষার ফ্রেমওয়ার্কের আওতায় আসে না:

  1. গণনার সময় পরীক্ষা

    • অ্যালগরিদমগুলি ধীর না হয় তা নিশ্চিত করার জন্য। আমি যেমন কিছু করতে পারতাম assureSmallerEqual(RuntimeWrapper(algorithm),53)তবে আমি চাই যে আমি অ্যালগরিদমে কাজ করার সাথে সাথে 53 সেকেন্ডের প্রান্তিক ক্রমাগত হ্রাস পেতে পারি, যেমন কিছুassureSmallerEqual(RuntimeWrapper(algorithm),'previousbest+noisetolerance')
  2. পারফরম্যান্স টেস্টিং

    • এটি নিশ্চিত করার জন্য যে কোনও অ্যালগরিদম যা বিশ্লেষণাত্মক সমাধানের পূর্বে একটি ভাল অনুমানের সন্ধান পেয়েছিল তা এখনও একটি সমাধান খুঁজে পেয়েছে যা কমপক্ষে ভাল বা আরও ভাল। আবার এটি একটি স্ট্যান্ডার্ড ইন্টিগ্রেশন টেস্ট দ্বারা অনুকরণ করা যেতে পারে, তবে আমি চাই যে অ্যালগরিদম আরও ভাল এবং উন্নত হওয়ার সাথে সাথে সহনশীলতা ক্রমাগত সঙ্কুচিত হয়। assureAlmostEqual(foo(),1,places=3)দ্বারা প্রতিস্থাপন চিন্তা করুনassureAlmostEqual(foo(),1,places='previousbest')
  3. শারীরিক প্রয়োজনীয়তা পরীক্ষা করা

    • অ্যালগরিদমগুলিতে হঠাৎ করে আরও মেমরি / হার্ড ডিস্ক জায়গার প্রয়োজন নেই তা নিশ্চিত করতে। খুব অনুরূপ 1।
  4. বিমূর্ত প্রয়োজনীয়তা পরীক্ষা করা

    • চৌম্বকীয় অনুমানের সাথে সূক্ষ্ম কাজ করে এমন একটি অ্যালগরিদম হঠাৎ ঘন ঘন অনুমানের প্রয়োজন হয় না তা স্থিরতার জন্য হঠাৎ 0.01 প্রয়োজন হয় না তা নিশ্চিত করার জন্য। আবার এগুলি স্ট্যান্ডার্ড ইন্টিগ্রেশন টেস্ট দ্বারা অনুকরণ করা যায়, তবে লক্ষ্যটি মনে রাখতে হবে যে ক্ষুদ্রতম প্রয়োজনের প্যারামিটারটি একটি নির্দিষ্ট লক্ষ্য অর্জন করেছিল, তাই এর জন্য ম্যানুয়াল আপডেটের প্রচুর প্রয়োজন হবে। উদাহরণস্বরূপ, যদি foo(10)পূর্বে কোনও ব্যতিক্রম ছুঁড়ে ফেলা না হয়, তবে ফ্রেমওয়ার্কটি foo(10)এখনও কাজ করে কিনা তা নিশ্চিত করা এবং foo(9)এখন কাজ করে কিনা তা চেষ্টা করে দেখতে চাই (ভবিষ্যতে সমস্ত পরীক্ষাগুলি foo(9)এখনও কাজ করে তা নিশ্চিত করে)।

কেউ তর্ক করতে পারে যে আমি যা চাইছি তা ইউনিট / ইন্টিগ্রেশন টেস্টিংয়ের অর্থে পরীক্ষার বর্ণনা দেয় না, যেহেতু রানটাইম বৃদ্ধি পেয়েছে, উদাহরণস্বরূপ, অন্যান্য উন্নতির বিনিময়ে গ্রহণযোগ্য হতে পারে।
বাস্তবে, তবে আমি জানি যে উপরের টেস্টিংয়ের কার্যকারিতা থাকলে আমি প্রচুর ডিবাগিংয়ের সময় সাশ্রয় করতে পারতাম, কারণ 95% ক্ষেত্রে প্রয়োজনীয়তা এবং কার্য সম্পাদন আমি যে বাগগুলি প্রবর্তন করেছিলাম তার কারণ হয়ে যায়। প্রকৃতপক্ষে, আমি একটি সত্যের জন্য জানি যে আমি বহিরাগত সংখ্যাযুক্ত সফ্টওয়্যার লাইব্রেরি সহ অনেকগুলি বাগ (আমার নিজের কোড পরীক্ষা করার পরে অনেক সময় নষ্ট করার পরে) উপরের পরীক্ষাগুলি কঠোরভাবে প্রয়োগ করা যদি তুচ্ছভাবে এড়ানো যেত।

পুনশ্চ

অনুরূপ নামকরণ করা প্রশ্নটি /programming/34982863/framework-for-regression-testing-of-numerical-code কোনও সদৃশ নয় কারণ এটি কার্যকারিতা বর্ণনা করে যা স্ট্যান্ডার্ড রিগ্রেশন টেস্টিং ফ্রেমওয়ার্কগুলির সাথে আরও সহজেই অর্জনযোগ্য।

প্রশ্ন ইউনিট টেস্টিং এবং পরীক্ষা চালিত উন্নয়নের জন্য কৌশলের যেমন একটি কাঠামো সাহায্য করে তাদের বাস্তবায়ন (এবং কৌশল / জন্য এটি জিজ্ঞেস করে যে উত্তর প্রদান করা হয় আমি এখানে যা বর্ণনা, আমার মতে চেয়ে ভিন্ন হয়) বিরোধিতা কৌশল জন্য অনুরোধ।


1
সিমুলেশন বা পরীক্ষামূলক ডেটা বিশ্লেষণের জন্য সংখ্যার সফটওয়্যারটি কি?
ম্যাথেজ গুঁথার

1
@ মাতৃগুন্থার সংখ্যার বিশ্লেষণ / সংখ্যার বীজগণিত bra কোনও ডেটা বিশ্লেষণ নেই
কলাচ

1
আমি জানি যে অনেকগুলি বড় সিমুলেশন সংস্থাগুলি তারা নিজেরাই তৈরি ফ্রেমওয়ার্ক ব্যবহার করে। মূলত পাইথনে। অজগর স্ক্রিপ্টগুলি দ্বারা শুরু হওয়া আপনার কিছু পরীক্ষার কেস থাকতে হবে এবং কিছু ফলাফল লিখতে হবে। এর পরে ফলাফলগুলি কোনও ধরণের রেফারেন্সের সাথে তুলনা করা যায় এবং প্রতিবেদন আউটপুট দেয়। পরীক্ষাটি দৈনিক বা সাপ্তাহিক বা মাসিক ইত্যাদিকে একটি রান অটোমাইজ করা যেতে পারে ইত্যাদি নিশ্চিত না যে জেনারেল কাঠামোর কোনও ধরণের রয়েছে কিনা যেমন সিমুলেশন সফ্টওয়্যার বাস্তবায়নের ক্ষেত্রে বিশেষ বিশেষ।
ভাইডেসস্টার

উত্তর:


4

১. এই ধরণের পরীক্ষাটি আমার কাছে খারাপভাবে সংজ্ঞায়িত বলে মনে হয় কারণ এর পরীক্ষার শর্তটি সেই নির্দিষ্ট মেশিনের সাথে আবদ্ধ, যার উপরে আপনি বিকাশে পরীক্ষা করেছিলেন। পরীক্ষার অন্যতম বিষয় হ'ল আমার ল্যাপটপে আপনার পরীক্ষা চালানো আমাকে বলে যে কোড বা পরিবেশটি আমি সেট আপ করেছি তাতে কোনও সমস্যা আছে কিনা। 53 সেকেন্ড আপনার বিকাশ মেশিনের সাথে সুনির্দিষ্ট এবং টেস্টিং মেশিনটি যদি অন্য কাজের চাপ বা ব্যবহারকারীদের লোডের নিচে থাকে তবে চলমান সময়ও বাড়বে। আমি টেস্টিং ফ্রেমওয়ার্কগুলি এটিকে সমাধান করার আশা করব না: "ফাংশনটি ইনপুটটিতে 53 সেকেন্ডের মধ্যে চলে" কেবল খুব ভাল যথাযথতা নয়।

২. আমি মনে করি যে একই কারণে সফ্টওয়্যার পরীক্ষার দৃষ্টিকোণ থেকে এই অস্পষ্ট এবং অনাকাঙ্ক্ষিত 1 , আপনি সফ্টওয়্যার পরীক্ষার জন্য পাস-বা-ব্যর্থ সমর্থনটি হারাবেন।

৩. এটি বেশ সাধারণ, আমাকে একটি সমাধান বর্ণনা করতে দিন। এটি কোনও পরীক্ষামূলক কাঠামোর কাজ নয়, তবে ইউনিক্স এসই প্রশ্নে বর্ণিত একটি পৃথক সরঞ্জাম ব্যবহার করতে পারেন একটি একক লিনাক্স প্রক্রিয়ার জন্য মেমরির ব্যবহার সীমাবদ্ধ করুন । প্রথমে চেষ্টা করার একটি আদর্শ সরঞ্জাম হ'ল ulimitকমান্ডটি bash, যা আপনাকে একটি প্রক্রিয়া চালাতে দেয় এবং নিশ্চিত করে যে এটি ক্র্যাশ হয়েছে কিনা তা নিশ্চিত করতে পারে, উদাহরণস্বরূপ, অত্যধিক মেমরি বরাদ্দ করতে। সুতরাং আপনি যদি runtestsমেমরির সীমা দিয়ে স্ক্রিপ্টটি চালান , এটি ক্রাশ হবে এবং পরীক্ষার কাঠামোটি নিয়মিত পরীক্ষার ব্যর্থতা হিসাবে এটি পরিচালনা করতে সক্ষম হবে।

4. সর্বাধিক পরীক্ষামূলক অবকাঠামো ইউনিট মনে করি না এই ভাবে পরীক্ষা আদৌ । পরীক্ষার স্যুটটি চালানো হয় (যেমন, মাস্টার কোড করার আগে বা মোতায়েনের আগে), এবং ফলাফলটি হ্যাঁ বা কোনও এটি কার্যকর হয় কিনা তা নির্দেশ করে। টেস্টিং ফ্রেমওয়ার্কগুলি এটিকে তাদের কাজের অংশ হিসাবে বিবেচনা করে না, উদাহরণস্বরূপ, বৈশিষ্ট্যটির অগ্রগতি ট্র্যাক করুন এবং টেস্টিং সাধারণত এটি হয় না। আপনি এখানে যা করতে চান তা হল আপনি দুটি পরীক্ষা লিখবেন expect_succeeds(foo(10)); expect_fails(foo(9))। প্রতিবার, উভয় পরীক্ষা চালানো হয়, এবং সাফল্য এবং প্রত্যাশিত ব্যর্থতা পাস করে। আপনি যখন প্রয়োগ করেন foo(9)এবং এটি সফল হয়, প্রত্যাশা-ব্যর্থতা পরীক্ষা এখন ব্যর্থ হয়, তাই আপনি আবার লিখতে চাইexpect_succeeds(foo(9)), এবং এটি সমস্ত ফ্রেমওয়ার্কের একেবারে মানক বৈশিষ্ট্য। তবে আপনি কী আচরণের প্রত্যাশা করবেন সে সম্পর্কে আপনাকে অবশ্যই স্পষ্ট হওয়া উচিত, কারণ অন্যথায় এটি সফ্টওয়্যার পরীক্ষার প্রাথমিক ধারণাগুলির বিরুদ্ধে যায়।

এই সমস্ত বিকল্প আছে। আপনি আপনার কোডটির পুনরাবৃত্ত অগ্রগতি ট্র্যাকিংয়ের জন্য অতিরিক্ত কাজ করার জন্য পরীক্ষার কাঠামোটি পাওয়ার চেষ্টা করছেন, তবে ফ্রেমওয়ার্কগুলি পরীক্ষার কাজ করছেন, এবং পাস-বা-ব্যর্থ উত্তর দিয়ে কোডের স্ন্যাপশটগুলিতে কাজ করার আশা করা হচ্ছে । এটি একটি অ্যালগরিদম নিতে সহজ হতে পারে জন্য একটি পরীক্ষা স্যুট তৈরি যেমন হয়, তাহলে একটি পূর্ণ অনুলিপি তৈরি নামক , পরীক্ষা আছে , এবং শুধুমাত্র কাজ করা চালিয়ে । এখন (ক) পরীক্ষার কাঠামোটিকে তখন এবং তুলনা করতে কোনও সমস্যা হবে নাAAABperforms_better(foo_A(), foo_B())BAB, এবং (খ) কোডটি কীভাবে ব্যবহৃত হত তার সাথে তুলনা করার আর কোনও ধারণা নেই, সমস্ত কোড এবং পরীক্ষাগুলি এখন অপরিবর্তনীয় এবং দ্ব্যর্থহীন। এটি সিস্টেমের পুনর্লিখনগুলি কীভাবে পরিচালনা করতে পারে তার আত্মার সাথে একই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.