আমরা কীভাবে নিশ্চিত হতে পারি যে কম্পিউটার প্রোগ্রামিংয়ের নিম্ন উপাদানগুলি যেমন সংকলক, সমাবেশকারী, মেশিনের নির্দেশাবলী, ইত্যাদি ত্রুটিবিহীন?


57

যেহেতু আমরা প্রতিদিনের জীবনের অত্যন্ত গুরুত্বপূর্ণ কাজগুলি সহ কম্পিউটারের উপর আরও বেশি নির্ভরশীল হয়ে উঠছি, আমি তখন ভাবছিলাম যে এই গুরুত্বপূর্ণ উপাদানগুলি কীভাবে পরীক্ষা করা হয়।

আরও প্রযুক্তিগতভাবে, সংকলক এবং সমাবেশকারীদের কীভাবে পরীক্ষা করা হয়? (আমি মনে করি এটি থামানো সমস্যার সাথে সম্পর্কিত !)


36
আপনি "কেন থম্পসন হ্যাক" দিয়ে আপনার গবেষণা শুরু করতে চাইতে পারেন বিশ্বস্ত বিশ্বাসের প্রতিচ্ছবি
ব্রায়ান ওকলে

7
এখানে সংকলকের উদাহরণ রয়েছে যার জন্য এখানে নির্ভুলতার প্রমাণ রয়েছে: compcert.inria.fr/doc/index.html
জর্জিও

8
বেশিরভাগ সংকলক / লিকার / এসেম্বেলারদের বিভিন্ন পরিস্থিতিতে প্রচুর ব্যবহার করে খুব গভীরভাবে পরীক্ষা করা হয়। ত্রুটিগুলি সন্ধানের জন্য, কয়েক মিলিয়ন ব্যবহারকারী আপনার সংকলক ব্যবহার করে এমন কিছু নেই।
বার্ট ভ্যান ইনজেন শেহেনো

3
এবং অপারেটিং সিস্টেমটিকে তালিকায় যুক্ত করুন।
এরিক tদ

উত্তর:


104

আপনি নিশ্চিত হতে পারবেন না, তবে আপনি যতক্ষণ না আবিষ্কার করেন ততক্ষণ আপনি সেগুলি হবেন। কয়েক বছর ধরে সংকলক এবং হার্ডওয়্যারগুলিতে প্রচুর বাগ রয়েছে।

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

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

শেষ পর্যন্ত এটি একটি সম্ভাবনার খেলা, এবং পুনরাবৃত্তি এবং বিস্তৃতভাবে আবরণ পরীক্ষা আপনাকে ত্রুটিগুলির সম্ভাব্যতাটিকে অন্য কোনও সফ্টওয়্যার প্রকল্পের মতোই গ্রহণযোগ্যভাবে নিম্ন স্তরে নামাতে দেয়।


7
আমি প্রায়শই ওপি হিসাবে একই প্রশ্নটি ভাবছিলাম, তবে ডিবিএমএসের ক্ষেত্রে। আপনি একটি দুর্দান্ত উদাহরণ দিয়েছেন যা এসকিউএলাইটের প্রসঙ্গে এটির উত্তর দিয়েছে। ধন্যবাদ!
ব্র্যান্ডন

7
+1 তবে আমি সন্দেহ করি যে "সংকলক এবং অন্যান্য মূল সরঞ্জামগুলির মধ্যে একই অনুপাত রয়েছে"।
মেহরদাদ

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

