جاذبية الروبوت. تقارير إخبارية لأتمتة المحمول

تم نشر المقال نيابة عن Andrey Ivanov و Ekaterina Bateeva ، neifmetus

تعد أتمتة التطبيقات المحمولة مجالًا شابًا إلى حد ما: فهناك العديد من الأطر وتواجه العديد من المشاريع مشكلة اختيار "الأكثر سرعة واستقرار وسهولة الاستخدام". منذ حوالي عامين ، واجهنا أيضًا اختيار أداة أتمتة جديدة لاختبار تطبيقات Android.
كانت جميع الأدوات الشائعة تعتمد بطريقة ما على UIAutomator و Espresso ، لذلك قررنا اختبارها في شكلها النقي ومقارنتها بنفس Appium (الأكثر شعبية) و seeTest (المستخدم من قبل ، والأفضل بين الأدوات المدفوعة في ذلك الوقت).

من مزايا Appium ، يمكن التمييز بين API WebDriver المعتاد ، والقدرة على استخدام اللغات والمكتبات الأكثر شعبية. بالإضافة إلى ذلك ، يستخدم على نطاق واسع في العديد من الشركات ويسمح لك بكتابة اختبارات مباشرة لمنصات iOS و Android. وأخيراً ، هذا حل محاصر مجاني - ماذا يمكن أن يكون أفضل؟

لذلك اعتقدنا ، حتى وجدنا أوجه القصور التالية:
  • انخفاض الاستقرار من خادم Appium
  • لا يمكنك التفاعل مع الأساليب العامة للنشاط (في 2018 ، تحدث نيكولاي أبالوف من Badoo عن إنشاء باب خلفي في Appium في مقالته ، يمكنك أن تقرأ هنا )
  • أدنى بكثير في سرعة اختبارات اسبريسو

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

لذلك ، تم اختيار الإطار ، وظل للعثور على المكونات المتبقية:
  1. Runner - يجب السماح بإجراء الاختبارات بشكل متوازٍ وتكوين تجمعات الأجهزة
  2. المراسل - يجب تقديم تقرير مقروء يمكن استخدامه من قبل أي عضو في الفريق


الأدوات


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

الصورة

كانت تقارير الشوكة بعيدة عن المثالية ، ولم يفهم المستخدم النهائي ما كان يحدث في الاختبار فقط باسمه ، دون وجود حالة اختبار في متناول اليد. أردت أن يكون لديّ خطوات مع مرفقات الملفات التي تسمح لي بتنظيم التقرير. أسفر البحث عن مراسل لاختبارات الأجهزة عن 2 أنواع من الملاعق والخيار. تم تجاهل كلا الخيارين لأن مجموعة من لقطات الشاشة في حالة الملعقة و bdd من الخيار لم تحل المشكلة تمامًا ...

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

ولكن كان هناك تحذير واحد ، ألور ببساطة لا يبدأ على أندرويد.

جاذبية الروبوت


فيما يتعلق بما سبق ، فقد تقرر كتابة مكتبة تجمع بين بساطة وأناقة Kotlin ، ومزايا إطار Allure ويمكن أن تعمل على هواتف Android. لتوصيل المكتبة ، أضف تبعيات إلى الوحدة التي توجد بها اختبارات الأجهزة:
dependencies { androidTestImplementation "ru.tinkoff.allure:allure-android:$allureVersion@aar" androidTestImplementation "ru.tinkoff.allure:allure-common:$allureVersion" androidTestImplementation "ru.tinkoff.allure:allure-model:$allureVersion" } 


بعد إعداد التبعيات ، نحتاج إلى تسجيل AllureRunListener في الفصل المسؤول عن إجراء اختبارات android.

هناك ثلاث طرق للقيام بذلك:
  1. أضف إلى build.gradle
     testInstrumentationRunner "ru.tinkoff.allure.android.AllureAndroidRunner" 
  2. إضافة مستمع إلى الوسائط في Runner onCreate (الوسائط: Bundle)
     arguments.putCharSequence("listener", AllureAndroidListener::class.java.name) 
  3. ورثت مباشرة من AllureAndroidRunner


تعتمد تقارير Allure على الخطوة - خطوة ، إجراء ذري يتم إجراؤه أثناء الاختبار. تم استبدال التعليقات التوضيحية لإطار Step و Parameter باستدعاء مباشر للدالة step ().
 inline fun <T : Any?> step(description: String, vararg params: Parameter, block: () -> T): T 

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

بعد بدء الاختبار ، ستظهر التقارير بتنسيق json المعد لـ Allure2 على الهاتف في مجلد / sdcard / allure-results. بعد أن انسحبت النتيجة ، الفريق
 adb pull /sdcard/allure-results 

يمكننا توليد تقرير
 allure generate 


من الميزات الإضافية ، يمكننا التمييز بين:
  • القدرة على الاستثمار خطوات في بعضها البعض
  • في أي مكان ، يمكنك الاتصال بـ deviceScreenshot (علامة: سلسلة) لالتقاط لقطة شاشة سيتم إرفاقها تلقائيًا بالتقرير في الخطوة الحالية
  • سوف FailshotRule () - junit4 القاعدة ، تأخذ لقطة للشاشة قبل السقوط


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

Source: https://habr.com/ru/post/ar433756/


All Articles