كم هو Appium للناس

في هذه المقالة ، سنلقي نظرة على أداة Appium. هذه المقالة هي مقدمة لإدخال الاختبار الآلي لتطبيقات الهاتف المحمول. سيوضح الصعوبات التي قد تواجهها عند استخدام هذه الأداة.

ضع في اعتبارك مهمة صغيرة باستخدام مثال "الآلة الحاسبة" ، حاول كتابة اختبارات تلقائية لاختبارها و ... لنبدأ من البداية :)

المحتوى


  • ما هو Appium؟
  • الحد الأدنى الضروري.
  • بيان وحل المشكلة.
  • ملتزم :)

ما هو Appium؟


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

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

صورة

هناك العديد من الأدوات لكتابة الاختبارات التلقائية للأجهزة المحمولة. لحل المهام التي تم تعيينها قبلي ، اخترت Appium ، نظرًا لأنها مناسبة في الوقت نفسه لنظامي التشغيل Android و iOS ويمكنك كتابة الاختبارات الذاتية باستخدام جافا "المفضل لدى الجميع".

Appium هي أداة مجانية مفتوحة المصدر وعبر الأنظمة الأساسية تساعد على أتمتة التطبيقات لكل من Android و iOS. تتبع Appium نفس الأسلوب الذي يتبعه Selenium WebDriver ، الذي يتلقى طلبات JSON HTTP من العملاء ويحولها وفقًا للنظام الأساسي الذي يعمل عليه.

صورة

الحد الأدنى المطلوب


إذن ما الذي نحتاجه للعمل مع Appium؟

لإنشاء اختبارات لنظام Android ، يتم طرح المتطلبات التالية:

  • جافا (الإصدار> = 7)
  • Android SDK API (الإصدار> = 17)
  • جهاز Android الظاهري (AVD) / جهاز حقيقي
  • مدير التنفيذ المعجل لأجهزة Intel

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

بالنسبة لنظام iOS:

  • Mac OS X (الإصدار> = 10.7)
  • Xcode (الإصدار> = 5.1)
  • جافا (الإصدار> = 7)
  • البيرة
  • NodeJS
  • نبم

أوصي أيضًا بتثبيت appium-doctor من أجل تشخيص المشكلات المحتملة عند تثبيت المكونات الضرورية وتكوينها على كلا النظامين الأساسيين.

صورة

بيان وحل المشكلة


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

صورة

قم بتشغيل Appium.

صورة

بشكل افتراضي ، يكون Appium جاهزًا للاستماع إلى localhost باستخدام المنفذ 4723. هنا سنترك كل شيء دون تغيير ونبدأ الخادم.

صورة

الآن Appium جاهز لمعالجة طلباتنا.

يجب تشغيل الاختبار التلقائي المستقبلي لدينا إما على المحاكي أو على جهاز حقيقي. لتنوع هذه المقالة ، خذ بعين الاعتبار عمل الاختبار على المحاكي. لهذا نحن بحاجة إلى Android Studio. قم بتنزيله وتثبيته بنفسك. ثم افتح وانتقل إلى أدوات - AVD Manager.

صورة

صورة

صورة

صورة

صورة

صورة

الآن افتح الطرفية وقم بتشغيل أمر أجهزة adb. ستظهر قائمة الأجهزة المرفقة.

صورة

نرى أن قائمة الأجهزة فارغة ، لأنه لا يوجد محاكي قيد التشغيل ، ولا يوجد جهاز حقيقي متصل "بجهازنا".

قم بتشغيل جميع المحاكيات التي لدينا. في حالتي ، هذان محاكاة. قم بتشغيل أمر أجهزة adb مرة أخرى.

صورة

الآن لدينا قائمة غير فارغة تحتوي على معرف أجهزتنا المرفقة - المحاكيات والأجهزة ، إن وجدت.

بعد فرز المحاكي ، لنبدأ في كتابة الرمز. كما هو موضح أعلاه ، أستخدم Java في اختباراتي.

أولاً ، أنشئ نسخة من AndroidDriver. يتوقع مُنشئ هذه الفئة إدخال معلمتين:

صورة

الإمكانات المطلوبة - كائن JSON (مجموعة من أزواج قيمة المفتاح) التي يرسلها العميل إلى الخادم.

تصف القدرات المرغوبة ميزات الجلسة التي تم إنشاؤها (اسم الجهاز / المحاكي ، ونظام التشغيل (OS) ، وإصدار نظام التشغيل ، والتطبيق الذي تم تشغيله ، وما إلى ذلك).

