تعد مرحلة الاختبار جزءًا لا يتجزأ من عملية تطوير التطبيقات. عادةً ما تشغّل التطبيقات على محاكي أو جهاز للتحقّق يدويًا من أنّ الرمز البرمجي يعمل على النحو المتوقّع. ومع ذلك، يستغرق الاختبار اليدوي وقتًا طويلاً، وهو عرضة للأخطاء، وغالبًا ما يكون غير قابل للإدارة بالنسبة إلى التطبيقات التي تعمل على شاشات وأجهزة بأحجام مختلفة. تنتج مشاكل الاختبار اليدوي في أغلب الأحيان عن استخدام جهاز واحد للتطوير. ونتيجةً لذلك، قد لا يتم رصد الأخطاء على الأجهزة الأخرى التي تتضمّن عوامل شكل مختلفة.
لتحديد المشاكل المتعلّقة بتراجع الأداء على أحجام مختلفة من النوافذ والشاشات، عليك تنفيذ اختبارات مبرمَجة للتحقّق من أنّ سلوك تطبيقك وشكله متوافقان مع مختلف عوامل التصميم. تحدّد الاختبارات الآلية المشاكل في وقت مبكر، ما يقلّل من خطر حدوث مشاكل تؤثر في تجربة المستخدم.
ما يجب اختباره
عند تطوير واجهات مستخدم مصمَّمة لأحجام مختلفة للشاشة والنافذة، يجب الانتباه بشكل خاص إلى جانبَين:
- كيف تختلف السمات المرئية للمكوّنات والتخطيطات على النوافذ ذات الأحجام المختلفة
- كيفية الحفاظ على الحالة عند حدوث تغييرات في الإعدادات
السمات المرئية
سواء كنت تخصّص واجهات المستخدم لأحجام النوافذ المختلفة أم لا، عليك التأكّد من عرض واجهات المستخدم بشكل صحيح. ضَع في اعتبارك العروض والارتفاعات التي تكون مضغوطة ومتوسطة وموسّعة. راجِع فئات أحجام النوافذ للاطّلاع على نقاط التوقّف المقترَحة.

بالإضافة إلى ذلك، قد لا يعرض تطبيقك بعض المكوّنات في نظام التصميم على النحو المتوقّع عند توسيع قيود حجمها.
إذا كان تطبيقك يتضمّن تصاميم متجاوبة مع أحجام النوافذ المختلفة، يجب أن تتوفّر لديك اختبارات مبرمَجة لمنع حدوث تراجعات. على سبيل المثال، يمكن أن يؤدي إصلاح هامش على هاتف إلى حدوث تناقضات في التصميم على جهاز لوحي. يمكنك إنشاء اختبارات واجهة المستخدم للتحقّق من سلوك التصاميم والمكوّنات، أو إنشاء اختبارات لقطات الشاشة للتحقّق من التصاميم بشكل مرئي.
استعادة الحالة
يتم تدوير التطبيقات وتغيير حجمها على الأجهزة اللوحية بشكل أكثر تكرارًا من التطبيقات على الهواتف. توفّر الأجهزة القابلة للطي أيضًا إمكانات عرض جديدة، مثل الطي والفرد، ما يمكن أن يؤدي إلى تغييرات في الإعدادات. يجب أن يكون تطبيقك قادرًا على استعادة الحالة عند حدوث تغييرات في الإعدادات. عليك أيضًا كتابة اختبارات تؤكّد أنّ تطبيقك يعيد الحالة بشكل صحيح.