7
আমি এই ধারণার অধীনে ছিলাম যে এসকিউএলাইট একটি সর্বাধিক "বিস্তৃতভাবে পরীক্ষিত" সফ্টওয়্যারের টুকরো (পরীক্ষামূলক কোডের লাইন অনুসারে / অপারেশনাল কোডের লাইনগুলির ক্ষেত্রে) সাধারণ ব্যবহারের জন্য উপলব্ধ, আরও অনেক সংকলক ছাড়াও। যদি অন্য কিছু না হয় তবে একটি পূর্ণ বৈশিষ্ট্যযুক্ত সংকলকটি একটি সফটওয়্যারটির একটি বিশাল অংশ। (জিসিসি 14.5 মিলিয়ন লাইনের উপরে রয়েছে বলে মনে হয় না either সম্ভবত সংকলক সংগ্রহটি কেবলমাত্র 14 কে এলওসি, বা তাদের 14-বিলিয়ন-লাইনের পরীক্ষামূলক কোডবেস পাশে রয়েছে! :
ডেভিড জেড

2
@ ডেভিডজেড: এটি অবশ্যই একমাত্র প্রকল্প যা আমি জানতে পারি বিস্তৃত ওওএম পরীক্ষার জন্য উদাহরণস্বরূপ (তারা পরীক্ষার জন্য একটি ফল্ট ইনজেক্টর ব্যবহার করে এবং পুনরায় খেলায় পুনরায় খেলুন এবং প্রথম তৃতীয়, পরে দ্বিতীয় বরাদ্দ ... সম্পূর্ণ পরীক্ষা হওয়া পর্যন্ত কার্যকর করা হয়)।
ম্যাথিউ এম এম

46

সাধারণ লোকের পদে:

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

শেষের সারি:

আমি বলব ওওপি ( এলডি, পেন এবং পি ওপুলার) এর জন্য যান। আমি সবেমাত্র সংক্ষিপ্ত রূপটি তৈরি করেছি।


19
+1 আরেকটি টিএলএ (তিনটি বর্ণের সংক্ষিপ্ত রূপ) আবিষ্কার করার জন্য - পৃথিবীতে এখনও এগুলি পর্যাপ্ত পরিমাণে নেই।
s1lv3r

34
এছাড়াও, কম্পিউটার প্রোগ্রামিংয়ে এখনও ওওপির কোনও অর্থ ছিল না। তো কেটিটি (তোমার কাছে কুডোস)!
পিয়েরে আরলাড 21

15
পিয়েরের মন্তব্যটি একটি ডোকন @ ড্যান্নো।
ইয়ান্নিস

19
বিকল্পভাবে, এটি পি ওপুলার, এলডি এবং পেন করতে পারে। ;) প্রকৃতপক্ষে, আমি তাদেরকে গুরুত্বের দিক দিয়ে এটি করব।
jpmc26

23
@ jpmc26 আমি ব্যবহারিক, ওল্ড, ওপেন এবং জনপ্রিয়দের সাথে যেতে চাই। সংক্ষিপ্তসার হিসাবে ...
স্টুপিডঅন

24

এটি সমস্ত ভাবে কচ্ছপ।

কিছুই নিশ্চিত। আত্মবিশ্বাসের রেটিংয়ের উপর স্থিতিশীল করা ছাড়া আপনার কোনও বিকল্প নেই।

আপনি এটিকে স্ট্যাক হিসাবে ভাবতে পারেন: গণিত> পদার্থবিজ্ঞান> হার্ডওয়্যার> ফার্মওয়্যার> অপারেটিং সিস্টেম> এসেম্ব্লার / কম্পাইলার / ইত্যাদি

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

কৌশলগত অংশটি এই পরীক্ষাগুলির কয়েকটিতে পুনরাবৃত্তিটি উন্মোচন করছে কারণ আমরা এখন প্রমাণ এবং পর্যবেক্ষণ বিশ্লেষণ করতে প্রোগ্রামগুলি ব্যবহার করি যেখানে এটি হাতে হাতে করা খুব কঠিন হয়ে পড়েছে।

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

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


17

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

বেশিরভাগ সি, সি ++ এবং জাভাতে 25+ বছরের প্রোগ্রামিংয়ের মধ্যে আমি পেয়েছি:

  • সংকলক বাগের কারণে দুটি বাগ (জিসিসি এবং সানোস সি)
  • জাভা জেভিএম সমস্যার কারণে প্রতিবছর একবার বা দু'বার একটি বাগ (সাধারণত মেমরির খরচ / আবর্জনা সংগ্রহের সাথে সম্পর্কিত)
  • প্রতি মাসে একবার বা দু'বার একটি লাইব্রেরিতে একটি বাগ, যা প্রায়শই সর্বশেষতম সংস্করণ ব্যবহার করে বা লাইব্রেরির পূর্ববর্তী সংস্করণে ফিরে এসে স্থির করা হয়

