অ্যান্ড্রয়েড অ্যাপ পরীক্ষা করার মৌলিক বিষয়

এই পৃষ্ঠায় অ্যান্ড্রয়েড অ্যাপ পরীক্ষা করার মূল নীতিগুলি তুলে ধরা হয়েছে, যার মধ্যে রয়েছে কেন্দ্রীয় সেরা অনুশীলন এবং তাদের সুবিধাগুলি।

পরীক্ষার সুবিধা

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

আপনি আপনার অ্যাপটি ম্যানুয়ালি পরীক্ষা করতে পারেন, এর মাধ্যমে নেভিগেট করতে পারেন। আপনি বিভিন্ন ডিভাইস এবং এমুলেটর ব্যবহার করতে পারেন, সিস্টেমের ভাষা পরিবর্তন করতে পারেন এবং প্রতিটি ব্যবহারকারীর ত্রুটি তৈরি করার চেষ্টা করতে পারেন অথবা প্রতিটি ব্যবহারকারীর প্রবাহ অতিক্রম করতে পারেন।

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

অ্যান্ড্রয়েডে পরীক্ষার ধরণ

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

বিষয়

উদাহরণস্বরূপ, বিষয়ের উপর নির্ভর করে বিভিন্ন ধরণের পরীক্ষা রয়েছে:

  • কার্যকরী পরীক্ষা : আমার অ্যাপ কি যা করার কথা তা করে?
  • কর্মক্ষমতা পরীক্ষা : এটি কি দ্রুত এবং দক্ষতার সাথে এটি করে?
  • অ্যাক্সেসিবিলিটি পরীক্ষা : এটি কি অ্যাক্সেসিবিলিটি পরিষেবার সাথে ভালোভাবে কাজ করে?
  • সামঞ্জস্যতা পরীক্ষা : এটি কি প্রতিটি ডিভাইস এবং API স্তরে ভালোভাবে কাজ করে?

ব্যাপ্তি

আকার , বা বিচ্ছিন্নতার মাত্রার উপর নির্ভর করে পরীক্ষাগুলিও পরিবর্তিত হয়:

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

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

স্থানীয় পরীক্ষা বনাম যন্ত্রযুক্ত পরীক্ষা

আপনি একটি Android ডিভাইসে বা অন্য কম্পিউটারে পরীক্ষা চালাতে পারেন:

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

সমস্ত ইউনিট পরীক্ষা স্থানীয় হয় না এবং সমস্ত এন্ড-টু-এন্ড পরীক্ষা কোনও ডিভাইসে চলে না। উদাহরণস্বরূপ:

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

উদাহরণ

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

এসপ্রেসো

// When the Continue button is clicked
onView(withText("Continue"))
    .perform(click())

// Then the Welcome screen is displayed
onView(withText("Welcome"))
    .check(matches(isDisplayed()))

রচনা UI

// When the Continue button is clicked
composeTestRule.onNodeWithText("Continue").performClick()

// Then the Welcome screen is displayed
composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()

এই স্নিপেটটি একটি ViewModel (স্থানীয়, হোস্ট-সাইড পরীক্ষা) এর জন্য একটি ইউনিট পরীক্ষার অংশ দেখায়:

// Given an instance of MyViewModel
val viewModel = MyViewModel(myFakeDataRepository)

// When data is loaded
viewModel.loadData()

// Then it should be exposing data
assertTrue(viewModel.data != null)

পরীক্ষাযোগ্য স্থাপত্য

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

একটি স্থাপত্য যা পরীক্ষাযোগ্য নয় তা নিম্নলিখিতগুলি তৈরি করে:

  • আরও বড়, ধীর, আরও অস্থির পরীক্ষা। যেসব ক্লাস ইউনিট-পরীক্ষা করা যাবে না, সেগুলিকে আরও বড় ইন্টিগ্রেশন পরীক্ষা বা UI পরীক্ষার আওতায় আনতে হতে পারে।
  • বিভিন্ন পরিস্থিতিতে পরীক্ষা করার সুযোগ কম। বড় পরীক্ষাগুলি ধীরগতির হয়, তাই একটি অ্যাপের সম্ভাব্য সমস্ত অবস্থা পরীক্ষা করা অবাস্তব হতে পারে।

আর্কিটেকচার নির্দেশিকা সম্পর্কে আরও জানতে, অ্যাপ আর্কিটেকচারের নির্দেশিকাটি দেখুন।

ডিকাপলিং পদ্ধতি

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

সাধারণ ডিকাপলিং কৌশলগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

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

পরবর্তী পদক্ষেপ

এখন যেহেতু আপনি জানেন কেন আপনার পরীক্ষা করা উচিত এবং দুটি প্রধান ধরণের পরীক্ষা, আপনি কী পরীক্ষা করবেন তা পড়তে পারেন অথবা পরীক্ষার কৌশল সম্পর্কে শিখতে পারেন

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