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

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

প্রথমে, পরীক্ষা করে দেখুন যে কনফিগারেশন পরিবর্তনের সময় আপনার অ্যাপটি ক্র্যাশ হচ্ছে না। নিশ্চিত করুন যে আপনার অ্যাপের প্রতিটি UI ঘূর্ণন, আকার পরিবর্তন বা ভাঁজ করার যেকোনো সমন্বয় পরিচালনা করতে পারে। যেহেতু কনফিগারেশন পরিবর্তনগুলি ডিফল্টরূপে কার্যকলাপ পুনরায় তৈরি করে, তাই কার্যকলাপ স্থায়ীত্বের অনুমানের কারণে কিছু ক্র্যাশ ঘটে।
কনফিগারেশন পরিবর্তনগুলি পরীক্ষা করার একাধিক উপায় আছে, তবে বেশিরভাগ ক্ষেত্রে, পরীক্ষা করার দুটি উপায় রয়েছে:
-  Compose-এ, কার্যকলাপটি পুনরায় চালু না করেই কার্যকরভাবে কনফিগারেশন পরিবর্তন সিমুলেট করতে 
StateRestorationTesterব্যবহার করুন। আরও তথ্যের জন্য নিম্নলিখিত বিভাগগুলি দেখুন। -  যেকোনো UI পরীক্ষায় যেমন Espresso বা Compose-এ, 
Activity.recreate()কল করে কনফিগারেশন পরিবর্তন অনুকরণ করুন। 
কনফিগারেশন পরিবর্তনের প্রতিক্রিয়ায় অবস্থা পুনরুদ্ধার পরীক্ষা করার জন্য আপনাকে সাধারণত বিভিন্ন ডিভাইস ব্যবহার করতে হয় না। এর কারণ হল কার্যকলাপটি পুনরায় তৈরি করে এমন সমস্ত কনফিগারেশন পরিবর্তনের একই রকম প্রতিক্রিয়া হয়। তবে, কিছু কনফিগারেশন পরিবর্তন নির্দিষ্ট ডিভাইসে বিভিন্ন অবস্থা পুনরুদ্ধার প্রক্রিয়া ট্রিগার করতে পারে।
উদাহরণস্বরূপ, যখন একজন ব্যবহারকারী একটি খোলা ফোল্ডেবল ডিভাইসে একটি তালিকা-বিস্তারিত UI দেখছেন এবং সামনের ডিসপ্লেতে স্যুইচ করার জন্য ডিভাইসটি ভাঁজ করেন, তখন UI সাধারণত বিস্তারিত পৃষ্ঠায় স্যুইচ করে। একটি স্বয়ংক্রিয় পরীক্ষায় নেভিগেশন অবস্থা সহ UI অবস্থার এই পুনরুদ্ধারটি অন্তর্ভুক্ত করা উচিত।
এক ডিসপ্লে থেকে অন্য ডিসপ্লেতে যাওয়া বা মাল্টি-উইন্ডো মোডে প্রবেশ করা ডিভাইসগুলিতে কনফিগারেশন পরিবর্তনগুলি পরীক্ষা করার জন্য, আপনার কাছে একাধিক বিকল্প রয়েছে:
- যেকোনো ডিভাইস ব্যবহার করে, পরীক্ষার সময় স্ক্রিনের আকার পরিবর্তন করুন। বেশিরভাগ ক্ষেত্রে, এটি আপনার যাচাই করার জন্য প্রয়োজনীয় সমস্ত অবস্থা পুনরুদ্ধার প্রক্রিয়াগুলিকে ট্রিগার করে। তবে, এই পরীক্ষাটি ফোল্ডেবলগুলিতে নির্দিষ্ট ভঙ্গি সনাক্তকারী লজিকের জন্য কাজ করবে না, কারণ ভঙ্গি পরিবর্তনগুলি কনফিগারেশন পরিবর্তনকে ট্রিগার করে না।
 - আপনি যে বৈশিষ্ট্যগুলি পরীক্ষা করতে চান তা সমর্থন করে এমন একটি ডিভাইস বা এমুলেটর ব্যবহার করে, সংশ্লিষ্ট কনফিগারেশন পরিবর্তনগুলি ট্রিগার করুন। উদাহরণস্বরূপ, একটি ফোল্ডেবল বা ট্যাবলেটকে ল্যান্ডস্কেপে ভাঁজ করা থেকে খোলা সমতল স্থানে স্থানান্তর করতে Espresso ডিভাইস ব্যবহার করে নিয়ন্ত্রণ করা যেতে পারে। উদাহরণের জন্য বিভিন্ন স্ক্রিন আকার পরীক্ষা করার জন্য লাইব্রেরি এবং সরঞ্জামগুলির Espresso ডিভাইস বিভাগটি দেখুন।
 