অন্যান্য বাগগুলি সমস্ত একটি বাগের সাথে সরাসরি সম্পর্কিত হয় বা প্রায়শই, একটি লাইব্রেরি কীভাবে কাজ করে তা বোঝার অভাব। কখনও কখনও যা বাগ বলে মনে হয় তা অসম্পূর্ণতার কারণে হয়, উদাহরণস্বরূপ জাভা শ্রেণীর কাঠামোটি কীভাবে পরিবর্তিত হয়েছিল যা কিছু এওপি লাইব্রেরিগুলিকে ভেঙে দেয়।


আমি কৌতূহলী - কোন ভাষার জন্য কোন বছর? সি ++ যথাযথভাবে মানক হওয়ার আগে ইসিজিএসের আগের দিনগুলিতে সংকলক বাগগুলি খুঁজে পাওয়া এতটা কঠিন ছিল না ...
চার্লস ডাফি

3
সংকলক, সিপু বা ভাষা যত বেশি অস্পষ্ট হবে ততই সহজ সংকলকগুলিতে বাগ খুঁজে পাওয়া (অন্য কারও আগে) সুতরাং জিসিসি সি তে 2 খুঁজে পাওয়া খুব ভাল :)
সুরেট

1
এটি যেমন ঘটেছিল, আমি আমার জিডিবি স্ক্রিপ্টগুলিতে যে সমস্যাটি ভুগছিলাম তা অনুমান করে বা আমি যা যা পরীক্ষা করছি তা বোঝার জন্য আমি প্রায় এক মাস নষ্ট করেছি। অবশেষে আমি সন্দেহজনক হয়ে উঠলাম, আমার পরীক্ষার কেসটিকে সহজতর করেছিলাম এবং একটি লাইব্রেরিতে (libkvm) নকশার ত্রুটি পেয়েছি, যা কার্নেল ডিবাগারকে একটি কোর ডাম্প থেকে নির্দিষ্ট ঠিকানাগুলি অ্যাক্সেস করতে অক্ষম করেছিল। অর্থাত্ ওয়াইএমএমভি - এবং যখন আমি আমার প্রবাহের কোডটিতে একটি নতুন বাগ খুঁজে পাই, বিশেষত বিকাশের পরিবর্তে আমি ব্যবহার করি তখন আমি সবচেয়ে বেশি খুশি।
অর্লি স্টিফেন্স

অবশ্যই এটি কোনও সংকলক বাগ বা এমনকি সাধারণভাবে ব্যবহৃত একটি গ্রন্থাগার ছিল না। এবং সত্য বলতে চাই, আমি কোনও ফ্রিকোয়েন্সি সহ এগুলিতে কোনও বাগ খুঁজে পাই না।
অ্যারি স্টিফেন্স

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

8

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

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

মাইক্রোসফ্ট ওয়ার্ড লাইসেন্স চুক্তি থেকে

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

সংক্ষেপে আপনি এই সফ্টওয়্যারটির প্রায় প্রতিটি টুকরো লাইসেন্সের মধ্যে এই বাক্যটি বিশেষভাবে ব্যবহার করেন যা আপনাকে বলে যে আপনি এই সফ্টওয়্যারটির উপর নির্ভর করতে পারবেন না এবং এই সংকলকটি ব্যবহার করা যাক।

সফ্টওয়্যারটি একটি বৈজ্ঞানিক তত্ত্বের মতো, এটি না করা পর্যন্ত নির্দিষ্ট হিসাবে কাজ করা বলে মনে করা হয়।


+1 উল্লেখ করার জন্য যে খুব লাইসেন্স বলে যে কোনও সফ্টওয়্যার নিখুঁত নয়।
তুলাইনস কর্ডোভা

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

1
ওয়ারেন্টি ফ্রেঞ্চিংয়ের এই বিটটির একটি স্পষ্ট ভাষায় অনুবাদ হ'ল, "এটি সফ্টওয়্যারটির একটি অংশ হতে পারে, বা এটি sh * t এর টুকরো হতে পারে work এটি কাজ করতে পারে not এটি কাজ করে না Even এমনকি এটি কাজ না করলেও আপনি যা চান তা করুন। ওহ-দ্য ওয়ে, আমরা অন্য কারও কাছ থেকে এর বিট চুরি করে নিয়েছি oo খুব খারাপ। আমরা আপনার টাকা পেয়েছি এবং প্রচুর আইনজীবি নিয়োগের জন্য এটি ব্যবহার করেছি G খেলা! চালু! ন্যাহ-ন্যাহ -nyah-nyah-nyaaah-naah! "। :-)
বব জার্ভিস

