Android دليل اختبار التطبيقات باستخدام إطار عمل الأتمتة

⚡ ملخص ذكي

Android يقوم اختبار التطبيق بالتحقق من صحة الإصدار عبر بيئة أجهزة مجزأة، حيث يجمع بين عمليات التحقق من الوحدة والتكامل والتشغيل والنظام مع أطر التشغيل الآلي التي تعمل إما على الجهاز أو مباشرة على JVM.

  • 🔘 لماذا يهم: Android يعمل على عدد لا يحصى من تركيبات الأجهزة والإصدارات، لذا فإن عيوب التوافق شبه مؤكدة.
  • ☑️ أربعة مستويات اختبار: يكشف كل من اختبار الوحدة والتكامل والتشغيل والنظام عن فئة مختلفة من العيوب.
  • ✅ إطار عمل على الجهاز: استخدم Android يعتمد إطار الاختبار على JUnit والأجهزة.
  • 🧪 بديل JVM: ظلال روبوتية كهربائية Android يتم تشغيل الفئات بحيث تعمل المجموعات على JVM بدون جهاز أو محاكي.
  • 🛠️ مجموعة أدوات أوسع: Espresso، أداة أتمتة واجهة المستخدم و Appium توسيع نطاق التغطية ليشمل فئات أخرى غير الفئات المدمجة.
  • 📊 خرافات يجب تجنبها: إن استخدام برامج المحاكاة وحدها، أو عدد قليل من الهواتف، أو إجراء اختبارات استكشافية في اللحظة الأخيرة، يؤدي إلى ظهور عيوب في الإنتاج.

Android دليل تعليمي لاختبار التطبيقات يغطي مستويات الاختبار، وأطر الأتمتة، وتغطية الأجهزة

لماذا Android اختبارات؟

Android هو أكبر نظام تشغيل في العالم. وفي الوقت نفسه، Android مجزأ: هناك الكثير من الأجهزة و Android الإصدارات التي يجب أن يتوافق تطبيقك معها.

لا يهم مقدار الوقت الذي تستثمره في التصميم والتنفيذ، فالأخطاء حتمية، وستظهر الأخطاء.

Android استراتيجية الاختبار

صحيح Android ينبغي أن تتضمن استراتيجية الاختبار ما يلي

  1. اختبار الوحدة
  2. إختبار الإدماج
  3. Operaاختبار وطني
  4. اختبار النظام

اختبارات الوحدة

اختبارات الوحدة هي مجموعات من البرامج المصممة للتحقق من وحدة أساسية من التعليمات البرمجية المصدرية، مثل طريقة أو فئة.

استخدم Android تأتي المنصة مدمجة مسبقًا مع JUnit إطار عمل 3.0. وهو إطار عمل مفتوح المصدر لأتمتة وحدة التجاربويتيح ذلك للمطورين كتابة برامج اختبار الوحدات الفعالة.

إضافةً إلى اختبارات الوحدات، تُجرى اختبارات واجهة المستخدم. وهي تغطي مكونات واجهة المستخدم للتطبيق المستهدف وتضمن إرجاعه للمخرجات الصحيحة لتسلسل إجراءات المستخدم على الجهاز.

إجراءات واجهة المستخدم الشائعة على Android تطبيقات مثل النقر والكتابة والتمرير

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

⚠️ ملاحظة حول الإصدار: JUnit 3 فئات مثل InstrumentationTestCase تم إيقاف استخدامها في الإصدار 24 من واجهة برمجة التطبيقات؛ تستخدم المشاريع الحالية Androidاختبار X، Espresso و UI Automator. Robotium لم يصدر أي عمل منذ عام 2016.

اختبارات التكامل

In اختبار التكامليتم دمج جميع الوحدات التي تم اختبارها والتحقق منها. Android وهذا يعني في كثير من الأحيان التحقق من التكامل مع مكونات مثل اختبار الخدمة والنشاط وموفر المحتوى.

أنواع اختبارات التكامل Android يشمل ذلك اختبار مزودي الخدمات والأنشطة والمحتوى

تُستخدم العديد من أطر الاختبار لإجراء اختبارات التكامل لـ Androidمثل ترويد، وروبولكتريك، و Robotium.

Operaالاختبارات الوطنية

Operaالاختبارات الوطنية، والتي تسمى أيضًا الاختبارات الوظيفية أو اختبارات القبول، هي اختبارات عالية المستوى تتحقق من اكتمال وصحة التطبيق.

In Android, فيتنيس هو إطار عمل مفتوح المصدر يجعل إجراء الاختبارات التشغيلية على التطبيق المستهدف أمرًا سهلاً.

اختبارات النظام

In اختبار النظام يتم اختبار النظام ككل ويتم فحص التفاعل بين المكونات والبرامج والأجهزة.

In Android، يتضمن اختبار النظام عادةً

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

