ব্যবহারকারীর মিথস্ক্রিয়া পরীক্ষা করা নিশ্চিত করতে সহায়তা করে যে ব্যবহারকারীরা আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সময় অপ্রত্যাশিত ফলাফলের সম্মুখীন না হয় বা খারাপ অভিজ্ঞতা না পায়। আপনার অ্যাপের UI সঠিকভাবে কাজ করছে কিনা তা যাচাই করতে হলে আপনাকে ইউজার ইন্টারফেস (UI) পরীক্ষা তৈরি করার অভ্যাস করা উচিত।
UI পরীক্ষার একটি পদ্ধতি হ'ল একজন মানব পরীক্ষককে লক্ষ্য অ্যাপে ব্যবহারকারীর ক্রিয়াকলাপগুলির একটি সেট সঞ্চালন করা এবং এটি সঠিকভাবে আচরণ করছে কিনা তা যাচাই করা। যাইহোক, এই ম্যানুয়াল পদ্ধতিটি সময়সাপেক্ষ এবং ত্রুটি-প্রবণ হতে পারে। একটি আরও দক্ষ পদ্ধতি হল আপনার UI পরীক্ষাগুলি লিখতে যাতে ব্যবহারকারীর ক্রিয়াগুলি একটি স্বয়ংক্রিয় উপায়ে সঞ্চালিত হয়। স্বয়ংক্রিয় পদ্ধতি আপনাকে পুনরাবৃত্তিযোগ্য পদ্ধতিতে দ্রুত এবং নির্ভরযোগ্যভাবে আপনার পরীক্ষা চালানোর অনুমতি দেয়।
UI পরীক্ষাগুলি একটি অ্যাপ (বা এর অংশ) লঞ্চ করে, তারপর ব্যবহারকারীর মিথস্ক্রিয়া অনুকরণ করে এবং অবশেষে অ্যাপটি যথাযথভাবে প্রতিক্রিয়া জানিয়েছে কিনা তা পরীক্ষা করে। এগুলি হল ইন্টিগ্রেশন পরীক্ষা যা একটি ছোট উপাদানের আচরণ যাচাই করা থেকে শুরু করে একটি বৃহৎ নেভিগেশন পরীক্ষা যা পুরো ব্যবহারকারীর প্রবাহকে অতিক্রম করে। এগুলি রিগ্রেশন পরীক্ষা করতে এবং বিভিন্ন API স্তর এবং শারীরিক ডিভাইসগুলির সাথে সামঞ্জস্যতা যাচাই করতে উপযোগী।
অ্যান্ড্রয়েড স্টুডিওতে যন্ত্রযুক্ত UI পরীক্ষা
অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে ইন্সট্রুমেন্টেড UI পরীক্ষা চালানোর জন্য, আপনি একটি পৃথক অ্যান্ড্রয়েড টেস্ট ফোল্ডারে আপনার পরীক্ষার কোড প্রয়োগ করুন - src/androidTest/java
। Gradle-এর জন্য Android প্লাগ-ইন আপনার পরীক্ষার কোডের উপর ভিত্তি করে একটি পরীক্ষামূলক অ্যাপ তৈরি করে, তারপর লক্ষ্য অ্যাপের মতো একই ডিভাইসে পরীক্ষা অ্যাপটি লোড করে। আপনার পরীক্ষার কোডে, আপনি নির্দিষ্ট ব্যবহারের পরিস্থিতিগুলি কভার করে এমন পরীক্ষার কাজগুলি সম্পাদন করার জন্য লক্ষ্য অ্যাপে ব্যবহারকারীর মিথস্ক্রিয়া অনুকরণ করতে UI পরীক্ষার কাঠামো ব্যবহার করতে পারেন।
জেটপ্যাক ফ্রেমওয়ার্ক
Jetpack বিভিন্ন ফ্রেমওয়ার্ক অন্তর্ভুক্ত করে যা UI পরীক্ষা লেখার জন্য API প্রদান করে:
- এসপ্রেসো টেস্টিং ফ্রেমওয়ার্ক (Android 4.0.1, API লেভেল 14 বা উচ্চতর) একটি টার্গেট অ্যাপের মধ্যে ভিউয়ের সাথে ব্যবহারকারীর ইন্টারঅ্যাকশন অনুকরণ করতে UI পরীক্ষা লেখার জন্য API প্রদান করে। Espresso ব্যবহার করার একটি মূল সুবিধা হল যে এটি আপনি যে অ্যাপটি পরীক্ষা করছেন তার UI এর সাথে পরীক্ষার ক্রিয়াগুলির স্বয়ংক্রিয় সিঙ্ক্রোনাইজেশন প্রদান করে। এসপ্রেসো সনাক্ত করে যখন মূল থ্রেডটি নিষ্ক্রিয় থাকে, তাই এটি আপনার পরীক্ষার নির্ভরযোগ্যতা উন্নত করে উপযুক্ত সময়ে আপনার পরীক্ষার কমান্ড চালাতে সক্ষম হয়।
- জেটপ্যাক কম্পোজ (Android 5.0, API লেভেল 21 বা উচ্চতর) কম্পোজ স্ক্রিন এবং উপাদানগুলির সাথে লঞ্চ এবং ইন্টারঅ্যাক্ট করার জন্য পরীক্ষামূলক APIগুলির একটি সেট সরবরাহ করে। রচনা উপাদানগুলির সাথে মিথস্ক্রিয়াগুলি পরীক্ষার সাথে সিঙ্ক্রোনাইজ করা হয় এবং সময়, অ্যানিমেশন এবং পুনর্গঠনের উপর সম্পূর্ণ নিয়ন্ত্রণ থাকে।
- UI অটোমেটর (Android 4.3, API স্তর 18 বা উচ্চতর) হল একটি UI টেস্টিং ফ্রেমওয়ার্ক যা ক্রস-অ্যাপ ফাংশনাল UI পরীক্ষার জন্য সিস্টেম এবং ইনস্টল করা অ্যাপ জুড়ে উপযুক্ত। UI অটোমেটর APIগুলি আপনাকে একটি পরীক্ষা ডিভাইসে সেটিংস মেনু বা অ্যাপ লঞ্চার খোলার মতো ক্রিয়াকলাপগুলি সম্পাদন করতে দেয়৷
- Robolectric (Android 4.1, API স্তর 16 বা উচ্চতর) আপনাকে স্থানীয় পরীক্ষাগুলি তৈরি করতে দেয় যা আপনার ওয়ার্কস্টেশনে বা একটি নিয়মিত JVM-এ একটি এমুলেটর বা ডিভাইসের পরিবর্তে ক্রমাগত ইন্টিগ্রেশন পরিবেশে চলে। এটি UI উপাদানগুলির সাথে ইন্টারঅ্যাক্ট করতে Espresso বা কম্পোজ টেস্টিং API ব্যবহার করতে পারে।
ফ্লাকনেস এবং সিঙ্ক্রোনাইজেশন
মোবাইল অ্যাপ্লিকেশন এবং ফ্রেমওয়ার্কের অ্যাসিঙ্ক্রোনাস প্রকৃতি প্রায়শই এটিকে নির্ভরযোগ্য এবং পুনরাবৃত্তিযোগ্য পরীক্ষা লিখতে চ্যালেঞ্জ করে তোলে। যখন একটি ব্যবহারকারী ইভেন্ট ইনজেকশন করা হয়, পরীক্ষার কাঠামোটি অ্যাপটির প্রতিক্রিয়া শেষ করার জন্য অপেক্ষা করতে হবে, যা স্ক্রিনে কিছু পাঠ্য পরিবর্তন থেকে শুরু করে একটি কার্যকলাপের সম্পূর্ণ বিনোদন পর্যন্ত হতে পারে। যখন একটি পরীক্ষায় একটি নির্ধারক আচরণ থাকে না, তখন এটি অস্বস্তিকর ।
কম্পোজ বা এসপ্রেসোর মতো আধুনিক ফ্রেমওয়ার্কগুলি পরীক্ষাকে মাথায় রেখে ডিজাইন করা হয়েছে তাই একটি নির্দিষ্ট গ্যারান্টি রয়েছে যে পরবর্তী পরীক্ষার পদক্ষেপ বা দাবির আগে UI নিষ্ক্রিয় থাকবে। এটি সিঙ্ক্রোনাইজেশন ।
টেস্ট সিঙ্ক্রোনাইজেশন
আপনি যখন পরীক্ষায় অজানা অ্যাসিঙ্ক্রোনাস বা ব্যাকগ্রাউন্ড অপারেশন চালান, যেমন ডাটাবেস থেকে ডেটা লোড করা বা অসীম অ্যানিমেশন দেখানোর মতো সমস্যাগুলি এখনও দেখা দিতে পারে।
![ফ্লো ডায়াগ্রাম একটি লুপ দেখাচ্ছে যা পরীক্ষা করে পরীক্ষা পাস করার আগে অ্যাপটি নিষ্ক্রিয় কিনা](https://developer.android.com/static/training/testing/instrumented-tests/sync.png?authuser=4&hl=bn)
আপনার টেস্ট স্যুটের নির্ভরযোগ্যতা বাড়াতে, আপনি ব্যাকগ্রাউন্ড অপারেশন ট্র্যাক করার একটি উপায় ইনস্টল করতে পারেন, যেমন Espresso Idling Resources । এছাড়াও, আপনি পরীক্ষামূলক সংস্করণগুলির জন্য মডিউলগুলি প্রতিস্থাপন করতে পারেন যা আপনি অলসতার জন্য অনুসন্ধান করতে পারেন বা যা সিঙ্ক্রোনাইজেশন উন্নত করতে পারে, যেমন coroutines-এর জন্য TestDispatcher বা RxJava-এর জন্য RxIdler ৷
![ডায়াগ্রাম একটি পরীক্ষা ব্যর্থতা দেখায় যখন সিঙ্ক্রোনাইজেশন একটি নির্দিষ্ট সময়ের জন্য অপেক্ষার উপর ভিত্তি করে](https://developer.android.com/static/training/testing/instrumented-tests/flaky.png?authuser=4&hl=bn)
স্থাপত্য এবং পরীক্ষা সেটআপ
আপনার অ্যাপের আর্কিটেকচারটি পরীক্ষাগুলিকে দ্বিগুণ পরীক্ষার জন্য এর অংশগুলিকে প্রতিস্থাপন করতে দেয় এবং আপনার লাইব্রেরিগুলি ব্যবহার করা উচিত যা পরীক্ষায় সহায়তা করার জন্য ইউটিলিটিগুলি সরবরাহ করে। উদাহরণস্বরূপ, আপনি একটি ডেটা রিপোজিটরি মডিউল এর একটি ইন-মেমরি সংস্করণ দিয়ে প্রতিস্থাপন করতে পারেন যা পরীক্ষার জন্য জাল, নির্ধারক ডেটা সরবরাহ করে।
এই কার্যকারিতা সক্ষম করার প্রস্তাবিত পদ্ধতি হল নির্ভরতা ইনজেকশন ব্যবহার করা। আপনি ম্যানুয়ালি আপনার নিজস্ব সিস্টেম তৈরি করতে পারেন তবে আমরা এর জন্য হিল্টের মতো একটি DI ফ্রেমওয়ার্ক ব্যবহার করার পরামর্শ দিই।
কেন স্বয়ংক্রিয়ভাবে পরীক্ষা?
একটি অ্যান্ড্রয়েড অ্যাপ অনেকগুলি API স্তর এবং ফর্ম ফ্যাক্টর জুড়ে হাজার হাজার বিভিন্ন ডিভাইসকে লক্ষ্য করতে পারে এবং OS ব্যবহারকারীর কাছে যে উচ্চ স্তরের কাস্টমাইজেশন নিয়ে আসে তার অর্থ হল আপনার অ্যাপটি ভুলভাবে রেন্ডার করা হতে পারে বা কিছু ডিভাইসে ক্র্যাশও হতে পারে।
UI টেস্টিং আপনাকে সামঞ্জস্য পরীক্ষা করতে দেয়, বিভিন্ন প্রসঙ্গে একটি অ্যাপের আচরণ যাচাই করে। আপনি নিম্নলিখিত উপায়ে পরিবর্তিত ডিভাইসগুলিতে আপনার UI পরীক্ষা চালাতে চাইতে পারেন:
- API স্তর : 21, 25, এবং 30।
- স্থানীয় : ইংরেজি, আরবি এবং চীনা।
- ওরিয়েন্টেশন : প্রতিকৃতি, ল্যান্ডস্কেপ।
তদুপরি, অ্যাপগুলির ফোনের বাইরে আচরণ পরীক্ষা করা উচিত। আপনার ট্যাবলেট, ফোল্ডেবল এবং অন্যান্য ডিভাইসে পরীক্ষা করা উচিত।
অতিরিক্ত সম্পদ
UI পরীক্ষা তৈরির বিষয়ে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন৷