أريد أن أخبركم اليوم عن أداة جديدة مفتوحة المصدر للاختبار الآلي تسمى Airtest . في المستقبل ، سأقدم بعض المقالات الإضافية مع قصة مفصلة حول العناصر الفردية في مجموعة الأدوات هذه وكيفية العمل معها ، والآن لدي هدف تقديمك إليها وإعطاء فكرة عامة عنها.
هذا هو أول ثلاثة مقالات. يصف الجزء الثاني إطار التعرف على الصور (التعرف على الصورة) - AirTest ، ويخصص الجزء الثالث والأخير لبوكو - إطار أتمتة واجهة المستخدم عن طريق كتابة التعليمات البرمجية .
تم تطوير AirTest IDE بواسطة NetEase وهو مخصص للتطبيقات "يصعب أتمتة" ، مثل الألعاب على سبيل المثال. في الواقع هم محور التركيز الرئيسي للمطورين ، على الرغم من أن هذا لا يتوقف عن استخدام AirTest لأي تطبيقات أخرى.
يعمل AirTest IDE على أنظمة تشغيل Windows و MacOS X و Linux ويحتوي على إطارين: AirTest و Poco. تم تقديم هذا التطور بواسطة Xin Liu في Android Developer Developer Summit 2018 . يستخدم Python 2.7 و Python 3.3+ لكتابة الاختبارات. من بين الأشياء المهمة مثل دعم إجراء الاختبارات فورًا على عدد كبير من الأجهزة ورمز المصدر المفتوح والتطبيق المجاني ، فضلاً عن الاختبارات المكتوبة السهلة - هذه هي المزايا التي يسلط عليها المطورون الضوء. يمكن استخدام التطبيق على كل من Windows و MacOS ويسمح لك بأتمتة التطبيقات من نظام التشغيل التالي: Windows ، iOS ، Android.
يحتوي مشروع AirTest على GitHub على 4 مشاريع: Airtest ، Poco ، iOS-Tangent ، عداء متعدد الأجهزة .
تجدر الإشارة إلى أن NetEase توفر مزرعة الأجهزة المادية الخاصة بها للاختبار الآلي الذي يسمى AirLab .

باختصار حول الأطر.
Airtest عبارة عن إطار عمل متعدد المنصات للتعرف على الصور للألعاب والتطبيقات المحمولة استنادًا إلى دعم الصور . يسمح لك AirTest IDE بالتفاعل مع التطبيق باستخدام الأوامر التالية:
المس ، الانتظار ، التمرير ، موجود ، النص ، المفتاح الأساسي ، اللقطة ، النوم ، assert_exists ، assert_not_exists ، assert_equal ، assert_not_equal. سأتحدث عن ميزات ومعلمات الأوامر في مقالة منفصلة مكرسة لدراسة أكثر تفصيلًا لإطارات AirTest و Poco. تجدر الإشارة الآن إلى أن أمر keyevent مسؤول عن "الضغط على الأزرار الفعلية" للجهاز ، مثل الصفحة الرئيسية ، والطاقة ، والقائمة ، والعودة. عند استخدام معظم الأوامر ، يُطلب من المستخدم تمييز جزء من شاشة جهاز العمل ، وسيتم استخدام لقطة شاشة للأمر المقابل (اللمس ، التمرير السريع ، التأكيد ، إلخ).

مزايا Airtest التي يمكنني تسليط الضوء عليها بعد العمل:
- كتابة التعليمات البرمجية سريعة وواضحة. كل شيء يتم تنفيذه ، في الممارسة العملية ، في الوضع التلقائي ، ما عليك سوى اختيار المعلمات الضرورية ، وضبط التوقيت وتوخي الحذر عند اختيار الصورة.
- التعريف الدقيق للصورة ، والذي يتم استخدامه في الكود ، على جهاز العمل النشط. بالإضافة إلى ذلك ، يشير التقرير إلى النسبة المئوية للمصادفة (مقارنة) للصورة المستخدمة في الرمز والصورة من شاشة جهاز العمل.
- الحديث عن التقارير. بعد كل عملية إطلاق ، يمكنك إنشاء تقرير باستخدام اختصار لوحة المفاتيح Ctrl \ Cmd + L. يوفر تقرير مناسب معلومات مثل: أنواع التأكيد على نتائجها ، وكذلك كل خطوة اختبار يتم تمييزها في قسم فرعي منفصل يتضمن معلومات حول مكان النقر على AirTest ، حيث يتوقع صورة ، ونسبة مطابقة الصور ، إلخ.
- بمجرد كتابة الرمز ، يمكنك استخدامه على أي جهاز.
- تعدد مؤشرات الترابط: قم بتوصيل أجهزة اختبار متعددة وتشغيلها بشكل متوازٍ.
سلبيات Airtest ، والتي يمكنني تسليط الضوء بعد العمل:
- إذا كانت هناك في العملية عناصر تبدو متماثلة بصريًا ، على سبيل المثال المتزلجون ، الأزرار ، وما إلى ذلك ، فعندما يكون هناك احتمال كبير فإن AirTest لن تفهم أي عنصر تحكم تريد استخدامه. سيتم الإشارة إلى ذلك في الخطأ المقابل. ولكن يتم الاستغناء عن هذا الطرح بسهولة باستخدام الإطار الثاني (Poco) ، والذي سيتم مناقشته أدناه.
- تتم مقارنة الصور (من الكود والصور الفعلية على الشاشة) بالأبيض والأسود. يجدر التفكير فيما إذا كنت مهمًا ، على سبيل المثال ، المظهر المرئي للشخصية (لونه ، ملابسه المختلفة ، إلخ). إذا كانت الأحرف مختلفة بصريًا ، لكن يتم عرضها على الشاشة بالطريقة نفسها (علامة واحدة ، وما إلى ذلك) ، فمن المرجح أن تنجح عملية التحقق. تحتوي خيارات التعرف على الصور على علامة "rgb" التي يمكنك استخدامها ، لكنها لا تعمل بشكل جيد للغاية إذا كان لديك صورة صغيرة.
- لا يمكنك "تجميد" الشاشة أثناء استخدام التطبيق لالتقاط لقطات الشاشة التي تحتاجها بدقة. من وقت لآخر تحتاج إلى "التقاط" الإطار الذي تحتاجه.
- لأن في النسخة التجريبية المفتوحة ، قد تواجه العديد من الأخطاء المزعجة أو عدم الدقة ، على سبيل المثال ، عدم القدرة على تغيير حجم نافذة باستخدام تطبيق مضمن على Windows. يقوم المؤلفون الآن بتحديث AirTest IDE مرة واحدة كل بضعة أشهر ، وآمل أن يتم حل هذه الإشارات قريبًا.
Poco هو إطار عالمي لأتمتة واجهة المستخدم (UI) ، والتي توفر واجهات برمجة تطبيقات قوية مستقلة عن محرك (اللعبة). تلك ، بدورها ، استرداد التسلسل الهرمي لعناصر واجهة المستخدم في وقت التشغيل. بفضل هذا ، يمكن للمستخدم "الوصول" إلى التسلسل الهرمي للعنصر بأكمله على الصفحة الحالية ببضع نقرات للعنصر الذي يحتاجه ، إلخ. كما يتيح لك هذا الإطار "تجميد" الشاشة الحالية لكتابة التعليمات البرمجية استنادًا إلى التسلسل الهرمي لعناصر النافذة الحالية. تم تصميم Poco لمساعدة AirTest على فهم نوع عنصر واجهة المستخدم الذي تتحدث عنه الاختبارات ، ولكن لا أحد يزعجك لكتابة جميع الاختبارات باستخدام هذا الإطار فقط.
تتم كتابة جميع الاختبارات في بيثون. يمكن العثور على تطبيقات الأوامر في واجهات برمجة التطبيقات المناظرة: airtest.core.api module ، airtest.core.android package ، airtest.core.ios package ، airtest.core.win package

مزايا Poco التي يمكنني تسليط الضوء عليها بعد العمل:
- هناك دعم لعدد من محركات الألعاب المهمة ، بما في ذلك Unity3D و cocos2dx-js و cocos2dx-lua ومحركات NetEase الداخلية بالإضافة إلى دعم تطبيقات Android / iOS الأصلية. إذا كنت تريد استخدام محرك غير مدرج في قائمة المحركات "المدعومة" ، فيمكنك كتابة محركك باتباع الإرشادات المناسبة . في الوثائق الرسمية هناك إشارة إلى محرك غير واقعي ، ولكن حتى الآن ، كل شيء يقتصر على عبارة "يطرح قريباً".
- إرجاع التسلسل الهرمي لعناصر واجهة المستخدم على الشاشة في الوقت الحقيقي.
- بداية سريعة وتشغيل الاختبارات.
- كما هو الحال في AirTest ، كتبت الرمز مرة واحدة - استخدمه في كل مكان. بيثون 2.7 و 3.3+ الدعم
- من الممكن توصيل أي مكتبات خارجية بمشروعك
- بناءً على الوثائق ، هناك دعم لأجهزة استشعار GPS وأجهزة التسارع والدوران ، فضلاً عن دعم أوضاع العرض الرأسي والأفقي.
سلبيات Poco التي يمكنني تسليط الضوء عليها بعد العمل:
- أثناء العمل على Windows 7 لم أجد مشاكل أساسية. التي قد تتداخل مع العمل الكامل ، لكنها ، في الوقت الحالي ، تكون عند العمل مع Windows 10. الشيء الرئيسي هو حركة الأشياء غير الصحيحة (أمر انتقاد) في بعض الحالات. على سبيل المثال ، أشير إلى الكائن المطلوب نقله وإحداثيات الكائن الثاني ، وهي النقطة الأخيرة. في هذه الحالات النادرة ، يفتقد Poco الموقع النهائي ، لكن التقارير تُظهر بيانات الإزاحة الصحيحة (الموجه) وتعتبر الخطوة ناجحة.
- عند تحديد بعض العناصر ذات التنسيقات الكبيرة (تخطيط) ، قد يتداخل التحديد مع نافذة مساعد Poco ولن تتمكن من تحديد عناصر أخرى حتى تتم إزالة التحديد من العنصر الحالي. لإزالة التحديد ، يمكنك استخدام اختصار لوحة المفاتيح Alt + F4
لإكمال الصورة ، تجدر الإشارة إلى أن Airtest IDE لديه مكون إضافي من السيلينيوم الخاص به ، يمكنك من خلاله أتمتة مشروع الويب الخاص بك ، ولكن باستخدام متصفح Chrome فقط. الباقي ، في الوقت الحالي ، غير مدعوم. أنا شخصياً لم أعمل معه حتى الآن ، لذا لا أستطيع أن أقول عن عمله ، لكن كان من المستحيل تفويته في هذا الوصف الموجز.

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