ধারণা এবং জেটপ্যাক কম্পোজ বাস্তবায়ন
অ্যাক্সেসিবিলিটি টেস্টিং আপনাকে ব্যবহারকারীর দৃষ্টিকোণ থেকে আপনার অ্যাপটি অনুভব করতে এবং এমন ব্যবহারযোগ্যতার সমস্যা খুঁজে বের করতে সাহায্য করে যা আপনার চোখ এড়িয়ে যেতে পারে। অ্যাক্সেসিবিলিটি টেস্টিং প্রতিবন্ধী ব্যক্তিসহ সকল ব্যবহারকারীর জন্য আপনার অ্যাপটিকে আরও শক্তিশালী ও বহুমুখী করে তোলার সুযোগ উন্মোচন করতে পারে।
এই নথিতে নিম্নলিখিত পদ্ধতিগুলি বর্ণনা করা হয়েছে:
- বিশ্লেষণ সরঞ্জাম ব্যবহার করে পরীক্ষা : আপনার অ্যাপের অ্যাক্সেসিবিলিটি উন্নত করার সুযোগ খুঁজে বের করতে সরঞ্জাম ব্যবহার করুন।
- স্বয়ংক্রিয় টেস্টিং : Espresso এবং Robolectric-এ অ্যাক্সেসিবিলিটি টেস্টিং চালু করুন।
বিশ্লেষণ সরঞ্জাম ব্যবহার করে পরীক্ষা করা
বিশ্লেষণ সরঞ্জামগুলি অ্যাক্সেসিবিলিটি উন্নত করার এমন সুযোগগুলি উন্মোচন করতে পারে যা ম্যানুয়াল পরীক্ষার মাধ্যমে আপনার চোখ এড়িয়ে যেতে পারে।
অ্যাক্সেসিবিলিটি স্ক্যানার
অ্যাক্সেসিবিলিটি স্ক্যানার অ্যাপটি আপনার স্ক্রিন স্ক্যান করে এবং আপনার অ্যাপের অ্যাক্সেসিবিলিটি উন্নত করার উপায় বাতলে দেয়। অ্যাক্সেসিবিলিটি স্ক্যানার , অ্যাক্সেসিবিলিটি টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে এবং কন্টেন্ট লেবেল, ক্লিকযোগ্য আইটেম, কনট্রাস্ট ও আরও অনেক কিছু খতিয়ে দেখার পর সুনির্দিষ্ট পরামর্শ প্রদান করে।
আপনার লেআউটগুলিতে অ্যাক্সেসিবিলিটি সংক্রান্ত সমস্যা খুঁজে বের করতে সাহায্য করার জন্য অ্যান্ড্রয়েড অ্যাক্সেসিবিলিটি টেস্ট ফ্রেমওয়ার্কটি অ্যান্ড্রয়েড স্টুডিও-তে সমন্বিত করা হয়েছে। প্যানেলটি চালু করতে, লেআউট এডিটর-এ থাকা এরর রিপোর্ট বাটন !-এ ক্লিক করুন।
চিত্র ১. অ্যাক্সেসিবিলিটি স্ক্যানারের ডেমো।
আরও জানতে, নিম্নলিখিত উৎসগুলো দেখুন:
UI অটোমেটর ভিউয়ার
The uiautomatorviewer tool provides a convenient GUI to scan and analyze the UI components currently displayed on an Android-powered device. You can use UI Automator to inspect the layout hierarchy and view the properties of UI components that are visible on the foreground of the device. This information lets you create more fine-grained tests, for example by creating a UI selector that matches a specific visible property. The tool is located in the tools directory of the Android SDK.
অ্যাক্সেসিবিলিটি টেস্টিং-এর ক্ষেত্রে, অন্যান্য টেস্টিং পদ্ধতি ব্যবহার করে খুঁজে পাওয়া সমস্যাগুলো ডিবাগ করার জন্য এই টুলটি কার্যকর। উদাহরণস্বরূপ, যদি ম্যানুয়াল টেস্টিং-এর মাধ্যমে দেখা যায় যে কোনো ভিউ-তে প্রয়োজনীয় কথ্য টেক্সট নেই, অথবা কোনো ভিউ এমন সময়ে ফোকাস পাচ্ছে যখন তার পাওয়ার কথা নয়, তাহলে আপনি সমস্যাটির উৎস খুঁজে বের করতে এই টুলটি ব্যবহার করতে পারেন।
UI Automator Viewer সম্পর্কে আরও জানতে, Write automated tests with UI Automator দেখুন।
লিন্ট
অ্যান্ড্রয়েড স্টুডিও বিভিন্ন অ্যাক্সেসিবিলিটি সমস্যার জন্য লিন্ট ওয়ার্নিং দেখায় এবং আপনার সোর্স কোডের প্রাসঙ্গিক স্থানগুলোর লিঙ্ক প্রদান করে। নিচের উদাহরণে, একটি ছবিতে ` contentDescription অ্যাট্রিবিউটটি নেই। এই কন্টেন্ট ডেসক্রিপশনটি না থাকার ফলে নিম্নলিখিত বার্তাটি প্রদর্শিত হয়:
[Accessibility] Missing 'contentDescription' attribute on image
চিত্র ২-এ অ্যান্ড্রয়েড স্টুডিওতে এই বার্তাটি কীভাবে প্রদর্শিত হয় তার একটি উদাহরণ দেখানো হয়েছে:
contentDescription অ্যাট্রিবিউটটি অনুপস্থিত দেখানো হচ্ছে।স্বয়ংক্রিয় পরীক্ষা
অ্যান্ড্রয়েড প্ল্যাটফর্ম এসপ্রেসোর মতো বেশ কিছু টেস্টিং ফ্রেমওয়ার্ক সমর্থন করে, যা আপনাকে আপনার অ্যাপের অ্যাক্সেসিবিলিটি মূল্যায়ন করার জন্য স্বয়ংক্রিয় টেস্ট তৈরি ও চালানোর সুযোগ দেয়।
এসপ্রেসো
এসপ্রেসো হলো একটি অ্যান্ড্রয়েড টেস্টিং লাইব্রেরি, যা UI টেস্টিং দ্রুত এবং সহজ করার জন্য ডিজাইন করা হয়েছে। এটি আপনাকে আপনার অ্যাপের পরীক্ষাধীন UI কম্পোনেন্টগুলোর সাথে ইন্টারঅ্যাক্ট করতে এবং নির্দিষ্ট আচরণ ঘটছে বা বিশেষ শর্ত পূরণ হচ্ছে কিনা তা অ্যাসার্ট করতে দেয়।
Espresso-এর মাধ্যমে অ্যাক্সেসিবিলিটি টেস্টিং-এর একটি ভিডিও ওভারভিউ দেখতে, নিম্নলিখিত ভিডিওটি ৩১:৫৪ মিনিট থেকে ৩৪:১৯ মিনিট পর্যন্ত দেখুন: Inclusive design and testing: Making your app more accessible - Google I/O 2016 ।
এই অংশে বর্ণনা করা হয়েছে কীভাবে Espresso ব্যবহার করে অ্যাক্সেসিবিলিটি চেক চালানো যায়।
চেকগুলি সক্ষম করুন
আপনি AccessibilityChecks ক্লাসটি ব্যবহার করে অ্যাক্সেসিবিলিটি টেস্টিং সক্রিয় এবং কনফিগার করতে পারেন:
কোটলিন
import androidx.test.espresso.accessibility.AccessibilityChecks
@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
init {
AccessibilityChecks.enable()
}
}
জাভা
import androidx.test.espresso.accessibility.AccessibilityChecks;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
@BeforeClass
public void enableAccessibilityChecks() {
AccessibilityChecks.enable();
}
}
ডিফল্টরূপে, আপনি ViewActions এ সংজ্ঞায়িত যেকোনো ভিউ অ্যাকশন সম্পাদন করলে এই চেকগুলো চলে। প্রতিটি চেকে সেই ভিউটি অন্তর্ভুক্ত থাকে যার উপর অ্যাকশনটি সম্পাদিত হয়, সেইসাথে এর সমস্ত ডিসেন্ডেন্ট ভিউও। আপনি setRunChecksFromRootView() এ true পাস করে প্রতিটি চেকের সময় একটি স্ক্রিনের সম্পূর্ণ ভিউ হায়ারার্কি মূল্যায়ন করতে পারেন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
কোটলিন
AccessibilityChecks.enable().setRunChecksFromRootView(true)
জাভা
AccessibilityChecks.enable().setRunChecksFromRootView(true);
ফলাফলের উপসেটগুলি দমন করুন
Espresso আপনার অ্যাপে অ্যাক্সেসিবিলিটি পরীক্ষা চালানোর পর, আপনি আপনার অ্যাপের অ্যাক্সেসিবিলিটি উন্নত করার জন্য এমন অনেক সুযোগ খুঁজে পেতে পারেন যা আপনি তাৎক্ষণিকভাবে সমাধান করতে পারবেন না। এই ফলাফলগুলোর কারণে Espresso টেস্টগুলোর ক্রমাগত ব্যর্থ হওয়া বন্ধ করতে, আপনি সাময়িকভাবে সেগুলোকে উপেক্ষা করতে পারেন। অ্যাক্সেসিবিলিটি টেস্ট ফ্রেমওয়ার্ক (ATF) setSuppressingResultMatcher() মেথড ব্যবহার করে এই কার্যকারিতা প্রদান করে, যা Espresso-কে প্রদত্ত ম্যাচিং এক্সপ্রেশনটি পূরণ করে এমন সমস্ত ফলাফল দমন করার নির্দেশ দেয়।
যখন আপনি আপনার অ্যাপে এমন কোনো পরিবর্তন আনেন যা অ্যাক্সেসিবিলিটির একটি দিককে উন্নত করে, তখন Espresso-র জন্য অ্যাক্সেসিবিলিটির অন্যান্য যত বেশি সম্ভব দিকের ফলাফল দেখানো সুবিধাজনক হয়। এই কারণে, উন্নতির জন্য শুধুমাত্র নির্দিষ্ট ও জ্ঞাত সুযোগগুলোকেই দমন করা সবচেয়ে ভালো।
যখন আপনি পরে সমাধান করার পরিকল্পনা করেন এমন অ্যাক্সেসিবিলিটি পরীক্ষার ফলাফল সাময়িকভাবে দমন করেন, তখন ভুলবশত একই ধরনের ফলাফল দমন না করাটা গুরুত্বপূর্ণ। এই কারণে, এমন ম্যাচিং টুল ব্যবহার করুন যার পরিধি সীমিত। এটি করার জন্য, এমন একটি ম্যাচিং টুল বেছে নিন যাতে Espresso একটি নির্দিষ্ট ফলাফলকে কেবল তখনই দমন করে, যখন এটি নিম্নলিখিত প্রতিটি অ্যাক্সেসিবিলিটি যাচাই পূরণ করে:
- এক বিশেষ ধরনের অভিগম্যতা যাচাই, যেমন স্পর্শ লক্ষ্যবস্তুর আকার যাচাই।
- অ্যাক্সেসিবিলিটি চেক যা কোনো নির্দিষ্ট UI এলিমেন্ট, যেমন একটি বাটন, মূল্যায়ন করে।
আপনার এসপ্রেসো টেস্টে কোন ফলাফলগুলো দেখানো হবে তা নির্ধারণ করতে সাহায্য করার জন্য ATF বেশ কিছু ম্যাচিং টুল সংজ্ঞায়িত করে । নিম্নলিখিত উদাহরণটি একটিমাত্র TextView এলিমেন্টের রঙের বৈসাদৃশ্য সম্পর্কিত চেকের ফলাফলগুলো বাদ দেয়। এলিমেন্টটির আইডি হলো countTV ।
কোটলিন
AccessibilityChecks.enable().apply {
setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck::class.java),
matchesViews(withId(R.id.countTV))
)
)
}
জাভা
AccessibilityValidator myChecksValidator =
AccessibilityChecks.enable()
.setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck.class),
matchesViews(withId(R.id.countTV))));