সফ্টওয়্যার পরীক্ষার কি আসলেই দরকার?


33

আমি আমার বিই (সিএস) এ কাজ করা একজন ছাত্র এবং আমার প্রশ্নটি নিম্নলিখিত:

  1. সফ্টওয়্যার ক্ষেত্রে পরীক্ষা করা প্রয়োজন?
  2. যদি আমরা খুব যত্ন সহ একটি সফ্টওয়্যার তৈরি করি, তবে আমাদের কেন পরীক্ষা করা উচিত?
  3. পরীক্ষার পরে আমরা কি নিশ্চিত হতে পারি যে আমরা এই লক্ষ্যটি অর্জন করেছি (পণ্য / সফ্টওয়্যার ইচ্ছানুসারে কাজ করে) কারণ আমরা এর জন্য পরীক্ষা করেছি? এটা কি সম্ভব?

আমার প্রশ্ন: সফ্টওয়্যার পরীক্ষা করা প্রয়োজন ?


34
If we create a software with care in during its development period then why should we go for Test?- কারণ যাই হোক না কেন, এমনকি সবচেয়ে দক্ষ প্রোগ্রামার ভুল করে।
সুখবীর

6
@ ইন্দো এটি সম্ভবত কোনও ভারতীয় স্কুল থেকে আপনার? আমি এটিকে খারাপভাবে বলতে চাইছি না, কেবল এখানে নীচে থাকায় আপনার পটভূমি সম্পর্কে আমার ধারণা থাকতে পারে ....
জিডিয়ন

7
আপনি যদি নির্ভুলতার কোনও আনুষ্ঠানিক প্রমাণ সরবরাহ করতে ব্যর্থ হন তবে সফ্টওয়্যার পরীক্ষার প্রয়োজন হয় :-)
আরএসপি

13
@ জওয়েন্টিং: আপনি আপনার ভবিষ্যতে শিখবেন যে কথ্য ভাষা প্রোগ্রামিং দক্ষতার সাথে ভালভাবে সম্পর্কযুক্ত নয়। কারণ কোনও অ নেটিভ ইংলিশ স্পিকার ইংরেজি বলতে পারে না তার মানে এই নয় যে সে প্রোগ্রাম করতে পারে না। আমি সম্প্রদায়ের কাছে এটি অপমানজনক বলে মনে করি যে আপনি যে কেউ গাইডেন্স খুঁজছেন তার দিকে ছুরিকাঘাত করতে এতটাই প্রস্তুত willing
ক্রিস

10
অবশ্যই না. প্রার্থনাও সমান ভাল।
গ্রাসকজি

উত্তর:


79

হ্যাঁ। কারণ আপনি যত ভালই না কেন, আপনি সব কিছু ভাবতে পারবেন না।

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

+1 আপনি অত্যন্ত ভাল বাস্তব বিশ্ব পয়েন্ট করেছেন !! আশা করি আমি দ্বিগুণ ভোট দিতে পারতাম!
জিডিয়ন

8
"আপনার জন্য এমন প্রয়োজনীয়তা কখনই থাকবে না যা এত পরিষ্কার যে আপনি কোডটি ভঙ্গ না করে তা নিশ্চিত করার জন্য প্রতিটি সম্ভাবনার কথা ভাবতে সক্ষম হবেন।" আমার কর্মক্ষেত্রটি বেশিরভাগের তুলনায় অনেক কম অকার্যকর এবং আমাদের প্রোডাক্ট ম্যানেজমেন্ট টিম বেশ ভাল প্রয়োজনীয়তা লেখায়। আমি এখনও প্রায়শই মুষ্টিমেয় কিছু "এই ক্ষেত্রে কি?" আমি একটি বৈশিষ্ট্য শেষ করার আগে প্রশ্ন। এবং তারপর QA তে এবং মাঝে মাঝে শেষের ব্যবহারকারীদের এখনও বাগ কোণ ক্ষেত্রে যে কোন এক বিবেচিত পাবেন।
ম্যাসন হুইলারের

1
# 3 পয়েন্টের জন্য +1। সংকলক, ওএস লাইব্রেরি, তৃতীয় পক্ষের উপাদানগুলি - আপনি যদি না সরাসরি ধাতুতে লিখতে থাকেন তবে আপনি সবসময় আপনার নিয়ন্ত্রণের বাইরে থাকা কোডের উপর নির্ভরশীল wind
টিএমএন