2
@ সাবজায়ারভিস: কিছু ওপেন সোর্স সফ্টওয়্যার (যেমন এনএমএপ আইআইআরসি) তে ব্যবহৃত আমার প্রিয় ওয়ারেন্টি স্টেটমেন্টটি হ'ল "যদি এটি ভেঙে যায় তবে আপনি উভয় টুকরো রাখতে পারবেন"।
পিটার কর্ডেস

এই বিবৃতিটি ওপেন সোর্স সফ্টওয়্যারগুলিতে সর্বব্যাপী এবং প্রচুর ব্যয়বহুল ক্লোজড সোর্স সফ্টওয়্যার। এটি বেশিরভাগ বাণিজ্যিক অর্থ প্রদান করা সফ্টওয়্যার লাইসেন্সগুলিতে উপস্থিত হয় না।
jwg

2

গণিতের ভাষার সংকলক লেখক হিসাবে *, আমার অভিজ্ঞতা থেকে আমি তত্ত্বে বলতে পারি যে আপনি পারবেন না। এবং কিছু বাগ ঠিকমতো ভুল ফলাফল দেয় (যেমন আমার লজ্জা তালিকা 6/3*2থেকে ) ডান থেকে গণনা করা 6/(3*2)এবং ক্রাশ না করে বা সংবেদনহীন সংকলনের ত্রুটি না দিয়ে 1 আউটপুট আউট করা।

তবে IMHO অনেক সংকলকের অন্যান্য সফ্টওয়্যারগুলির মতো তত বাগ নেই কারণ:

  • ইউনিট পরীক্ষাগুলি লেখা সহজ। প্রতিটি বিবৃতি একটি ইউনিট এবং আপনি টেপা হিসাবে সহজ লিখতে পারেন:test_unit("2+(-2)*(-2+1)*3+1",9);
  • একটি প্রোগ্রাম স্টেটমেন্টের সংমিশ্রণ এবং কোনও প্রোগ্রামের সঠিক ফলাফল আউটপুট করার জন্য প্রতিটি পৃথক বিবৃতি অবশ্যই সঠিক ফলাফল দিতে পারে (বেশিরভাগই)। সুতরাং প্রোগ্রামটি সঠিক ফলাফল দেওয়ার সময় কোনও বাগ থাকা খুব সম্ভব নয় very
  • আকার এবং লিখিত প্রোগ্রামগুলির সংখ্যা ত্রুটিযুক্তভাবে বাগগুলি ধরার সম্ভাবনা বৃদ্ধি করে।

সমাবেশকারীদের জন্য, মেশিনের নির্দেশাবলী ইত্যাদির জন্য উপরেরগুলিও রাখে; অন্যদিকে চিপ ডিজাইন ও উত্পাদনে যাচাইকরণ এবং যাচাইকরণের অনেক বেশি কঠোর প্রক্রিয়া রয়েছে কারণ এটি একটি বিশাল ব্যবসা: বৈদ্যুতিন ডিজাইনের অটোমেশন

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

সংক্ষেপে এটি সংকলক, মেশিন কোড ইত্যাদিতে গুরুতর ত্রুটিযুক্ত হওয়ার সম্ভাবনা খুব কম is

আমার নম্র গণিতের ভাষা *


ইন্টেল তাদের সিপিইউগুলির বাইরে এলোমেলো নির্দেশাবলীর ক্রম চালিয়ে এবং অন্যান্য বিষয়গুলির মধ্যে একটি সফ্টওয়্যার মডেলের সাথে তুলনা করে পরীক্ষা করে থাকে: tweakers.net/reviews/740/4/… । এ কারণেই আপনি প্রায়শই অস্বাভাবিক মোডে নির্দেশনাগুলির সত্যিকারের অসম্ভব সংমিশ্রণের জন্য প্রকাশিত সত্যই অস্পষ্ট ত্রুটিটি দেখতে পান।
পিটার কর্ডেস

0

ফ্ললেস? তারা না. আমি সম্প্রতি কিছু "আপডেট" ইনস্টল করেছি এবং আমার এএসপি.নেট সাইটটি কীভাবে বিভিন্ন বেসিক জিনিসগুলি কাজ করেছিল বা ব্যর্থ হয়েছিল তা সম্পর্কে অব্যক্ত পরিবর্তনের কারণে কয়েক মাস পরে (এবং কোডের বেশ কয়েকটি পুনরায় প্রোগ্রাম করা অংশ) পরে এসেছিল।

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

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