مثال على

صورة

القدرات : نحن نصف قدراتنا وننشئ AndroidDriver.

صورة

deviceName هي معلمة مطلوبة ، ولكن لم يتم التحقق منها على Android. إذا تحدثنا عن iOS ، فعند تحديد الاسم ، يجب عليك استخدام أحد الأسماء المحجوزة (يوجد مثال لهذه الأسماء في التعليقات على الرمز). وصف المعلمات الأخرى معطى في الكود (انظر الصورة أعلاه) ، لكننا سنركز على بعضها.

udid هو معرّف فريد للجهاز. يمكننا الحصول على معرف الجهاز هذا باستخدام أمر أجهزة adb.

صورة

appPackage هو اسم حزمة Java لتطبيق Android الذي نريد تشغيله.

appActivities هو اسم الأنشطة التي نفتحها.

يمكن الحصول على appPackage و appActivities بطرق مختلفة ، ولكن أبسطها هو تثبيت تطبيق "معلومات APK" من Google Play.

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

صورة

وإليك جميع المعلومات التي نحتاجها.

صورة

صورة

شغلهم. بعد ذلك ، قم بإنشاء مثيل من AndroidDriver: تسجيل عنوان URL Appium وتمرير كائن القدرات كمعلمة ثانية.

صورة

سيقوم هذا الكود بتشغيل الآلة الحاسبة فقط على المحاكي. نحن بحاجة إلى معرفة كيفية إدارة عناصر الآلة الحاسبة بطريقة ما حتى نتمكن من كتابة اختبار بسيط. المبدأ مشابه هنا كما هو الحال في Selenium Web Driver. نحن بحاجة للوصول إلى العناصر من خلال أي محددات المواقع. سوف يساعدنا Appium Inspector في الحصول عليها. افتح Appium.

صورة

صورة

الآن يجب نقل جميع إمكاناتنا الموصوفة في الرمز إلى المفتش ، في علامة التبويب القدرات المطلوبة.

صورة

جلسة البداية.

صورة

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

صورة

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

صورة

للحصول على العنصر ، استخدم طريقة findElementById. يمكنك إنشاء مثيل لفئة MobileElement والعمل معه ، أو يمكنك إنشاء مثيل. هنا نحدد عناصر الأرقام 2 و + و 3. في النهاية ، أتوقع أن تكون النتيجة 5. في النهاية ، تكون النتيجة هي ما يلي:

صورة

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


ملتزم :)


صورة

في هذه المقالة أوضحت كيفية البدء بسرعة مع Appium وما هو مطلوب لذلك. كما لاحظت ، بدء كتابة اختبارات بسيطة ليس بالأمر الصعب. ثم يمكنك ربط التقرير بالمشروع ، على سبيل المثال ، Allure. لكن هذه قصة مختلفة تمامًا :)

ربما ستواجه مشاكل فردية عند تثبيت أدوات متنوعة ضرورية للعمل مع Appium. ولكن يتم حل جميع هذه المشاكل بسهولة من خلال بحث Google :)

لم يتم الكشف عن موضوع اختبار iOS ، لكنني أريد أن "أقول" ، أو بالأحرى اكتب بضع كلمات حوله.

من أجل تشغيل التطبيق من خلال Appium على iOS ، قضيت الكثير من الوقت في إعداد البيئة (xCode و Appium وشهادات المطور وما إلى ذلك). كان من الضروري فتح مشروع Appium من خلال xCode ، وتحديد شهادات المطورين والإعدادات الأخرى ، وتجميع المشروع ، وبعد ذلك فقط اتضح تنفيذ الأوامر من خلال Appium على أجهزة iOS. بعد كل تحديث من Appium ، يجب عليك تنفيذ هذا الإجراء. ربما سيكون كل شيء أسهل بكثير بالنسبة لك ، يجب أن تؤمن به. حتى الآن لم أجد حلاً آخر ، ربما يكون كذلك ، لكنه يناسبني حتى الآن.

أريد أن أشير مرة أخرى إلى أنه من الأفضل استخدام المعرفات عند الوصول إلى العناصر من xPath. حتى إذا كان العنصر لا يحتوي على معرف ، اطلب / اجب المطور على تحديد الهوية. سيؤدي ذلك إلى تسهيل حياتك وزيادة سرعة تنفيذ الاختبار.

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

هذا كل ما أردت أن أقوله!

PS Project on GitHub

PPS القليل من مجموعتي

الآن هذا كل شيء!

All Articles