78

হাঁ

একই কারণে যে কোনও শেফ রান্না করার সময় তার খাবারের স্বাদ গ্রহণ করে।


7
এমনকি মাস্টারদেরও ধরে নেওয়া উচিত নয় যে তাদের কাজ কখনও সংশোধনের প্রয়োজন হয় না।
গ্যাবলিন

26
কোনও পাতলা শেফ দ্বারা রান্না করা কোনও খাবার কখনই খাবেন না
জেবিআরউইলকিনসন

5
@ জেবিআরউইলকিনসন: একটি পাতলা শেফ যদি তার ডিশগুলি প্রায়শই ঘন ঘন পাওয়া যায় এবং সেহেতু সবসময় তার খাবারের স্বাদ না পান তবে একজন 'ফ্যাট' শেফের চেয়ে সবসময় তার খাবারের স্বাদ নিতে হয়। : পি
চিওরক্স

8
@ গ্যাবলিন - আপনি বলতে পারেন যে মাস্টাররা জানেন যে তাদের কাজ সংশোধন প্রয়োজন ON
ড্যান রে

18

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

অনুপস্থিতি এর সঠিক পরীক্ষার নিহত

সুতরাং আপনি যদি না unlessশ্বর না হন বা কিছু কিছু নিখুঁত হিসাবে সমস্ত সংস্করণ না জেনে থাকুন (এখন এটি আমি দেখতে চাই) অথবা আপনি সক্রিয়ভাবে খুব দ্রুত চাকরিচ্যুত হতে না চান আমি দৃ strongly়ভাবে আপনাকে পরীক্ষা শুরু করার পরামর্শ দিচ্ছি।


থেরাক -২৫ আসলেই খুব ভাল উদাহরণ নয় কারণ পরীক্ষায় এটি প্রকাশ করা ভয়ানক কঠিন হয়ে উঠত।
লরেন পেচটেল

4
এমনকি ""
শ্বর

1
@ নিউটপ্লান, আপনার বসকে বলার জন্য বিবেচিত?