-1

অন্তর্নিহিত সিস্টেমগুলি আপনাকে ত্রুটিবিহীন দেখানোর জন্য

ক) তারা ত্রুটিযুক্ত প্রমাণ করার প্রয়োজন

  1. গাণিতিক প্রমাণ
  2. তুচ্ছ প্রোগ্রামগুলির জন্য কেবল বাস্তবসম্মতভাবে সম্ভব

খ) একটি নিখরচায় পরীক্ষা করুন

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

সফ্টওয়্যার পরীক্ষায় সম্পূর্ণ পরীক্ষা কেবল কিছু সাধারণ ফাংশনের ইউনিট পরীক্ষায় ব্যবহৃত হয়।

উদাহরণ: আপনি কোনও ক্ষেত্রের একটি 8 টি অক্ষরের utf-8 ইনপুট পরীক্ষা করতে চান, আপনি বাইটগুলিতে utf-8 এর সর্বোচ্চ দৈর্ঘ্যের 6 গুণ 8 বার ইনপুটটি কাটতে পছন্দ করেন যা 8 * 6 = 48 বাইট দেয় আসলে একটি সীমাবদ্ধতা সম্ভাবনা।

আপনি এখন ভাবতে পারেন যে আপনি কেবলমাত্র 8 টি চরিত্রের প্রত্যেকটির 1,112,064 টি বৈধ কোড পয়েন্ট পরীক্ষা করতে হবে । 1,112,064 ^ 8 (10 ^ 48 বলুন) পরীক্ষা (যা ইতিমধ্যে সম্ভব হওয়ার সম্ভাবনা নেই), তবে আপনাকে প্রকৃতপক্ষে 48 বাইট বা 256 each 48 এর প্রতিটি মান পরীক্ষা করতে হবে যা 10 ^ 120 এর কাছাকাছি যা দাবারের মতো একই জটিলতা প্রায় 10 in 80 এর মহাবিশ্বে মোট পরমাণুর সংখ্যার তুলনায়।

পরিবর্তে আপনি চেষ্টা ক্রম ক্রম ব্যবহার করতে পারেন এবং প্রতিটি পরীক্ষা পূর্ববর্তী সমস্ত আবরণ করা উচিত:

ক) একটি ভাল এবং একটি খারাপ নমুনা পরীক্ষা।

খ) কোড কভারেজ, যেমন। কোডের প্রতিটি লাইন পরীক্ষা করার চেষ্টা করুন, যা বেশিরভাগ কোডের তুলনায় সহজ। এখন আপনি ভাবতে পারেন যে কোডটি আপনি পরীক্ষা করতে পারবেন না তার শেষ 1% কী আছে ... বাগ, ডেড কোড, হার্ডওয়্যার ব্যতিক্রম ইত্যাদি

গ) পাথ কভারেজ, সমস্ত সংমিশ্রণের সমস্ত শাখার ফলাফল পরীক্ষা করা হয়। আপনার কাজগুলিতে 10 টিরও বেশি শর্ত থাকা অবস্থায় পরীক্ষা বিভাগ কেন আপনাকে ঘৃণা করে তা এখন আপনি জানেন। এছাড়াও আপনি অবাক হন কেন শেষ 1% পরীক্ষা করা যায় না ... কিছু শাখা পূর্ববর্তী শাখার উপর নির্ভরশীল।

ঘ) ডেটা পরীক্ষা, সীমান্ত মান, সাধারণ সমস্যাযুক্ত মান এবং যাদু সংখ্যা, শূন্য, -1, 1, ন্যূনতম +/- 1, সর্বাধিক +/- 1, 42, rnd মান সহ কয়েকটি নমুনা পরীক্ষা করুন। যদি এটি আপনাকে পথের কভারেজ না দেয় তবে আপনি জানেন যে আপনি বিশ্লেষণের সমস্ত মানটি ধরেন নি।

আপনি যদি ইতিমধ্যে এটি করেন তবে আপনার উচিত ISTQB ভিত্তি পরীক্ষার জন্য প্রস্তুত ready

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