ইউনিট টেস্টিং এবং পরীক্ষা-চালিত উন্নয়নের কৌশল


16

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

  • সাধারণভাবে আপনি কোনও প্রদত্ত জটিল সমস্যার পূর্বের কোনও সঠিক উত্তর জানেন না, তাই আপনি কীভাবে একটি পরীক্ষা লিখতে পারেন?

  • সমান্তরালতার ডিগ্রি পরিবর্তিত হয়; আমি সম্প্রতি একটি বাগের মুখোমুখি হয়েছি যেখানে এমপিআই কাজগুলি 3 এর একাধিক হিসাবে ব্যবহার করা ব্যর্থ হবে, তবে 2 এর একাধিক কাজ করেছে। অতিরিক্তভাবে, সাধারণ পরীক্ষার কাঠামোগুলি এমপিআইয়ের খুব প্রকৃতির কারণে খুব বেশি এমপিআই-বান্ধব বলে মনে হয় না - আপনাকে কার্যের সংখ্যা পরিবর্তন করতে একটি পরীক্ষা বাইনারি পুনরায় কার্যকর করতে হবে।

  • বৈজ্ঞানিক কোডগুলিতে প্রায়শই অনেকগুলি দৃly়ভাবে সংযুক্ত, আন্তঃনির্ভরশীল এবং বিনিময়যোগ্য অংশ থাকে। আমরা সকলেই উত্তরাধিকারের কোডটি দেখেছি এবং আমরা জানি যে ভাল ডিজাইনটি ছেড়ে যাওয়া এবং বৈশ্বিক ভেরিয়েবলগুলি ব্যবহার করা কতটা লোভনীয়।

  • প্রায়শই একটি সংখ্যাসূচক পদ্ধতিটি "পরীক্ষামূলক" হতে পারে, বা কোডার এটি কীভাবে কাজ করে এবং এটি বোঝার চেষ্টা করছে তা পুরোপুরি বুঝতে পারে না, সুতরাং প্রত্যাশিত ফলাফলগুলি অসম্ভব।

আমি বৈজ্ঞানিক কোডের জন্য যে পরীক্ষাগুলি লিখি তার কয়েকটি উদাহরণ:

  • সময়ের সমন্বয়কারীদের জন্য, একটি সঠিক সমাধান সহ একটি সাধারণ ওডিই ব্যবহার করুন এবং পরীক্ষা করুন যে আপনার ইন্টিগ্রেটর এটি নির্দিষ্ট প্রদত্ত নির্ভুলতার মধ্যে সমাধান করে এবং বিভিন্ন ধাপের মাপের সাথে পরীক্ষা করে সঠিকতার ক্রমটি সঠিক।

  • শূন্য-স্থিরতা পরীক্ষা: 0 বাউন্ডারি / প্রাথমিক শর্ত সহ একটি পদ্ধতি 0 এ রয়ে গেছে তা পরীক্ষা করুন।

  • ইন্টারপোলেশন পরীক্ষা: একটি রৈখিক ক্রিয়াকলাপ দেওয়া, আশ্বাস দিন যে একটি দ্বিখণ্ডতা সঠিক।

  • উত্তরাধিকারের বৈধতা: সঠিক বলে জানা একটি লিগ্যাসি অ্যাপ্লিকেশনটিতে কোডের একটি অংশকে আলাদা করুন এবং পরীক্ষার জন্য কিছু বিচ্ছিন্ন মানগুলি টানুন।

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


আপনি কি দয়া করে স্পষ্ট করে বলতে পারেন যে দ্বিখণ্ডন পরীক্ষার মাধ্যমে আপনি কী বোঝাতে চেয়েছেন?
দিমিত্রি কাবানভ

উত্তর:


8

উত্পাদিত সমাধানের পদ্ধতি

পরিশোধন অধ্যয়নের মাধ্যমে যাচাই করুন যে পদ্ধতিটি নির্ভুলতার তাত্ত্বিক ক্রম অর্জন করে।

উত্তর সংরক্ষণ। বিট বুদ্ধিমান এবং আদর্শ-ভিত্তিক সমাধানগুলির পুনরুত্পাদন।