في القائمة أعلاه، اختبار أداء يتم إعطاء المزيد من التركيز. يمكنك استخدام أدوات مثل Tracمعاينة إجراء اختبارات الأداء على Androidيمكن لهذه الأداة مساعدتك في تصحيح أخطاء تطبيقك وتحليل أدائه. Tracتم إيقاف استخدام برنامج eview لصالح برنامج آخر ملف تعريف وحدة المعالجة المركزية.

الآلي Android الاختبار

As Android نظراً لتشتت النظام، فإن الاختبار على العديد من الأجهزة ضروري، وهذا يكلف مالاً. مؤتمت Android يساعد الاختبار على تقليل هذه التكاليف.

فوائد الأتمتة Android تجريب

  • تقليل الوقت اللازم لتنفيذ حالات الاختبار
  • زيادة إنتاجية عملية التطوير الخاصة بك
  • الكشف المبكر عن الأخطاء، وتوفير تكلفة صيانة البرامج
  • تم العثور بسرعة على الأخطاء وإصلاحها عند التنفيذ
  • التأكد من جودة البرمجيات

سنقوم بدراسة الإطارين التاليين

  • Android إطار الاختبار
  • إطار اختبار Robolectric

Android إطار الاختبار

أحد أطر الاختبار القياسية لـ Android التطبيقات هي Android إطار الاختبار. وهو متكامل بشكل جيد مع Android أدوات SDK، وهيكلها يتكون من ثلاثة أجزاء.

  1. حزمة التطبيق هي التطبيق المستهدف الذي يحتاج إلى الاختبار.
  2. InstrumentationTestRunner هو حالة الاختبار برنامج تشغيل يقوم بتنفيذ حالات الاختبار على التطبيق المستهدف. ويتضمن ما يلي:
    • أدوات الاختبار: أدوات SDK لبناء الاختبارات. يتم دمجها في بيئة التطوير المتكاملة أو تشغيلها من سطر الأوامر.
    • مونكي رانر: أداة توفر واجهات برمجة التطبيقات لكتابة البرامج التي تتحكم في Android جهاز أو محاكي خارج Android رمز.
  3. تُنظَّم حزمة الاختبار في مشاريع اختبارية وتتبع اصطلاح تسمية محدد. فإذا كان اسم حزمة التطبيق قيد الاختبار هو "com.mydomain.myapp"، فيجب أن يكون اسم حزمة الاختبار "com.mydomain.myapp.test". تتضمن حزمة الاختبار عنصرين:
    • فئات حالات الاختبار: تتضمن طرق الاختبار التي سيتم تنفيذها على التطبيق المستهدف.
    • كائنات وهمية: قم بتضمين بيانات وهمية سيتم استخدامها كمدخلات نموذجية لحالات الاختبار.

Android فئات حالة الاختبار

Androidمخطط فئة TestCase الذي يوضح JUnit وتسلسل حالات اختبار الأجهزة

  1. تتضمن حالة الاختبار JUnit طرق للتشغيل JUnit تجربه بالعربي
  2. تُستخدم مجموعة الاختبارات لتشغيل مجموعة من حالات الاختبار
  3. InstrumentationTestSuite عبارة عن مجموعة اختبار تقوم بحقن أدوات القياس في InstrumentationTestCase قبل تشغيلها.
  4. يقوم برنامج InstrumentationTestRunner بتشغيل حالات الاختبار على التطبيق المستهدف.
  5. AndroidTestCase يمتد JUnit حالة اختبار تتضمن طرقًا للوصول إلى موارد مثل سياق النشاط.
  6. تتحقق حالة اختبار التطبيق من فئات التطبيق في بيئة خاضعة للتحكم.
  7. يتحقق InstrumentationTestCase من ميزة أو سلوك معين، على سبيل المثال مخرجات واجهة المستخدم للتطبيق.
  8. ActivityTestCase هي فئة أساسية تدعم اختبار أنشطة التطبيق.
  9. ProviderTestCase هي فئة لاختبار موفر محتوى واحد.
  10. يقوم ServiceTestCase باختبار فئات الخدمة في بيئة اختبار ويدعم دورة حياة الخدمة.
  11. تُستخدم SingleLaunchActivityTestCase لاختبار نشاط واحد باستخدام InstrumentationTestcase.
  12. حالة اختبار الوحدة للنشاط يُستخدم لاختبار نشاط معزول واحد.
  13. ActivityInstrumentationTestCase2 يمتد JUnit فئة TestCase تربطك بالتطبيق المستهدف باستخدام أدوات القياس، بحيث يمكنك الوصول إلى مكونات واجهة المستخدم الرسومية وإرسال أحداث واجهة المستخدم مثل ضغطات المفاتيح أو اللمسات.

فيما يلي مثال على حالة اختبار أدوات النشاط. تتحقق هذه الحالة من عمل واجهة المستخدم لتطبيق الآلة الحاسبة وتتحقق من صحة مخرجات واجهة المستخدم.