2
@ থরজজর্ন: আমি তাকে বলেছিলাম কিন্তু তারা (সাধারণভাবে পরিচালন) এমনকি প্রকৃত পরিস্থিতি বুঝতে পারে না। প্রকৃতপক্ষে তারা তাকে প্রোগ্রামিংয়ের asশ্বর হিসাবে বুঝতে পেরেছেন এবং বাগের মতো খোঁজ ও ঠিক করার জন্য দলটির বাকী দলকে দোষারোপ করেন না .... পাশাপাশি, তিনি কখনও কখনও এমন সাধক কোড তৈরি করেন যে কাউকে সহজ চেষ্টা করার জন্য যথেষ্ট পরিচিত হওয়ার প্রশিক্ষণ দেওয়া হয় পরিবর্তনগুলি উপরের দিকে 2 বছর সময় নিতে পারে, আবার পরিচালন মনে করেন এটি 750 কে লোকাল কোড বেসের সাথে স্বাভাবিক (আসলে তারা এটি 1.5 মিটার পরিমাপ করে তবে এর অর্ধেকটি মন্তব্য) (দুঃখিত, আমি কীভাবে স্ল্যাশ পেতে পারি তা সঠিকভাবে জানিনা :-( )
নিউটোপিয়ান

1
এটি আরিয়েন -5 এবং লন্ডন অ্যাম্বুলেন্স পরিষেবা কম্পিউটার সাহায্য প্রাপ্ত প্রেরণের
স্টুপার ইউজার

9

সফ্টওয়্যার লোকেরা লিখেছেন।

লোকেরা অসম্পূর্ণ এবং ভুল করে।

কোনও উদ্যোগ গ্রহণের জটিলতা বাড়ার সাথে সাথে ভুল, তদারকি বা ভুলে যাওয়া জিনিসের সম্ভাব্য সংখ্যা (এবং প্রভাব) বাড়তে থাকে - সাধারণত তাত্ক্ষণিকভাবে।

হ্যাঁ, পরীক্ষার প্রয়োজন। এটি ভারসাম্য এবং দৃষ্টিভঙ্গি এনেছে।


6

আপনি কি এমন কোনও ফ্লাইটে উঠবেন যা কোনও ওএস চালায় যা আপনি জানেন যে আপনি নিজের ল্যাপটপে ব্যবহার করেছেন এবং আপনাকে আপনার প্রিয় রঙে মৃত্যুর স্ক্রিন দিয়েছেন? চিন্তা করুন.

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

আমি কী বলতে চাইছি তা জানতে গুগলে সর্বাধিক বিখ্যাত সফ্টওয়্যার বাগগুলিতে অনুসন্ধান করুন।

এবং কলেজ পর্যায়ে পরীক্ষা-চালিত বিকাশ, ইউনিট টেস্টিং এবং চটজলদি অনুশীলনগুলি সম্পর্কে কিছুটা পড়ুন এখনই জিনিসগুলি এখন কী তা জানতে।


ধন্যবাদ। আপনি কি ইউনিট পরীক্ষা শিখার জন্য কিছু সংস্থান বলতে পারেন, আপনি যেমন উল্লেখ করেছেন তেমন চর্চা!
পিঁপড়ের

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

4

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

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


4

ত্রুটিযুক্ত মানব

বাগ-মুক্ত সফটওয়্যার বলে কোনও জিনিস নেই।

সবচেয়ে দক্ষ বিকাশকারী বাগ সহ কোড লেখেন writes এমনকি যদি নিখুঁত বিকাশকারী উপস্থিত থাকে, তবুও এর মধ্যে তফাতগুলির কারণে বাগগুলি থাকতে পারে:

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

নিখুঁত বিকাশকারী পুরো জিনিসটির একটি অংশ। এবং নিখুঁত বিকাশকারীদের অস্তিত্ব নেই।


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

@ কুংহুইটো - আপনার কি আনুষ্ঠানিক পদ্ধতি মনে আছে?
mouviciel

3

বাস্তব জীবনের বেশিরভাগ প্রোগ্রাম:

ক) অসংখ্য ফাইল জুড়ে ছড়িয়ে ছিটিয়ে থাকা শত শত লাইন কোড বা আরও বেশি কিছু রয়েছে;
খ) একাধিক প্রোগ্রামার দ্বারা বিকশিত হয়;
গ) বিকাশকারীর পরিবেশ থেকে পৃথক পরিবেশে ব্যবহৃত

সুতরাং আপনি যদি প্রোগ্রামটি বাস্তব জীবনের পরিস্থিতিতে কীভাবে কাজ করে তা পরীক্ষা না করে থাকেন, তবে এটি কার্যকরভাবে কাজ করবে না এমন সুযোগটি 100% এর কাছাকাছি হবে।


3

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


3

হ্যাঁ।

এখানে আরও কিছু সূক্ষ্ম দৃষ্টিকোণ যা এখনও পুরোপুরি আবৃত হয়নি:

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

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

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


2

যা এখনও স্পর্শ করা হয়নি: আপনার কোডটি নিখুঁত হলেও আপনি এখনও নিরাপদ নন। সংকলকগুলির মধ্যে বাগ রয়েছে যা সংকলনের পরেও নির্ভুল কোডটি ভুলভাবে আচরণ করতে পারে। অপারেটিং সিস্টেমগুলিতে বাগ রয়েছে যা চালানোর সময় একটি নিখুঁত বাইনারিটিকে ভুলভাবে আচরণ করতে পারে। হার্ডওয়্যারে বাগ রয়েছে যা সমস্যা তৈরি করতে পারে।

একারণে বাণিজ্যিক পণ্যের জন্য একটি মেশিনে পরীক্ষা করা যথেষ্ট নয়। সম্ভাব্য হিসাবে বন্যগুলিতে তারা সম্মুখীন হতে পারে এমন অনেকগুলি হার্ডওয়ার এবং সফ্টওয়্যার সংমিশ্রনের অধীনে তাদের পরীক্ষা করা দরকার।


2

স্পেস শাটলের জন্য সফটওয়্যারটি লেখার দলটির নেতৃত্বটি প্রতিটি লঞ্চের আগেই সফ্টওয়্যারটি শাটলের কোনও ক্ষতি করবে না বলে স্বাক্ষর করার জন্য ছুটে এসেছিল।

