সি ++ তে সংখ্যাসূচক অ্যাপ্লিকেশনগুলির জন্য স্যুট পরীক্ষা করা হচ্ছে?


13

সম্প্রতি, আমি আমার গ্রুপকে তাদের কোড লেখার সময় আরও পরীক্ষার জন্য অন্তর্ভুক্ত করছি। বেশ কয়েকটি বড় বাগ রয়েছে যা সম্ভবত বলার অপেক্ষা রাখার চেয়ে বেশি সময় নিয়েছিল, কারণ আমাদের জায়গায় পরীক্ষার ব্যবস্থা ভাল ছিল না।

তবে আমি সন্দেহ করি যে প্রক্রিয়াটি স্বয়ংক্রিয় করতে (বা প্রবাহকে সহায়তা করার জন্য) উপযুক্ত সরঞ্জাম থাকা অবশ্যই কার্যকর হবে। অন্যদিকে, আমি সি ++ টেস্টিং স্যুটগুলির বিভিন্ন বিকল্প জানি না এবং তাদের মধ্যে কীভাবে সিদ্ধান্ত নেব?

কী সন্ধান করতে হবে তার জন্য কি কোনও নির্দেশিকা রয়েছে এবং নির্দিষ্ট কোন সংখ্যা রয়েছে?

উত্তর:


11

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

দেখার জন্য কিভাবে deal.II এটা, এখানে কটাক্ষপাত না: http://www.dealii.org/developer/development/testsuite.html#regression_tests


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

2
এটি একটি ধ্রুব ব্যথা। দশ বছরেরও বেশি বেশি পরীক্ষায় আমরা এর সাথে মোকাবিলা করার জন্য সত্যিকারের কৌশল নিয়ে আসিনি। ডিফের পরিবর্তে নামডিফ ব্যবহার করা সাহায্য করতে পারে, তবে শেষ পর্যন্ত আপনাকে এমন একটি মেশিন নির্দিষ্ট করতে হবে যার জন্য আপনি "0.3987" সংরক্ষণের পরিবর্তে "0.3988" আপনি অন্য মেশিনে পাবেন যখন সঠিক নম্বর 0.39875 হয়। আপনি যেখানে প্রান্তিকতা নির্ধারণ করেছেন তা বিবেচনা না করেই আপনি সর্বদা এক অন্য সংখ্যাকে ভুল জায়গায় কাটাবেন।
ওল্ফগ্যাং ব্যাঙ্গার্থ

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

@ আন্ড্রে - ওহ হ্যাঁ, আমরা এই সমস্ত চেষ্টা করেছিলাম। এটি এখনও কঠিন :-)
ওল্ফগ্যাং ব্যাঙ্গারথ

10

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


গুগলতেস্ট সম্পর্কে একটি দুর্দান্ত বিষয় হ'ল তারা এটিকে এর উত্স কোডটি একটি অ্যাপ্লিকেশনে অন্তর্ভুক্ত করা সহজ করে তোলে, তাই আপনাকে এটিকে নির্ভরতা তৈরি করতে হবে না।
জেফ অক্সবেরি

4

আপনি যদি সিএমকে দিয়ে আপনার কোডটি তৈরি করে থাকেন তবে স্নিগ্ধর প্রক্রিয়াটি হ'ল স্পষ্ট পছন্দ। এটি আপনাকে কমান্ডের মাধ্যমে আপনার কোডটি ম্যানুয়ালি পরীক্ষার অনুমতি দেয় ctestএবং সিডিএশের মাধ্যমে রাতের বিস্তৃত পরীক্ষার পক্ষেও সমর্থন করে ।


1

আমাদের গণ্য জীববিজ্ঞান সি ++ লাইব্রেরির ( চাস্ট ) জন্য আমরা http://cxxtest.com/ ব্যবহার করি । এটি ব্যবহার করা মোটামুটি সহজ, ভাল কাজ করে, এটি assert()স্টাইলের স্টেটমেন্টগুলির সাথে পরীক্ষার জন্য কয়েকটি ম্যাক্রোগুলি সরবরাহ করে । বৈজ্ঞানিক কম্পিউটিংয়ের জন্য এগুলি সাধারণত TS_ASSERT_EQUALS(a,b)সংখ্যাসূচক তুলনা বা সংখ্যাসূচক তুলনাগুলি TS_ASSERT_DELTA(a,b,tolerance)

অতিরিক্ত ম্যাক্রোগুলি খুব সহজেই নিজের পছন্দসই ভেক্টর / ম্যাট্রিকের পছন্দগুলির সাথে তুলনা করতে এই বেসিকগুলি ব্যবহার করে সহজেই লেখা যায়। কার্যকরভাবে, আপনিও পরীক্ষা করতে পারেন যে আপনার কোড প্রদত্ত পরিস্থিতিতে যথাযথ সতর্কতা এবং ত্রুটি বার্তা ছুড়েছে। আপনি testআমাদের উত্স কোডের ফোল্ডারগুলিতে এখানে কয়েকটি উদাহরণ ব্রাউজ করতে পারেন : https://chaste.cs.ox.ac.uk/trac/browser/trunk

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