বিভিন্ন স্ক্রিন এবং উইন্ডো আকারের জন্য পরীক্ষার ধরণ
প্রতিটি ব্যবহারের ক্ষেত্রে উপযুক্ত ধরণের পরীক্ষা ব্যবহার করুন যাতে পরীক্ষাটি বিভিন্ন ফর্ম ফ্যাক্টরের উপর সঠিকভাবে কাজ করছে কিনা তা যাচাই করা যায়:
UI আচরণ পরীক্ষা অ্যাপ UI এর কিছু অংশ চালু করে, যেমন একটি কার্যকলাপের প্রদর্শন। পরীক্ষাগুলি যাচাই করে যে নির্দিষ্ট উপাদান বিদ্যমান বা নির্দিষ্ট বৈশিষ্ট্য রয়েছে। পরীক্ষাগুলি ঐচ্ছিকভাবে সিমুলেটেড ব্যবহারকারীর ক্রিয়া সম্পাদন করতে পারে। ভিউয়ের জন্য, Espresso ব্যবহার করুন। Jetpack Compose এর নিজস্ব টেস্টিং API রয়েছে। UI আচরণ পরীক্ষাগুলি ইন্সট্রুমেন্টেড বা স্থানীয় হতে পারে। ইন্সট্রুমেন্টেড পরীক্ষাগুলি ডিভাইস বা এমুলেটরগুলিতে চালানো হয়, যখন স্থানীয় UI পরীক্ষাগুলি JVM-এর Robolectric- এ চালানো হয়।
কোনও অ্যাপের নেভিগেশন বাস্তবায়ন সঠিক কিনা তা যাচাই করতে UI আচরণ পরীক্ষা ব্যবহার করুন। পরীক্ষাগুলি ক্লিক এবং সোয়াইপের মতো ক্রিয়া সম্পাদন করে। UI আচরণ পরীক্ষাগুলি নির্দিষ্ট উপাদান বা বৈশিষ্ট্যের অস্তিত্বও পরীক্ষা করে। আরও তথ্যের জন্য, স্বয়ংক্রিয় UI পরীক্ষা দেখুন।
স্ক্রিনশট পরীক্ষাগুলি একটি UI বা উপাদানের একটি স্ক্রিনশট নেয় এবং চিত্রটিকে পূর্বে অনুমোদিত স্ক্রিনশটের সাথে তুলনা করে। এটি রিগ্রেশন থেকে রক্ষা করার একটি খুব কার্যকর উপায়, কারণ একটি একক স্ক্রিনশট প্রচুর সংখ্যক উপাদান এবং এর ভিজ্যুয়াল বৈশিষ্ট্যগুলিকে কভার করতে পারে। আপনি JVM বা ডিভাইসে স্ক্রিনশট পরীক্ষা চালাতে পারেন। একাধিক স্ক্রিনশট পরীক্ষা ফ্রেমওয়ার্ক উপলব্ধ। আরও তথ্যের জন্য, স্ক্রিনশট পরীক্ষা দেখুন।
অবশেষে, ডিভাইসের ধরণ বা উইন্ডোর আকারের উপর নির্ভর করে ভিন্নভাবে আচরণ করে এমন লজিকের ইউনিটগুলির কার্যকারিতা পরীক্ষা করার জন্য আপনার ইউনিট পরীক্ষার প্রয়োজন হতে পারে, তবে এই ক্ষেত্রে ইউনিট পরীক্ষা কম দেখা যায়।
পরবর্তী পদক্ষেপ
এই নথিতে থাকা চেকগুলি কীভাবে বাস্তবায়ন করবেন সে সম্পর্কে আরও তথ্যের জন্য, লাইব্রেরি এবং সরঞ্জামগুলি দেখুন।