আপনি কী ভাবেন তাকে এমন করার আত্মবিশ্বাস দিয়েছিল?


1

আপনি কেবল কোডটি সংকলন করে এবং ব্যবহার করে ক্রমাগত কোড পরীক্ষা করে যাচ্ছেন। কিছু আইডিইতে আপনি টাইপ করার সাথে সাথে স্যানিটি পরীক্ষা করে নিচ্ছেন। যদি না আপনি আসলে আপনার কোডটি চালনা করেন তবে আপনি পরীক্ষা করছেন।

আপনি কতটা পরীক্ষা করেন তা আসলে এই ধরণের প্রশ্নের মূল এবং তার উত্তর ঝুঁকিতে নেমে আসে। আপনি ঝুঁকি ব্যবস্থাপনার দৃষ্টিকোণ থেকে পরীক্ষা করা যতটা বুদ্ধিমান তা বিবেচনা করে। সবকিছু বা কিছুই পরীক্ষা করা সাধারণত অসম্ভব। কোনও কিছুর পরে পরীক্ষা করা সাধারণত খারাপ পদক্ষেপ। আপনার বিতরণযোগ্যতার ঝুঁকি স্তর এবং এক্সপোজারের উপর নির্ভর করে এর মধ্যে থাকা সমস্ত কিছুই নিখুঁত খেলা is


1

একটি হোমওয়ার্ক প্রশ্নের মত গন্ধ।

সফ্টওয়্যার ক্ষেত্রে পরীক্ষা করা প্রয়োজন?

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

যদি আমরা খুব যত্ন সহ একটি সফ্টওয়্যার তৈরি করি, তবে আমাদের কেন পরীক্ষা করা উচিত?

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

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

পরীক্ষার পরে আমরা কি নিশ্চিত হতে পারি যে আমরা এই লক্ষ্যটি অর্জন করেছি (পণ্য / সফ্টওয়্যার ইচ্ছানুসারে কাজ করে) কারণ আমরা এর জন্য পরীক্ষা করেছি? এটা কি সম্ভব?

না, 100% না। আমরা সহজ কোড ব্যতীত অন্য কোনও ইনপুট বা কার্যকরকরণের পাথের প্রতিটি অনুমেয় সংমিশ্রণটি পরীক্ষা করতে পারি না। আমরা সমস্ত পরিবেশগত কারণের জন্য অ্যাকাউন্ট করতে পারি না। আমরা সম্ভাব্য সমস্ত ব্যর্থতার পদ্ধতিগুলি কল্পনা করতে পারি না।

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

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

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

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

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


0

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


0

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

১) নকশা এবং যথাযথ প্রয়োগের মাধ্যমে যতগুলি সম্ভব ব্যর্থতা দূর করুন ২) ডিজাইনের পর্ব থেকে অপ্রত্যাশিত ব্যর্থতাগুলি দূর করুন এবং বিভিন্ন ধরণের পরীক্ষার মাধ্যমে ভুল বাস্তবায়ন (ইউনিট, ইন্টিগ্রেশন, এলোমেলো) ৩) রিডানডেন্সির মাধ্যমে যে কোনও বাম-ওভার ব্যর্থতার সাথে ডিল করুন () টেম্পোরাল => সংশোধন, পুনরায় চেষ্টা করুন বা স্পেসিয়াল => অনুলিপি রাখুন, সমতা রাখুন)

আপনি যদি পরীক্ষার পর্বটি অপসারণ করেন তবে ব্যর্থতা মোকাবেলার জন্য আপনি নিজেকে কেবল নকশা এবং অপ্রয়োজনীয় পর্যায়গুলি দিয়ে রেখে যান।

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


0

কমপক্ষে শুরু করার জন্য সমস্ত প্রোগ্রামের বাগ রয়েছে।

কিছু অধ্যয়ন হয়েছে যা অনির্ধারিত কোডের প্রতি পাঁচ লাইনে প্রায় 1 বাগে রূপান্তর করে।

একটি ইতিহাস পাঠ:

১৯60০ এর দশকে আইবিএমকে একটি "এনওপি" প্রোগ্রামের দরকার ছিল যাতে তারা কোনও প্রোগ্রাম না চালিয়ে জেসিএলে কিছু কার্যকারিতা সম্পাদন করতে পারে। বিকাশকারীরা একটি লাইন এসেম্ব্লার প্রোগ্রাম নিয়ে এসেছিলেন যাতে পুরো কোডটি "আইএফবিআর 14" এর নামের মধ্যে থাকা ছিল আসল কোডটি:

       BR 14 * brach to return address in register 14

দীর্ঘ সময়কালীন এই ওয়ান লাইন প্রোগ্রামটি 2 টি বাগ রিপোর্ট এবং পাঁচটি সংশোধনী সাপেক্ষে।


-1

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

আপনি যখন টিডিডি (পরীক্ষা চালিত বিকাশ) নিয়ে বিকাশ করছেন তখন আপনার অপ্রয়োজনীয় গেটার / সেটার ইত্যাদি থাকবে না আপনি যা প্রয়োজন তা তৈরি করেন।


-1

আপনার প্রশ্নের # 3 উত্তর দিতে :

একজন প্রোগ্রামার এবং একটি সফ্টওয়্যার পরীক্ষক হয়ে, হ্যাঁ, আপনি নিশ্চিত হতে পারেন যে আপনি পরীক্ষার সময় সফ্টওয়্যারটির প্রয়োজনীয়তাগুলি পূরণ করছেন।

Q কিউএ টুপি লাগানো}

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

{কিউএ টুপি বন্ধ}

কোনও কোড কখনই বাগ-মুক্ত হয় না, সময়ের সাথে সাথে কম ব্যয় হয় যখন উন্নয়নের সময় এর গুণমান নির্ধারণে আরও প্রচেষ্টা ব্যয় করা হয়।


-1

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

তবে এটি কেস নয় + +++++++++

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

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

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


-3

হ্যাঁ

আপনার সফ্টওয়্যারটি কেবল একটি লজিক্যাল ফাংশন এবং (বি 1, বি 2) হিসাবে কল্পনা করুন যেখানে বি 1 এবং বি 2 কেবল বিটস। আপনার আশেপাশের পরিবেশগুলি যদি তাদের জন্য নির্দিষ্ট করা হয়েছিল ঠিক এমনটি সরবরাহ করে তবে আপনার সফ্টওয়্যারটি ত্রুটিমুক্ত কিনা তা নিশ্চিত হওয়ার জন্য আপনার 4 টি পরীক্ষার কেস দরকার।

এখন আপনার সিস্টেমটি অনেকগুলি ফাংশন দ্বারা তৈরি হয়েছে যার সরলতমটি সেই লজিক্যাল ফাংশনটির চেয়ে আরও জটিল। আপনি কীভাবে নিশ্চিত করবেন যে এটি ত্রুটিমুক্ত?

(চলবে)


এএন এবং স্পেসিফিকেশনের অন্যান্য অংশের প্রয়োগের উপর নির্ভর করে আপনার চারটিরও বেশি টেস্টের ক্ষেত্রে প্রয়োজন হতে পারে: পরিবেশের বিরুদ্ধে স্ট্রেস টেস্ট (তাপমাত্রা, বিকিরণ ...), পারফরম্যান্স টেস্ট (যেমন, বি 1 এবং বি 2 এর সর্বাধিক ফ্রিকোয়েন্সি) ... এমনকি লজিক্যাল ডোমেনেও আপনি প্রমাণ করতে চাইতে পারেন যে ফাংশনটি সর্বদা সঠিকভাবে
বি 1

এই পূর্বে 21 উত্তর উপর সারগর্ভ প্রস্তাব কিছু বলে মনে হচ্ছে না
মশা

@ মোভিচিয়েল: আপনি আবার কিছু খুব ভাল বিষয় তৈরি করেছেন, তবে আপনার সফ্টওয়্যার সিস্টেমটিতে যে হার্ডওয়্যারটি চালিত হয়েছে ঠিক সেটির জন্য নির্দিষ্ট করে দেওয়া হয়েছে, তবে আপনাকে এই সামান্য ও () ফাংশনের জন্য স্ট্রেস টেস্ট করার দরকার নেই। আমি পরে আপনার পারফরম্যান্স পরীক্ষার মন্তব্যে ফিরে আসব।
কুওংহুইতো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.