مثال ActivityInstrumentationTestCase2 للتحقق من مخرجات واجهة المستخدم الخاصة بالآلة الحاسبة Android

إطار الاختبار الروبوتي

الاختبار باستخدام Android يُعدّ اختبار إطار العمل باستخدام جهاز أو محاكي أمرًا صعبًا. فعملية بناء الاختبارات وتشغيلها بطيئة وتتطلب جهدًا كبيرًا من المطورين. ولحل هذه المشكلة، يوجد خيار آخر: إطار عمل Robolectric للاختبار.

تتيح لك روبوليكتريك تشغيل Android يتم إجراء الاختبارات مباشرة على JVM دون الحاجة إلى جهاز أو محاكي.

فئات حالات اختبار robolectric

يمكن لروبولكتريك القيام بالإجراءات التالية:

  • قم بالتسجيل وإنشاء فئة الظل
  • اعتراض التحميل Android فئة
  • استخدام Javaالمساعدة في تجاوز أجسام الأساليب الخاصة بـ Android فئة
  • ربط كائن الظل به Android فئة

يسمح هذا بتنفيذ الكود قيد الاختبار دون الحاجة إلى Android بيئة.

أطر اختبار أخرى

إلى جانب أطر الاختبار المذكورة أعلاه، هناك العديد من الأطر الأخرى، مثل:

أساطير Android الاختبار

تتطور العديد من المؤسسات Android الاختبار استراتيجيات مبنية على مفاهيم خاطئة شائعة. يتناول هذا القسم بعض الأساطير والحقائق الشائعة حول Android الاختبار.

الخرافة رقم 1: الكل Android الأجهزة متطابقة، لذا فإن الاختبار على المحاكيات يكفي

قد يعمل التطبيق بشكل مثالي على المحاكيات، ولكنه قد يتعطل أثناء التشغيل على بعض الأجهزة الحقيقية.

Android مربع حوار تعطل التطبيق يظهر أثناء التشغيل على جهاز حقيقي

لا تكفي المحاكيات لاختبار تطبيقك على الأجهزة المحمولة. يجب عليك اختبار تطبيقك على أجهزة حقيقية.

الخرافة رقم 2: يكفي إجراء الاختبار على بعض الأجهزة الشائعة

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

الخرافة رقم 3: يكفي إجراء اختبارات استكشافية قبل الإطلاق مباشرة

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

الخرافة الرابعة: إذا كانت هناك بعض الأخطاء في التطبيق، فسيتفهم المستخدمون ذلك.

  • إذا كان التطبيق لا يعمل وبه أخطاء، فسيقوم المستخدمون بإلغاء تثبيته.
  • تُعد مشاكل الجودة السبب الرئيسي للتقييمات السيئة في Google اللعب، والإضرار بسمعتك، وفقدان ثقة العملاء.

لذلك من الضروري أن يكون لديك نظام مناسب Android تم وضع استراتيجية اختبار.

أفضل الممارسات في Android الاختبار

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

الأسئلة الشائعة

لا. تستخدم المشاريع الحديثة Androidاختبار X مع JUnit و4 AndroidJUnitالعداء. الـ JUnit تم إيقاف استخدام 3 فئات من حالات الاختبار الموضحة هنا في API 24، وهي لا تزال موجودة فقط للمجموعات القديمة.

يقوم التعلم الآلي بإصلاح محددات المواقع بعد تغيير التخطيط، ويجمع تقارير الأعطال المتكررة وتقارير ANR، ويتنبأ بالاختبارات التي سيؤدي التغيير إلى فشلها بحيث يتم تشغيل مجموعة أقصر لكل عملية إيداع.

يقوم Copilot بكتابة أنماط onView و check الشائعة من سيناريو موصوف. لا يمكنه معرفة مُعرّفات العرض أو التوقيت، لذا قم بتشغيل كل اقتراح مرة واحدة واضبط المطابقات أولاً.

Espresso يتم اختبارها داخل تطبيقك الخاص، وهي سريعة ومستقرة. يتجاوز UI Automator حدود التطبيقات، لذا فهو مناسب للإشعارات والإعدادات ونوافذ النظام. تستخدم العديد من مجموعات البرامج كلا النوعين.

واجهة برمجة تطبيقات سيناريو النشاط في Androidاختبار X، عادةً باستخدام قاعدة سيناريو النشاط. ينقل النشاط عبر مراحل دورة الحياة المحددة دون توسيع فئة حالة اختبار مهملة.

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

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

Googleمجموعة مكتبات الاختبار الحالية. وهي تتضمن JUnit وامتدادات الحقيقة، سيناريو النشاط، Espresso و UI Automator خلف مجموعة تبعية واحدة تعمل على الأجهزة والمحاكيات و Robolectric.

تلخيص هذه التدوينة بـ: