পরীক্ষার কৌশল

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

দলগুলি যখন পরিকাঠামোর উন্নতির সাথে জুটি বেঁধে পরীক্ষা করার জন্য একটি পদ্ধতিগত পদ্ধতি ব্যবহার করে তখন তারা উত্পাদনশীলতার উচ্চ স্তর অর্জন করে। এটি করা কোডটি কীভাবে আচরণ করে সে সম্পর্কে সময়মত প্রতিক্রিয়া প্রদান করে। একটি ভাল পরীক্ষার কৌশল নিম্নলিখিত কাজ করে:

  • যত তাড়াতাড়ি সম্ভব সমস্যা ধরা.
  • দ্রুত কার্যকর করে।
  • যখন কিছু ঠিক করা দরকার তখন স্পষ্ট ইঙ্গিত দেয়।

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

টেস্টিং পিরামিড

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

*ফিডেলিটি উৎপাদন পরিবেশের সাথে পরীক্ষার রানটাইম পরিবেশের মিলকে বোঝায়।

পরিধি অনুসারে পরীক্ষার সংখ্যার বন্টন সাধারণত একটি পিরামিডে কল্পনা করা হয়।
চিত্র 1. পরিধি অনুসারে পরীক্ষার সংখ্যার বন্টন সাধারণত একটি পিরামিডে কল্পনা করা হয়।

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

একটি বাগ খরচ কম করুন

একটি ভাল পরীক্ষার কৌশল বিকাশকারীর উত্পাদনশীলতাকে সর্বাধিক করে তোলে এবং বাগগুলি খুঁজে পাওয়ার খরচ কমিয়ে দেয়।

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

একটি শীর্ষ-ভারী কৌশল যেখানে প্রচুর পরীক্ষা ম্যানুয়ালি করা হয় এবং ডিভাইস পরীক্ষাগুলি শুধুমাত্র রাত্রে সম্পাদিত হয়।
চিত্র 2. একটি শীর্ষ-ভারী কৌশল যেখানে প্রচুর পরীক্ষা ম্যানুয়ালি করা হয় এবং ডিভাইসের পরীক্ষাগুলি শুধুমাত্র রাত্রে সম্পাদিত হয়।

এর মানে হল যে মার্জ করার আগে খুব কম পরীক্ষা চালানো হয়। যদি কোনো বাগ থাকে, তাহলে রাত্রিকালীন বা সাপ্তাহিক এন্ড-টু-এন্ড পরীক্ষা না চলা পর্যন্ত পরীক্ষাগুলি তা ধরতে পারে না।

বাগ শনাক্তকরণ এবং ঠিক করার খরচের জন্য এর প্রভাবগুলি বিবেচনা করা গুরুত্বপূর্ণ এবং কেন ছোট এবং ঘন ঘন পরীক্ষার দিকে আপনার পরীক্ষার প্রচেষ্টাকে পক্ষপাতিত্ব করা গুরুত্বপূর্ণ:

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

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

একটি পরিমাপযোগ্য পরীক্ষার কৌশল

টেস্টিং পিরামিডকে ঐতিহ্যগতভাবে 3টি বিভাগে বিভক্ত করা হয়েছে:

  • ইউনিট পরীক্ষা
  • ইন্টিগ্রেশন পরীক্ষা
  • শেষ থেকে শেষ পরীক্ষা.

যাইহোক, এই ধারণাগুলির সুনির্দিষ্ট সংজ্ঞা নেই, তাই দলগুলি তাদের বিভাগগুলিকে ভিন্নভাবে সংজ্ঞায়িত করতে চাইতে পারে, উদাহরণস্বরূপ 5টি স্তর ব্যবহার করে:

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

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

ব্যাপ্তি

নেটওয়ার্ক অ্যাক্সেস

মৃত্যুদন্ড

বিল্ড টাইপ

জীবনচক্র

ইউনিট

ন্যূনতম নির্ভরতা সহ একক পদ্ধতি বা শ্রেণী।

না

স্থানীয়

ডিবাগযোগ্য

প্রাক-মার্জন

কম্পোনেন্ট

মডিউল বা উপাদান স্তর

একসাথে একাধিক ক্লাস

না

স্থানীয়
রোবোলেক্ট্রিক
এমুলেটর

ডিবাগযোগ্য

প্রাক-মার্জন

বৈশিষ্ট্য

বৈশিষ্ট্য স্তর

অন্যান্য দলের মালিকানাধীন উপাদানের সাথে একীকরণ

উপহাস করেছে

স্থানীয়
রোবোলেক্ট্রিক
এমুলেটর
ডিভাইস

ডিবাগযোগ্য

প্রাক-মার্জন

আবেদন

আবেদনের স্তর

অন্যান্য দলের মালিকানাধীন বৈশিষ্ট্য এবং/অথবা পরিষেবাগুলির সাথে একীকরণ

উপহাস করেছে
স্টেজিং সার্ভার
প্রোড সার্ভার

এমুলেটর
ডিভাইস

ডিবাগযোগ্য

প্রাক-মার্জন
পোস্ট মার্জ

প্রার্থী মুক্তি

আবেদনের স্তর

অন্যান্য দলের মালিকানাধীন বৈশিষ্ট্য এবং/অথবা পরিষেবাগুলির সাথে একীকরণ

প্রোড সার্ভার

এমুলেটর
ডিভাইস

মিনিফাইড রিলিজ বিল্ড

পোস্ট মার্জ
প্রি-রিলিজ

পরীক্ষার বিভাগ নির্ধারণ করুন