আমি মূল পোস্টে এমএমএসের কথা বলতে চাইছিলাম; এটি কোড যাচাইকরণের জন্য ভাল, তবে ইউনিট পরীক্ষার দৃষ্টিকোণ থেকে এটি সম্পূর্ণরূপে মূল্যহীন। যদি এই পরীক্ষাগুলি ব্যর্থ হয় তবে এটি কোথায় বা কেন সে বিষয়ে কোনও সূত্র সরবরাহ করে না।
অরেলিয়াস

3
2×2×2

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

@ অরেলিয়াস: এখানে কোন যুক্তি নেই। আপনার অনেক পরীক্ষা করা উচিত এবং এগুলি ঘন ঘন চালানো উচিত।
বিল বার্থ

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

6

বিল ইতিমধ্যে এমন কয়েকটি পদ্ধতি তালিকাভুক্ত করেছে যা আপনার উদ্বেগগুলির সমাধান করে।

আপনার তৃতীয় বিষয়টিকে সম্বোধন করে, না, অংশগুলির মধ্যে দৃ strong় সংযোগের কোনও কারণ নেই is ঠিক এর বিপরীত: আপনার ফাংশন বা ক্লাসগুলির যদি ভাল সংজ্ঞাযুক্ত ইন্টারফেস থাকে তবে উদাহরণস্বরূপ অন্যের জন্য লিনিয়ার সলভার বা একটি সময় পদক্ষেপের স্কিম বিনিময় করা আরও সহজ হবে। কেবল এটির প্রতিরোধ করুন, এবং তারপরে আপনি এই উপাদানগুলি আলাদাভাবে পরীক্ষা করতে সক্ষম হবেন। আমরা কয়েক দশক ধরে এই চুক্তিটি করেছি I

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


1
গাইদোর জবাব যোগ করতে, তিনি যে অভিজ্ঞতাটি থেকে কথা বলছেন তা হ'ল deal 3,000 টেস্টগুলিতে এনকোড করা হয়েছে যা আমরা চুক্তি করে থাকি every I প্রতিটি পরিবর্তনের পরে: dealii.org/developer/de વિકાસment/… । আপনি যদি সঠিক উত্তরটি না জানেন তবে কী করবেন এই প্রশ্নে: যাইহোক একটি পরীক্ষা লিখুন এবং এটি গতকাল উত্তরটির সাথে উত্তরটি তুলনা করুন (বা যখনই আপনি পরীক্ষা লিখেছিলেন)। কোনও কোডের আউটপুটে পরিবর্তনগুলি চিহ্নিত করার একটি উপায় থাকা মূল্যবান যদি আপনি জানেন না যে তারা উত্তরটি ভুল করেছে বা পূর্বে কোনও ভুল উত্তর সংশোধন করেছে।
ওল্ফগ্যাং ব্যাঙ্গার্থ

3

আমি সম্প্রতি এই থিসিসটি টিডিডিতে কম্পিউটারের বিজ্ঞানে পেয়েছি। আমি এটি এখনও পড়িনি তাই এটি কোনও ভাল কিনা আমার কোনও ধারণা নেই তবে আশা করি এটি কিছুটা সহায়ক হতে পারে।

http://cyber.ua.edu/files/2014/12/u0015_0000001_0001551.pdf


1
আমি কিছু অন্তর্ভুক্তি এবং উপসংহার স্কিম করেছিলাম এবং মানক পিএইচডি থিসিসের সাথে তুলনামূলকভাবে একটি মানের স্তর ধরে নিয়েছি, এটি উভয়ই প্রক্রিয়াটি (উচ্চ স্তরের উপায়ে) ব্যাখ্যা করে এবং এর কার্যকারিতা হিসাবে প্রকৃত পরিমাপ দেয়। আমি মনে করি এটি বেশ সন্ধান।
গড্রিক সের

লিঙ্কটি মারা গেছে। আপনি কী বোঝাতে চেয়েছিলেন: ন্যানথামর্নফোং, এ। "গণনা বিজ্ঞান এবং প্রকৌশল সফ্টওয়্যার বিকাশে পরীক্ষা-চালিত বিকাশ এবং রিফ্যাক্টরিং কৌশলগুলির কার্যকারিতা"। পিএইচডি বিযুক্ত।, ইউনি। আলাবামা (2014)।
AlQuemist
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.