আমি ভাবছিলাম যে সফ্টওয়্যার বিকাশকারীদের বড় সংস্থাগুলি কীভাবে তাদের প্রোগ্রামগুলিতে বাগের জন্য চেক করে।
তারা কি কেবল কয়েকটি কম্পিউটারে এটি পরীক্ষা করে?
আমি ভাবছিলাম যে সফ্টওয়্যার বিকাশকারীদের বড় সংস্থাগুলি কীভাবে তাদের প্রোগ্রামগুলিতে বাগের জন্য চেক করে।
তারা কি কেবল কয়েকটি কম্পিউটারে এটি পরীক্ষা করে?
উত্তর:
গুগল যে কয়েকটি কৌশল ব্যবহার করে তা এখানে।
বাগগুলি কার্যকর করার ক্রমটি ক্রমবর্ধমানের ক্রম যা আমি সন্দেহ করি সেগুলিতে আমি এগুলিকে স্থান দিয়েছি।
বড় সংস্থাগুলিতে সাধারণত পুরো পুরো Q / A বিভাগ থাকে যা কোড টেস্টিংয়ের জন্য দায়বদ্ধ এবং এটি যেভাবে অনুমান করা হয় সেভাবে কাজ করে তা নিশ্চিত করে। এটি সাধারণত আপনি বর্ণিত হিসাবে - প্রচুর মেশিন পরীক্ষা করে একগুচ্ছ মানুষ। কখনও কখনও পরীক্ষাগুলি স্বয়ংক্রিয় হয়, কখনও কখনও তা হয় না। দেখুন উইকিপিডিয়া - গুণগত মান
অনেক সময়, বিকাশকারীরা নিজেরাই বিকাশ প্রক্রিয়া চলাকালীন বাগ খুঁজে পাবেন। এছাড়াও, গ্রাহকরা প্রায়শই বাগ খুঁজে পাওয়া প্রথম হন।
ক্ষুদ্রতর সংস্থাগুলি, বর্তমানে আমি যেমন কাজ করছি তার মতো, এগিল টেস্টিং অনুশীলন ব্যবহার করে
আমি এটি কোনও সংস্থার পরিপক্কতা সম্পর্কে বলব এবং আকারটি নয় :) এখানে এমন বড় বড় সংস্থাগুলি রয়েছে যেগুলি খারাপ উন্নয়ন পদ্ধতি এবং ছোট সংস্থাগুলি রক্তপাতের প্রান্তে রয়েছে।
সাধারণভাবে একটি পরিপক্ক বিকাশকারী দল নিম্নলিখিত ক্রিয়াকলাপগুলিতে নিযুক্ত হবে 1; সিস্টেমে নতুন বাগ প্রবর্তন কমান এবং 2; বিদ্যমান সিস্টেমে বাগগুলি সন্ধান করুন।
ইউনিট টেস্টিং: কোনও পদ্ধতি এটি যা বলে তা যা করে তা নিশ্চিত করার জন্য স্বতন্ত্র পদ্ধতির জন্য এগুলি 'মিনি ড্রাইভার'। এগুলি সর্বদা স্বয়ংক্রিয় পরীক্ষা হয়।
ইন্টিগ্রেশন টেস্টিং: এই পরীক্ষাগুলির লক্ষ্য ছিল যে কার্যকারিতার বৃহত এককটি সিস্টেমের মধ্যে কাজ করে। এটিতে তৃতীয় পক্ষের লাইব্রেরির সাথে ডাটাবেস ইন্টিগ্রেশন বা সংহতকরণ পরীক্ষা করা জড়িত থাকতে পারে। এগুলি স্বয়ংক্রিয় পরীক্ষাগুলিও।
স্বীকৃতি পরীক্ষা: গ্রহণযোগ্যতা পরীক্ষা ব্যবহারকারীর প্রয়োজনীয়তা পরীক্ষা করতে লেখা হয়। এগুলি সাধারণত 'সুখী পথ' পরীক্ষা করে। আমার দলে, এই পরীক্ষাগুলি দেখানোর জন্য ডিজাইন করা হয়েছে যে ব্যবহারকারী যদি ব্যবহারের জন্য নকশাকৃতভাবে কার্যকারিতাটি ব্যবহার করেন তবে তাদের কোনও সমস্যা হবে না। ম্যানুয়াল বা স্বয়ংক্রিয় হতে পারে।
কার্যকরী পরীক্ষা: এই পরীক্ষাগুলি গ্রহণযোগ্যতার পরীক্ষার মতো, তবে তারা 'অসুখী পথ'ও পরীক্ষা করে। এই পরীক্ষাগুলির অর্থ এতটা সুস্পষ্ট নয় এমন পরিস্থিতি পরীক্ষা করা। ম্যানুয়াল বা স্বয়ংক্রিয় হতে পারে।
রিগ্রেশন টেস্টিং: গ্রাহকদের কাছে প্রকাশের আগে আমরা এই শব্দটি সিস্টেমের একটি 'সম্পূর্ণ পরীক্ষা' করতে ব্যবহার করি। ম্যানুয়াল বা স্বয়ংক্রিয়।
গরিলা পরীক্ষা: (কেবল ম্যানুয়াল)। এই ধরণের পরীক্ষার সময় যখন খুব স্মার্ট মানুষ ইচ্ছাকৃতভাবে অ্যাপ্লিকেশনটি ভেঙে দেওয়ার চেষ্টা করে।
পারফরম্যান্স টেস্টিং কর্মক্ষমতা গ্রহণযোগ্য এবং এটি সময়ের সাথে অবনতি হয় না তা নিশ্চিত করে im সাধারণত স্বয়ংক্রিয়ভাবে।
স্থায়িত্ব পরীক্ষা: এই পরীক্ষাগুলি সময়ের সাথে সিস্টেম স্থিতিশীল থাকে তা নিশ্চিত করার জন্য ডিজাইন করা হয়েছে। অটোমেটেড।
অবিচ্ছিন্ন একীকরণ: এটি এমন একটি সিস্টেম যা স্বয়ংক্রিয়ভাবে আপনার কোডটি পরীক্ষা করে, সংকলন করে এবং আপনার স্বয়ংক্রিয় পরীক্ষাগুলি চালায়। আপনার দ্রুত পরীক্ষাগুলি (ইউনিট, ইন্টিগ্রেশন) প্রতিবার কোনও দেব কোড করলে run অন্য কিছুগুলি রাত্রে চালিত (গ্রহণযোগ্যতা, কার্যকরী) বা সাপ্তাহিক (পারফরম্যান্স, স্থিতিশীলতা)।
কোড কভারেজ রিপোর্ট: আপনার কোডটির কতটা পরীক্ষা করা হচ্ছে তা আপনাকে দেখায়। যে কোডে কোনও পরীক্ষার কভারেজ নেই তার বিরতি হওয়ার সম্ভাবনা বেশি।
কোড বিশ্লেষণকারী বিভিন্ন সরঞ্জাম: এটি সাধারণত দেখায় যেখানে সম্ভাব্য বাগগুলিতে কম প্রবণতা তৈরি করতে কোডটি পুনরায় ফ্যাক্টর করা দরকার।
জুড়ি প্রোগ্রামিং: কার্যকারিতা সরবরাহ করতে দুজন বিকাশকারী একত্রে কাজ করছেন। "একটি সমন্বিত জুটি তার অংশগুলির যোগফলের চেয়ে ভাল" "
সর্বাধিক গুরুত্বপূর্ণ তা হ'ল: অটোমেশন এবং অবিচ্ছিন্ন একীকরণ ।
এটি সংস্থা এবং এটি বিকাশিত পণ্যের উপর নির্ভর করে।
প্রথমত, অনেকগুলি সংস্থাগুলি কোড রিভিউ এবং বাধ্যতামূলক আবরণ (স্বয়ংক্রিয় বাগ সনাক্তকরণ সরঞ্জাম) এর মতো কোডিং অনুশীলনগুলি প্রয়োগ করে যাতে সংগ্রহস্থলে প্রবেশের ত্রুটির পরিমাণ হ্রাস করতে পারে। অনেক সংস্থা ইউনিট পরীক্ষা গ্রহণও করে। এই ক্ষেত্রেই আমি কাজ করি (গুগল)। কোডটি চেক ইন করা হলে, কোনও নতুন ত্রুটি চালু না হয় তা নিশ্চিত করার জন্য, সমস্ত কিছুর বিরুদ্ধে পরীক্ষা চালানো হয়।
দ্বিতীয়ত, অনেক সংস্থার কিউএ বিভাগ রয়েছে যা আচরণ বৈধকরণের জন্য দায়ী। এটি বিশেষত ফিনান্সে প্রচলিত (যেখানে ভুলগুলি ব্যয়বহুল হতে পারে এবং বৈধতা সংক্রান্ত বিধিগুলি জটিল) তবে এটি এমন সংস্থাগুলিতেও রয়েছে যা ব্যবহারকারীদের কাছে পণ্য বিক্রি করে যেখানে স্মরণ ব্যয়বহুল হতে পারে (যেমন, ইন্টেল, মাইক্রোসফ্ট ইত্যাদি)।
তৃতীয়ত, যখনই সম্ভব সংস্থাগুলি ডগফুডিং করে (তাদের নিজস্ব ব্যবহারকারীরা অভ্যন্তরীণভাবে পণ্যটি ব্যবহার করে) এবং তারপরে সীমিত বিটা প্রকাশ করে। এই পর্যায়ে অনেক ত্রুটি ধরা পড়ে। উদাহরণস্বরূপ, মাইক্রোসফ্টে কাজ করা লোকেরা আপনার বাইরের থেকে তুলনায় অফিস এবং উইন্ডোজ এবং ডেভস্টুডিওর নতুন অভ্যন্তরীণ সংস্করণ ব্যবহার করে। তারপরে ব্যবহারকারীদের বা চুক্তিবদ্ধ সংস্থাগুলির সীমিত দলগুলি এটির নমুনা পেতে পারে। একইভাবে, গুগলে আমরা প্রকাশের আগে GMail এবং ডক্সের অভ্যন্তরীণ সংস্করণগুলি ব্যবহার করি। গেম সংস্থাগুলি তাদের পণ্য এবং সার্ভারে লোড ইত্যাদির পরীক্ষা করতে ওপেন বিটাগুলি সংগঠিত করে।
অবশ্যই উত্তরটি "এটি dpends", তবে আমি আমার এখন পর্যন্ত সবচেয়ে বড় প্রকল্পের একটি নমুনা দেব, যা প্রায় 50 বিকাশকারীদের জড়িত সময়ে শীর্ষ সময়ে ছিল।
বেসিক সেটআপ: বিজটালকের সাথে প্রচুর পরিমাণে ডেটা প্রক্রিয়াকরণের জন্য একটি ব্যাকএন্ড সফ্টওয়্যার।
প্রতিরক্ষা প্রথম লাইন ইউনিট পরীক্ষা। আমাদের ক্ষেত্রে এগুলি উত্স নিয়ন্ত্রণে যাচাই করা সমস্ত কিছুর জন্য দৈনিক মৃত্যুদন্ড কার্যকর করা হত এবং সাধারণত তাদের মধ্যে কিছুগুলি চেক-ইন করার আগে বিকাশকারী দ্বারা ম্যানুয়ালি মৃত্যুদন্ড কার্যকর করা হত। ইউনিট পরীক্ষাগুলি মূলত বিকাশকারীরা লিখেছিলেন তবে কখনও কখনও পরীক্ষকরা অতিরিক্ত পরীক্ষার মাধ্যমে সংশোধন করেছিলেন।
পরবর্তী পদক্ষেপটি ছিল একটি সাপ্তাহিক ভার্চুয়াল পিসি বিল্ড, যেখানে পরীক্ষকরা প্রতিটি উপাদানগুলির স্পেসিফিকেশন ডকুমেন্টের উপর ভিত্তি করে ডেটা-প্রবাহের উপর মূলত অটোমেটেড এন্ড-টু-এন্ড পরীক্ষা চালিয়ে যান।
তারপরে একই ভার্চুয়াল পিসি কিছু ব্যবসায়িক ডেটা দিয়ে আসল জিনিসটির খুব কাছাকাছি সমৃদ্ধ হয়েছিল এবং কিছু নির্দিষ্ট ব্যবহারের ক্ষেত্রে আবার পরীক্ষা করা হয়েছিল।
তারপরে ভার্চুয়াল পিসিকে অন্যান্য বিভাগের অন্যান্য সিস্টেমের সাথে (বেশিরভাগ ভার্চুয়ালও) একত্রিত করা হয়েছিল ব্যবহারকারী থেকে ডেটা প্রবাহের শেষের দিকে প্রবেশ করানো থেকে শেষের শেষে পরীক্ষার উপর ভিত্তি করে একটি ইন্টিগ্রেশন টেস্ট চক্রে।
অন্য ট্র্যাকে ইনস্টলেশন সরবরাহকারী প্যাকেটগুলি সিস্টেম-সরবরাহকারীর দ্বারা পরীক্ষা করা হয়েছিল যে তারা কোনও উত্পাদনের মতো পরিবেশে সঠিকভাবে ইনস্টল করেছে কিনা এবং যদি কিছু ব্যর্থ হয় তবে সেগুলি আবার ঘুরিয়ে দেওয়া যেতে পারে।
উত্পাদনের মতো পরিবেশে ইনস্টলেশনের পরে আমরা সেখানে সামগ্রিক স্থিতিশীলতা পরীক্ষা করার জন্য লোড এবং স্ট্রেস টেস্টগুলি চালিয়েছিলাম (আপনি যখন 10 বিজটালক সার্ভার, 8 এসকিউএল সার্ভার এবং এক্সএমএল এক্সিলারেটরের মতো অন্যান্য বিশেষায়িত হার্ডওয়্যারগুলির একটি গোছা চালান তখন হালকাভাবে নেওয়া হবে না) এবং একটি উত্সর্গীকৃত সংরক্ষণাগার - অবশ্যই সব ক্লাস্টার্ড)।
যখন আমরা সমস্ত পরীক্ষাগুলিতে সন্তুষ্ট ছিলাম তখন কোডটি উত্পাদন করা হয়েছিল। কোডে বাগগুলি ঠিক করার জন্য আপনি একটি দুর্দান্ত বৃহত্তর বিলম্ব পেয়েছেন (পুরো পরীক্ষার চক্রের জন্য 4-6 সপ্তাহের মতো), এবং এই সমস্ত পরীক্ষা করা ব্যয়বহুল, তবে সামগ্রিক স্থিতিশীলতা বেশ ভাল ছিল। আসলে আমি এখন পর্যন্ত সবচেয়ে ভাল দেখেছি। আবার এমন একটি সিস্টেমে এটি বেশ গুরুত্বপূর্ণ যা প্রতিদিন কয়েক মিলিয়ন ডলারের প্রসেস করে। আপনার প্রয়োজনীয়তাগুলি পৃথক হতে পারে, তবে আমরা এটি করেছি এবং এটি কার্যকর হয়েছে।
মূল প্রশ্নটি বেশিরভাগ ধারণাগতভাবে জেনেরিক বলে মনে হয়, যেগুলি দেওয়া হয়েছিল এমন অত্যন্ত বিস্তৃত উত্তরগুলির চেয়ে।
আসুন এটি একটি উচ্চ স্তরের (কম বিস্তারিত) থেকে দেখুন look কারও (ব্যক্তি, সংস্থা, যাই হোক না কেন) এর নির্দিষ্ট প্রয়োজনে অংশ নেওয়ার জন্য সফ্টওয়্যার তৈরি করা হয়।
এই প্রয়োজনগুলি স্বতন্ত্র গল্প / প্রয়োজনীয়তাগুলিতে ম্যাপ করা দরকার যা ইদানীং হবে (কোনও নির্মাণ পর্যায়ে) উত্স কোডে প্রয়োগ করা হবে।
গল্প / প্রয়োজনীয়তাগুলি ভালভাবে সংজ্ঞায়িত করা কোয়ালিটি অ্যাসিউরেন্স (কিউএ) টিমের (প্রকৃত সফ্টওয়্যার পরীক্ষক) চূড়ান্ত কোডটি কার্যকর করার জন্য প্রয়োজনীয়, যখন মৃত্যুদন্ড কার্যকর করা হয়, সেই গল্পগুলি এবং প্রয়োজনীয়তার দাবিতে অংশ নেয় essential সুতরাং সেই উদ্দেশ্যেটির জন্য, কিউএ টিম সেই বৈধতাটি করার জন্য "টেস্টকেসগুলি" তৈরি করে।
কোডটি, একবার কিউএ দলে প্রকাশিত হয়েছিল, তারপরে পরীক্ষা করা হবে এবং বাগগুলি সনাক্ত করা হবে। পৃথক ধরণের এবং তীব্রতার বাগগুলি। এই বাগগুলি ট্র্যাক করা হয় এবং বিকাশকারীরা এগুলি শেষ করে এগুলি ঠিক করার জন্য তাদের নিয়োগ দেয়।
ভার্চুয়াল মেশিনের ব্যবহার, আজকাল, একজন পরীক্ষককে একই আসল হার্ডওয়্যারে বিভিন্ন পরিবেশ চালানোর অনুমতি দেয়। তবে কখনও কখনও আপনার কিউএ পর্বে উত্সর্গীকৃত কয়েকটি কম্পিউটারের প্রয়োজন হয়।
আমি আশা করি এটি আপনাকে সামগ্রিক প্রক্রিয়াটি বুঝতে (মোটামুটিভাবে) সহায়তা করে।
ভাল, আমি ঘৃণ্য হতে ঘৃণা করি, তবে একটি নির্দিষ্ট 'ডিভাইস' অপারেটিং সিস্টেমে খোলা বাগের সংখ্যাটি দেখে মনে হয় যে সংস্থার যত বড় এবং সমৃদ্ধ হবে তত বেশি ত্রুটি তারা শেষ ব্যবহারকারীর কাছে তৈরি করতে এবং সরবরাহ করতে সক্ষম। যদি সফ্টওয়্যার কিন্ডা কাজ করে এবং দুর্দান্ত দেখায় তবে তারা এটিকে যাইহোক ছেড়ে দেয়। পরিচালকদের যদি এটি প্রস্তুত মনে হয়, তবে এটি প্রস্তুত। সেই সময়ই যখন সত্যিই বাজে বাগগুলি কাঠের কাজ থেকে বেরিয়ে আসতে শুরু করে এবং শেষ ব্যবহারকারীরা গিনি পিগ হতে শুরু করে। দশ বা তার দশ বছর পরে, বেশিরভাগ বাগগুলি কাজ করা হবে (এবং কয়েকটি ভাল পরিমাপের জন্য যুক্ত করা হয়েছে) এবং সংস্থাটি পরবর্তী বড় আইডিয়ায় যেতে প্রস্তুত থাকবে।