একটি অঙ্গুষ্ঠের নিয়ম হিসাবে, আপনার পিরামিডের সর্বনিম্ন স্তরটি বিবেচনা করা উচিত যা দলটিকে সঠিক স্তরের প্রতিক্রিয়া দিতে পারে।

উদাহরণস্বরূপ, এই বৈশিষ্ট্যটির বাস্তবায়ন কীভাবে পরীক্ষা করবেন তা বিবেচনা করুন: একটি সাইন-ইন প্রবাহের UI৷ আপনি কি পরীক্ষা করতে হবে তার উপর নির্ভর করে আপনি বিভিন্ন বিভাগ বেছে নেবেন:

পরীক্ষার অধীনে বিষয়

কি পরীক্ষা করা হচ্ছে তার বর্ণনা

পরীক্ষা বিভাগ

পরীক্ষার ধরন উদাহরণ

ফর্ম যাচাইকারী যুক্তি

একটি ক্লাস যা নিয়মিত এক্সপ্রেশনের বিপরীতে ইমেল ঠিকানা যাচাই করে এবং পাসওয়ার্ড ক্ষেত্রটি প্রবেশ করানো হয়েছে কিনা তা পরীক্ষা করে। এর কোন নির্ভরতা নেই।

ইউনিট পরীক্ষা

স্থানীয় JVM ইউনিট পরীক্ষা

সাইন-ইন ফর্ম UI আচরণ

একটি বোতাম সহ একটি ফর্ম যা শুধুমাত্র সক্রিয় করা হয় যখন ফর্মটি যাচাই করা হয়৷

উপাদান পরীক্ষা

Roboelectric এ চলমান UI আচরণ পরীক্ষা

সাইন ইন ফর্ম UI চেহারা

একটি UX স্পেসিফিকেশন অনুসরণ করে একটি ফর্ম

উপাদান পরীক্ষা

প্রিভিউ স্ক্রিনশট পরীক্ষা রচনা করুন

প্রমাণীকরণ ব্যবস্থাপকের সাথে একীকরণ

UI যেটি একটি প্রমাণীকরণ ব্যবস্থাপকের কাছে শংসাপত্র পাঠায় এবং বিভিন্ন ত্রুটি থাকতে পারে এমন প্রতিক্রিয়া গ্রহণ করে৷

বৈশিষ্ট্য পরীক্ষা

জাল দিয়ে JVM পরীক্ষা

সাইন-ইন ডায়ালগ

লগইন বোতাম টিপলে সাইন-ইন ফর্ম দেখানো একটি স্ক্রীন।

আবেদন পরীক্ষা

Roboelectric এ চলমান UI আচরণ পরীক্ষা

ক্রিটিক্যাল ইউজার যাত্রা: সাইন ইন করা

একটি স্টেজিং সার্ভারের বিরুদ্ধে একটি পরীক্ষা অ্যাকাউন্ট ব্যবহার করে একটি সম্পূর্ণ সাইন-ইন প্রবাহ

প্রার্থী মুক্তি

ডিভাইসে এন্ড-টু-এন্ড কম্পোজ UI আচরণ পরীক্ষা চলছে

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

মনে রাখবেন যে পরীক্ষার বিভাগ পরীক্ষার ধরন নির্দেশ করে না এবং সমস্ত বৈশিষ্ট্য প্রতিটি বিভাগে পরীক্ষা করা উচিত নয়।

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

পরিকাঠামো পরীক্ষা করুন

একটি পরীক্ষার কৌশল অবশ্যই অবকাঠামো এবং সরঞ্জাম দ্বারা সমর্থিত হতে হবে যাতে ডেভেলপাররা ক্রমাগত তাদের পরীক্ষা চালাতে এবং সমস্ত পরীক্ষা পাসের নিশ্চয়তা দেয় এমন নিয়মগুলি প্রয়োগ করতে সহায়তা করে।

কখন এবং কোথায় কোন পরীক্ষা চালাতে হবে তা নির্ধারণ করতে আপনি সুযোগ অনুসারে পরীক্ষাগুলিকে শ্রেণিবদ্ধ করতে পারেন। উদাহরণস্বরূপ, 5-স্তর মডেল অনুসরণ করুন:

শ্রেণী

পরিবেশ (যেখানে)

ট্রিগার (যখন)

ইউনিট

[স্থানীয়] [৪]

প্রতিটি অঙ্গীকার

কম্পোনেন্ট

স্থানীয়

প্রতিটি অঙ্গীকার

বৈশিষ্ট্য

স্থানীয় এবং এমুলেটর

প্রি-মার্জ, মার্জ বা পরিবর্তন জমা দেওয়ার আগে

আবেদন

স্থানীয়, এমুলেটর, 1 ফোন, 1 ভাঁজ করা যায়

মার্জ-পরবর্তী, একত্রীকরণ বা পরিবর্তন জমা দেওয়ার পরে

প্রার্থী মুক্তি

8টি ভিন্ন ফোন, 1টি ভাঁজযোগ্য, 1টি ট্যাবলেট৷

প্রি-রিলিজ

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

এই নিয়মগুলি সময়ের সাথে পরিবর্তিত হতে পারে যখন পরীক্ষার সংখ্যা উত্পাদনশীলতাকে প্রভাবিত করে। উদাহরণস্বরূপ, যদি আপনি পরীক্ষাগুলিকে একটি রাতের ক্যাডেন্সে স্থানান্তরিত করেন, আপনি CI বিল্ড এবং পরীক্ষার সময় হ্রাস করতে পারেন, তবে আপনি প্রতিক্রিয়া লুপকে দীর্ঘায়িত করতে পারেন।