برمجة اختبارات واجهة المستخدم

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

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

تعمل اختبارات واجهة المستخدم على تشغيل تطبيق (أو جزء منه)، ثم تحاكي تفاعلات المستخدمين، ثم تتحقق من أنّ التطبيق قد استجاب بشكل مناسب. وهي اختبارات دمج يمكن أن تتراوح بين التحقّق من سلوك مكوّن صغير واختبار تنقّل كبير ينتقل عبر مسار مستخدم كامل. وهي مفيدة للتحقّق من التراجعات والتأكّد من التوافق مع مستويات واجهة برمجة التطبيقات المختلفة والأجهزة المختلفة.

إجراء اختبارات واجهة المستخدم

  • لتشغيل اختبارات واجهة المستخدم المزوّدة بأدوات قياس باستخدام "استوديو Android"، عليك تنفيذ رمز الاختبار في مجلد اختبار Android منفصل - src/androidTest/java. ينشئ مكوّن Android Gradle الإضافي تطبيقًا تجريبيًا استنادًا إلى رمز الاختبار، ثم يحمِّل التطبيق التجريبي على الجهاز نفسه الذي يعمل عليه التطبيق المستهدَف. في رمز الاختبار، يمكنك استخدام إطارات عمل اختبار واجهة المستخدم لمحاكاة تفاعلات المستخدمين على التطبيق المستهدَف، وذلك لتنفيذ مهام الاختبار التي تغطي سيناريوهات استخدام معيّنة.
  • يمكنك أيضًا استخدام Robolectric لتشغيل اختبارات واجهة المستخدم على آلة Java الافتراضية.

التصميم وإعداد الاختبار

يجب أن تسمح بنية تطبيقك للاختبارات باستبدال أجزاء منه لاختبار النُسخ المطابقة، ويجب استخدام مكتبات توفّر أدوات مساعدة في الاختبار. على سبيل المثال، يمكنك استبدال وحدة مستودع بيانات بنسخة منها في الذاكرة توفّر بيانات زائفة ومحدّدة للاختبار.

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

إنّ الأسلوب المُقترَح لاستبدال التبعيات هو إدخال الاعتمادية. يمكنك إنشاء نظامك الخاص يدويًا، ولكننا ننصحك باستخدام إطار عمل DI مثل Hilt لهذا الغرض.

لماذا يجب اختبار واجهات المستخدم تلقائيًا؟

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

يتيح لك اختبار واجهة المستخدم إجراء اختبار التوافق، ما يؤكّد سلوك التطبيق في سياقات مختلفة. قد تحتاج إلى إجراء اختبارات واجهة المستخدم على الأجهزة التي تختلف بالطُرق التالية:

  • مستوى واجهة برمجة التطبيقات: 21 و25 و30
  • اللغة: الإنجليزية والعربية والصينية
  • الاتجاه: عمودي وأفقي

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

أنواع اختبارات واجهة المستخدم

يتناول هذا القسم نوعَين من اختبارات واجهة المستخدم:

  • تُحلِّل اختبارات السلوك التسلسل الهرمي لواجهة المستخدم لإجراء تأكيدات بشأن خصائص عناصر واجهة المستخدم.
  • تلتقط اختبارات لقطات الشاشة لقطات شاشة لواجهة المستخدم وتقارنها بالصور التي تمت الموافقة عليها سابقًا.