أولاً، اختبِر تطبيقك للتأكّد من أنّه لا يتعطّل عند حدوث تغييرات في الإعدادات. تأكَّد من أنّ كل واجهة مستخدم في تطبيقك يمكنها التعامل مع أي مجموعة من عمليات التدوير أو تغيير الحجم أو الطي. بما أنّ تغييرات الإعدادات تعيد إنشاء النشاط تلقائيًا، تحدث بعض الأعطال بسبب افتراضات استمرار النشاط.
تتوفّر عدّة طرق لاختبار تغييرات الإعدادات، ولكن في معظم الحالات، تتوفّر طريقتان للاختبار:
- في Compose، استخدِم
StateRestorationTester
لمحاكاة تغيير في الإعدادات بطريقة فعّالة بدون إعادة تشغيل النشاط. يُرجى الاطّلاع على الأقسام التالية للحصول على مزيد من المعلومات. - في أي اختبار لواجهة المستخدم، مثل Espresso أو Compose، حاكِ تغييرًا في الإعدادات
من خلال استدعاء
Activity.recreate()
.
بشكل عام، ليس عليك استخدام أجهزة مختلفة لاختبار استعادة الحالة استجابةً لتغييرات الإعدادات. ويرجع ذلك إلى أنّ جميع تغييرات الإعدادات التي تعيد إنشاء النشاط لها تداعيات مماثلة. ومع ذلك، قد تؤدي بعض التغييرات في الإعدادات إلى تشغيل آليات مختلفة لاستعادة الحالة على أجهزة معيّنة.
على سبيل المثال، عندما يعرض المستخدم واجهة مستخدم تتضمّن قائمة وتفاصيل على جهاز قابل للطي مفتوح، ثم يطوي الجهاز للتبديل إلى الشاشة الأمامية، يتم عادةً التبديل إلى صفحة التفاصيل. يجب أن يغطّي الاختبار الآلي عملية استعادة حالة واجهة المستخدم هذه، بما في ذلك حالة التنقّل.
لاختبار تغييرات الإعدادات التي تحدث على الأجهزة عند الانتقال من شاشة إلى أخرى أو عند تفعيل وضع النوافذ المتعددة، تتوفّر لك عدة خيارات:
- باستخدام أي جهاز، غيِّر حجم الشاشة أثناء الاختبار. في معظم الحالات، يؤدي ذلك إلى تشغيل جميع آليات استعادة الحالة التي تحتاج إلى التحقّق منها. ومع ذلك، لن تعمل هذه الاختبارات مع المنطق الذي يرصد أوضاعًا محدّدة في الأجهزة القابلة للطي، لأنّ تغييرات الوضع لا تؤدي إلى تغيير في الإعدادات.
- استخدِم جهازًا أو محاكيًا يتوافق مع الميزات التي تريد اختبارها، ثم فعِّل تغييرات الإعدادات ذات الصلة. على سبيل المثال، يمكن التحكّم في جهاز قابل للطي أو جهاز لوحي باستخدام Espresso Device للانتقال من الوضع المطوي إلى الوضع المفتوح بشكل مسطّح في الوضع الأفقي. يمكنك الاطّلاع على أمثلة في قسم جهاز Espresso ضمن المكتبات والأدوات لاختبار أحجام الشاشات المختلفة.
أنواع الاختبارات لأحجام الشاشات والنوافذ المختلفة
استخدِم نوع الاختبار المناسب لكل حالة استخدام للتأكّد من أنّ الاختبار يعمل بشكل صحيح على مختلف أشكال الأجهزة:
تُشغّل اختبارات سلوك واجهة المستخدم جزءًا من واجهة مستخدم التطبيق، مثل عرض نشاط. تتحقّق الاختبارات من توفّر عناصر معيّنة أو من أنّها تتضمّن سمات محدّدة . يمكن أن تنفّذ الاختبارات اختياريًا إجراءات محاكاة للمستخدم. بالنسبة إلى طرق العرض، استخدِم Espresso. يحتوي Jetpack Compose على واجهات برمجة تطبيقات خاصة بالاختبار. يمكن أن تكون اختبارات سلوك واجهة المستخدم مزوّدة بأدوات أو محلية. يتم تشغيل الاختبارات المبرمَجة على الأجهزة أو المحاكيات، بينما يتم تشغيل اختبارات واجهة المستخدم المحلية على Robolectric في آلة جافا الافتراضية (JVM).
استخدِم اختبارات سلوك واجهة المستخدم للتأكّد من أنّ تنفيذ التطبيق لوظيفة التنقّل صحيح. تنفِّذ الاختبارات إجراءات، مثل النقرات والتمريرات السريعة. تتحقّق اختبارات سلوك واجهة المستخدم أيضًا من توفّر عناصر أو سمات معيّنة. لمزيد من المعلومات، راجِع مقالة أتمتة اختبارات واجهة المستخدم.
تأخذ اختبارات لقطات الشاشة لقطة شاشة لواجهة مستخدم أو مكوّن وتُجري مقارنة بين الصورة ولقطة شاشة تمت الموافقة عليها سابقًا. وهذه طريقة فعّالة جدًا للحماية من التراجع في الأداء، إذ يمكن أن تغطي لقطة شاشة واحدة عددًا كبيرًا من العناصر وخصائصها المرئية. يمكنك إجراء اختبارات لقطات الشاشة على JVM أو على الأجهزة. تتوفّر العديد من أُطر اختبار لقطات الشاشة. لمزيد من المعلومات، يُرجى الاطّلاع على اختبارات لقطات الشاشة.
أخيرًا، قد تحتاج إلى اختبارات الوحدات لاختبار وظائف وحدات المنطق التي تتصرف بشكل مختلف حسب نوع الجهاز أو حجم النافذة، ولكن اختبارات الوحدات أقل شيوعًا في هذا المجال.
الخطوات التالية
لمزيد من المعلومات حول كيفية تنفيذ عمليات التحقّق الواردة في هذا المستند، يُرجى الاطّلاع على المكتبات والأدوات.