المفاهيم والتنفيذ في Jetpack Compose
يتيح لك اختبار إمكانية الوصول تجربة تطبيقك من منظور المستخدم والعثور على مشاكل في سهولة الاستخدام قد لا تلاحظها. ويمكن أن يكشف اختبار إمكانية الوصول عن فرص لجعل تطبيقك أكثر فعالية وتنوّعًا لجميع المستخدمين، بما في ذلك ذوو الاحتياجات الخاصة.
يوضّح هذا المستند الطرق التالية:
- الاختبار باستخدام أدوات التحليل: استخدِم الأدوات للعثور على فرص لتحسين إمكانية استخدام تطبيقك.
- الاختبار المبرمَج: فعِّل اختبار سهولة الاستخدام في Espresso وRobolectric.
إجراء الاختبارات باستخدام أدوات التحليل
يمكن أن تكشف أدوات التحليل عن فرص لتحسين إمكانية الوصول قد لا تلاحظها عند إجراء الاختبار اليدوي.
Accessibility Scanner
يفحص تطبيق Accessibility Scanner شاشتك ويقترح طرقًا لتحسين إمكانية الوصول إلى تطبيقك. يستخدم تطبيق Accessibility Scanner إطار عمل اختبار إمكانية الوصول ويقدّم اقتراحات محدّدة بعد الاطّلاع على تصنيفات المحتوى والعناصر القابلة للنقر والتباين وغير ذلك.
تم دمج "إطار عمل اختبار تسهيل الاستخدام في Android" في استوديو Android لمساعدتك في العثور على مشاكل تسهيل الاستخدام في التصميمات. لفتح اللوحة، انقر على زر تقرير الخطأ ! في "أداة تعديل التنسيق".
الشكل 1. عرض توضيحي لتطبيق Accessibility Scanner
لمزيد من المعلومات، يُرجى الاطّلاع على المراجع التالية:
UI Automator Viewer
توفّر أداة uiautomatorviewer واجهة مستخدم رسومية سهلة الاستخدام لمسح وتحليل عناصر واجهة المستخدم المعروضة حاليًا على جهاز يعمل بنظام التشغيل Android. يمكنك استخدام أداة UI Automator لفحص التسلسل الهرمي للتصميم وعرض خصائص عناصر واجهة المستخدم المرئية في مقدّمة الجهاز. تتيح لك هذه المعلومات إنشاء اختبارات أكثر دقة، على سبيل المثال، من خلال إنشاء أداة اختيار لعناصر واجهة المستخدم تتطابق مع سمة مرئية معيّنة. تتوفّر الأداة في الدليل tools
لحزمة تطوير البرامج (SDK) لنظام التشغيل Android.
في اختبارات تسهيل الاستخدام، تكون هذه الأداة مفيدة لتصحيح الأخطاء التي تم العثور عليها باستخدام طرق الاختبار الأخرى. على سبيل المثال، إذا كشف الاختبار اليدوي أنّ إحدى طرق العرض لا تتضمّن النص القابل للنطق المطلوب أو أنّ إحدى طرق العرض يتم التركيز عليها عندما لا يجب ذلك، يمكنك استخدام الأداة للمساعدة في تحديد مصدر المشكلة.
لمزيد من المعلومات عن أداة UI Automator Viewer، راجِع مقالة إنشاء اختبارات مبرمَجة باستخدام UI Automator.
Lint
يعرض "استوديو Android" تحذيرات lint بشأن مشاكل تسهيل الاستخدام المختلفة، كما يوفّر روابط إلى المواضع ذات الصلة في رمز المصدر. في المثال التالي، تفتقد الصورة إلى السمة contentDescription. يؤدي عدم توفّر وصف المحتوى إلى ظهور الرسالة التالية:
[Accessibility] Missing 'contentDescription' attribute on image
تعرض "الشكل 2" مثالاً على كيفية ظهور هذه الرسالة في "استوديو Android":
contentDescription غير المضمّنة.الاختبار الآلي
يدعم نظام Android الأساسي العديد من أُطر العمل للاختبار، مثل Espresso، التي تتيح لك إنشاء اختبارات مبرمَجة وتنفيذها لتقييم مدى سهولة استخدام تطبيقك.
Espresso
Espresso هي مكتبة اختبار لنظام التشغيل Android مصمَّمة لجعل اختبار واجهة المستخدم سريعًا وسهلاً. تتيح لك هذه المكتبة التفاعل مع عناصر واجهة المستخدم التي يتم اختبارها في تطبيقك والتأكّد من حدوث سلوكيات معيّنة أو استيفاء شروط محدّدة.
للاطّلاع على نظرة عامة حول اختبار إمكانية الوصول باستخدام Espresso، شاهِد الفيديو التالي من الدقيقة 31:54 إلى الدقيقة 34:19: التصميم الشامل والاختبار: تسهيل استخدام تطبيقك - مؤتمر Google I/O 2016.
يوضّح هذا القسم كيفية إجراء عمليات التحقّق من إمكانية الوصول باستخدام Espresso.
تفعيل عمليات التحقّق
يمكنك تفعيل اختبار إمكانية الوصول إلى التطبيق وضبط إعداداته باستخدام فئة
AccessibilityChecks:
Kotlin
import androidx.test.espresso.accessibility.AccessibilityChecks
@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
init {
AccessibilityChecks.enable()
}
}
Java
import androidx.test.espresso.accessibility.AccessibilityChecks;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
@BeforeClass
public void enableAccessibilityChecks() {
AccessibilityChecks.enable();
}
}
تُجرى عمليات التحقّق تلقائيًا عند تنفيذ أي إجراء عرض محدّد في
ViewActions. يتضمّن كل فحص العرض الذي يتم تنفيذ الإجراء عليه بالإضافة إلى جميع العروض التابعة. يمكنك تقييم هيكلية طرق العرض الكاملة لشاشة معيّنة أثناء كل عملية فحص من خلال تمرير true إلى setRunChecksFromRootView()، كما هو موضّح في مقتطف الرمز البرمجي التالي:
Kotlin
AccessibilityChecks.enable().setRunChecksFromRootView(true)
Java
AccessibilityChecks.enable().setRunChecksFromRootView(true);
إخفاء مجموعات فرعية من النتائج
بعد أن يجري Espresso عمليات التحقّق من تسهيل الاستخدام لتطبيقك، قد تجد العديد من الفرص لتحسين تسهيل الاستخدام لتطبيقك، ولكن قد لا تتمكّن من معالجة هذه الفرص على الفور. ولإيقاف تعذُّر اختبارات Espresso باستمرار بسبب هذه النتائج، يمكنك تجاهلها مؤقتًا. يوفّر إطار عمل اختبار إمكانية الوصول (ATF) هذه الوظيفة باستخدام الطريقة setSuppressingResultMatcher()، التي توجّه Espresso إلى إخفاء جميع النتائج التي تستوفي تعبير المطابقة المحدّد.
عند إجراء تغييرات على تطبيقك تعالج أحد جوانب تسهيل الاستخدام، من المفيد أن يعرض Espresso نتائج لأكبر عدد ممكن من الجوانب الأخرى المتعلقة بتسهيل الاستخدام. لهذا السبب، من الأفضل إيقاف فرص التحسين المعروفة والمحدّدة فقط.
عند إيقاف نتائج اختبار تسهيل الاستخدام مؤقتًا والتي تخطّط لمعالجتها لاحقًا، من المهم عدم إيقاف النتائج المشابهة عن طريق الخطأ. لهذا السبب، استخدِم أدوات مطابقة ذات نطاق محدود. لإجراء ذلك، اختَر عنصر مطابقة كي لا يعرض Espresso نتيجة معيّنة إلا إذا استوفت كل عمليات التحقّق التالية من إمكانية الوصول:
- عمليات التحقّق من إمكانية الوصول من نوع معيّن، مثل عمليات التحقّق من حجم عنصر قابل للمس
- عمليات التحقّق من إمكانية الوصول التي تقيّم عنصرًا معيّنًا في واجهة المستخدم، مثل زر.
تحدّد أداة ATF العديد من أدوات المطابقة
لمساعدتك في تحديد النتائج التي سيتم عرضها في اختبارات Espresso. يؤدي المثال التالي إلى إيقاف نتائج عمليات التحقّق المرتبطة بتباين الألوان في عنصر TextView واحد. رقم تعريف العنصر هو countTV.
Kotlin
AccessibilityChecks.enable().apply {
setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck::class.java),
matchesViews(withId(R.id.countTV))
)
)
}
Java
AccessibilityValidator myChecksValidator =
AccessibilityChecks.enable()
.setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck.class),
matchesViews(withId(R.id.countTV))));