আমার সফ্টওয়্যার বিকাশের অভিজ্ঞতার বছরগুলি পরামর্শ দেয় যে বাস্তবে এটি কাজ করতে পারে না।
আপনি কি এটা চেষ্টা করেছেন? ডেভ এবং আমি বইটি লিখেছিলাম প্রচুর সম্মিলিত বছরের অভিজ্ঞতার ভিত্তিতে, আমরা নিজেরাই এবং থট ওয়ার্কসের অন্য প্রবীণ ব্যক্তিরা, আমরা আসলে আলোচনার জিনিসগুলিই করি। বইটিতে কিছুই অনুমানযোগ্য নয়। আমরা আলোচনা করি এমন সমস্ত কিছুই বৃহত্তর, বিতরণ প্রকল্পেও চেষ্টা করা হয়েছে এবং পরীক্ষিত হয়েছে। তবে আমরা আপনাকে এটি বিশ্বাসে নিয়ে যাওয়ার পরামর্শ দিই না। অবশ্যই আপনার এটি চেষ্টা করা উচিত, এবং দয়া করে আপনার কী কাজ করে এবং কী প্রযোজ্য তা প্রাসঙ্গিক প্রসঙ্গ সহ লিখুন, যাতে অন্যরা আপনার অভিজ্ঞতা থেকে শিখতে পারে।
অবিচ্ছিন্ন ডেলিভারির স্বয়ংক্রিয় পরীক্ষায় ফোকাস রয়েছে। আমরা বইটির প্রায় 1/3 অংশ এটি নিয়ে কথা বলি। আমরা এটি করি কারণ বিকল্প - ম্যানুয়াল টেস্টিং - ব্যয়বহুল এবং ত্রুটি-প্রবণ এবং উচ্চ মানের সফ্টওয়্যার তৈরির পক্ষে আসলে দুর্দান্ত উপায় নয় (যেমন ডেমিং বলেছিলেন, "গুণ অর্জনের জন্য গণ পরিদর্শনের উপর নির্ভরতা বন্ধ করুন প্রক্রিয়াটি উন্নত করুন এবং গুণমানকে এতে রূপান্তর করুন) প্রথম স্থানে পণ্য ")
সম্পূর্ণ পরীক্ষার কভারেজ অসম্ভব। আপনাকে প্রতিটি ছোট জিনিসটির জন্য প্রচুর সময় দিতে হবে - এবং সময় অর্থ হয়। এটি মূল্যবান, তবে সময়টি অন্যান্য উপায়ে মানের অবদানের জন্য ব্যয় করা যেতে পারে।
অবশ্যই পুরো পরীক্ষার কভারেজ অসম্ভব, তবে বিকল্পটি কী: শূন্য পরীক্ষার কভারেজ? একটি বাণিজ্য বন্ধ আছে। এর মাঝে কোথাও আপনার প্রকল্পের সঠিক উত্তর। আমরা দেখতে পেলাম যে সাধারণভাবে স্বয়ংক্রিয় পরীক্ষাগুলি তৈরি বা রক্ষণাবেক্ষণের জন্য আপনার প্রায় 50% সময় ব্যয় করা উচিত। আপনি বিস্তৃত ম্যানুয়াল পরীক্ষার ব্যয় এবং ব্যবহারকারীদের কাছে যে বাগগুলি খুঁজে পেয়েছেন তা স্থির করে নেওয়া পর্যন্ত এটি ব্যয়বহুল মনে হতে পারে।
কিছু জিনিস স্বয়ংক্রিয়ভাবে পরীক্ষা করা শক্ত। যেমন জিইউআই। এমনকি আপনার জিইউআই দুর্বল কিনা তা সেলেনিয়াম আপনাকে জানায় না।
অবশ্যই. ব্রায়ান মারিকের পরীক্ষার কোয়াড্রেন্ট পরীক্ষা করে দেখুন। আপনাকে এখনও ম্যানুয়ালি অনুসন্ধানের পরীক্ষা এবং ব্যবহারের পরীক্ষা করতে হবে। তবে এটি আপনার নিজের ব্যয়বহুল এবং মূল্যবান মানবকে ব্যবহার করা উচিত - রিগ্রেশন পরীক্ষার জন্য নয়। মূলটি হ'ল আপনাকে একটি স্থাপনা পাইপলাইন স্থাপন করতে হবে যাতে আপনি কেবল বিল্ডগুলির বিরুদ্ধে ব্যয়বহুল ম্যানুয়াল বৈধতা চালানো বিরক্ত করতে পারেন যা স্বয়ংক্রিয় পরীক্ষার একটি বিস্তৃত স্যুট পাশ করেছে। সুতরাং আপনি উভয়ই ম্যানুয়াল পরীক্ষায় আপনি যে পরিমাণ অর্থ ব্যয় করেছেন তা হ'ল এবং ম্যানুয়াল পরীক্ষা বা উত্পাদনে যে কোনও বাগের সংখ্যা এনেছে (সেই সময়ের মধ্যে তারা ঠিক করা খুব ব্যয়বহুল)। সঠিকভাবে সম্পন্ন স্বয়ংক্রিয় পরীক্ষণটি পণ্যের জীবনচক্রের তুলনায় অনেক সস্তা, তবে অবশ্যই এটি একটি মূলধন ব্যয় যা সময়ের সাথে সাথে নিজেকে এমওরটিজ করে।
ভারী ফিক্সচার ব্যতীত ডেটাবেস অ্যাক্সেস পরীক্ষা করা শক্ত এবং এমনকি এটি আপনার ডেটা স্টোরেজে অদ্ভুত কোণার বিষয়গুলি কভার করবে না। তেমনি সুরক্ষা এবং অন্যান্য অনেক কিছুই। কেবলমাত্র ব্যবসায়-স্তর কোড কার্যকরভাবে ইউনিট-পরীক্ষামূলক।
ডাটাবেস অ্যাক্সেস আপনার শেষ-থেকে-শেষ দৃশ্যের ভিত্তিতে কার্যকরী স্বীকৃতি পরীক্ষার দ্বারা নিখুঁতভাবে পরীক্ষা করা হয়। সুরক্ষার জন্য স্বয়ংক্রিয় এবং ম্যানুয়াল পরীক্ষার সংমিশ্রণ প্রয়োজন - স্বয়ংক্রিয় অনুপ্রবেশ পরীক্ষা এবং স্থির বিশ্লেষণ (যেমন) বাফার ওভাররানগুলি খুঁজে পেতে।
এমনকি ব্যবসায়িক স্তরেও, বেশিরভাগ কোড আউট সরল ফাংশন নেই যার আর্গুমেন্ট এবং রিটার্ন মানগুলি পরীক্ষার উদ্দেশ্যে সহজেই বিচ্ছিন্ন করা যায়। মক অবজেক্ট তৈরিতে আপনি প্রচুর সময় ব্যয় করতে পারেন যা বাস্তব বাস্তবায়নের সাথে সামঞ্জস্য নাও হতে পারে।
আপনি নিজের সফ্টওয়্যারটি এবং আপনার পরীক্ষাগুলি খারাপভাবে তৈরি করলে অবশ্যই স্বয়ংক্রিয় পরীক্ষাগুলি ব্যয়বহুল। কীভাবে এটি সঠিকভাবে করা যায় তা বোঝার জন্য "টেস্টগুলি দ্বারা পরিচালিত" বর্ধমান অবজেক্ট-ওরিয়েন্টেড সফটওয়্যার "বইটি যাচাই করার জন্য সুপারিশ করছি যাতে আপনার পরীক্ষাগুলি এবং কোড সময়ের সাথে সাথে রক্ষণাবেক্ষণযোগ্য হয়।
ইন্টিগ্রেশন / ফাংশনাল টেস্টগুলি ইউনিট পরীক্ষার পরিপূরক করে তবে এগুলি চালাতে প্রচুর সময় নেয় কারণ তারা সাধারণত প্রতিটি পরীক্ষায় পুরো সিস্টেমটিকে পুনরায় পুনরায় অন্তর্ভুক্ত করে। (আপনি যদি পুনর্নির্মাণ না করেন তবে পরীক্ষার পরিবেশটি বেমানান)
আমি যে পণ্যগুলিতে কাজ করতাম তার মধ্যে একটিতে 3,500 এন্ড-টু-এন্ড গ্রহণযোগ্যতা পরীক্ষা রয়েছে যা চালাতে 18 ঘন্টা লাগে। আমরা এটি 70 টি বাক্সের গ্রিডে সমান্তরালে চালাই এবং 45 মিটারে প্রতিক্রিয়া পাই। আদর্শের চেয়ে এখনও বেশি দীর্ঘতর, যার কারণেই ইউনিট পরীক্ষাগুলি কয়েক মিনিটের মধ্যে চলে যাওয়ার পরে আমরা পাইপলাইনে এটি দ্বিতীয় পর্যায়ে হিসাবে চালাচ্ছি যাতে আমরা আমাদের উত্সগুলিকে এমন কোনও বিল্ডে নষ্ট করি না যে আমাদের কোনও মৌলিক স্তর নেই build আত্ববিশ্বাসী.
রিফ্যাক্টরিং বা অন্য কোনও পরিবর্তনগুলি প্রচুর পরীক্ষার বিরতি দেয়। আপনি এগুলি ঠিক করতে প্রচুর সময় ব্যয় করেন। যদি এটি অর্থবহ স্পষ্ট পরিবর্তনগুলিকে বৈধ করার বিষয়টি হয় তবে তা ঠিক, তবে প্রায়শই অর্থহীন নিম্ন-স্তরের বাস্তবায়নের বিশদগুলির কারণে পরীক্ষাগুলি বিরতি দেয়, সত্যিকার অর্থে গুরুত্বপূর্ণ তথ্য সরবরাহ করে এমন স্টাফ নয়। প্রায়শই টুইটটি পরীক্ষার অভ্যন্তরীণ পুনর্নির্মাণের উপর দৃষ্টি নিবদ্ধ করা হয়, যা পরীক্ষা করা হচ্ছে তা কার্যকরীতার জন্য যাচাই করে নয়।
যদি আপনার কোড এবং পরীক্ষাগুলি ভালভাবে আবদ্ধ হয় এবং আলগাভাবে মিলিত হয় তবে রিফ্যাক্টরিং প্রচুর পরীক্ষাগুলি ভাঙ্গবে না। কার্যক্ষম পরীক্ষার জন্যও একই জিনিস কীভাবে করা যায় তা আমরা আমাদের বইয়ে বর্ণনা করি। যদি আপনার গ্রহণযোগ্যতা পরীক্ষাগুলি ভঙ্গ হয়, তবে এটি একটি চিহ্ন যে আপনি এক বা একাধিক ইউনিট পরীক্ষাগুলি অনুপস্থিত রয়েছেন, তাই সিডির একটি অংশে ডেলিভারি প্রক্রিয়াতে পরীক্ষাগুলি আরও সূক্ষ্মভাবে তৈরি হওয়ার আগে এবং বাগগুলি খুঁজে পেতে চেষ্টা করার জন্য আপনার পরীক্ষা কভারেজটি ক্রমাগত উন্নত করা জড়িত the বাগগুলি ঠিক করার জন্য সস্তা।
বাগের মাঠের প্রতিবেদনগুলি কোডের সুনির্দিষ্ট মাইক্রো-সংস্করণের সাথে সহজেই মিলে যায় না।
যদি আপনি আরও ঘন ঘন পরীক্ষণ এবং মুক্ত করে থাকেন (সিডির পয়েন্টের অংশ) তবে এটি বাগের কারণে পরিবর্তনটি সনাক্ত করা তুলনামূলকভাবে সহজ। সিডির পুরো পয়েন্টটি প্রতিক্রিয়াচক্রটিকে অনুকূলিত করা হয় যাতে আপনি সংস্করণ নিয়ন্ত্রণে চেক ইন করার পরে যত তাড়াতাড়ি সম্ভব বাগগুলি সনাক্ত করতে পারেন - এবং প্রকৃতপক্ষে, সম্ভবত তারা চেক ইন করার আগেই (যার কারণে আমরা বিল্ড এবং ইউনিট পরীক্ষা চালাই চেক ইন আগে)।