اختبار واجهة مستخدم Android و iOS باستخدام Calabash

نشرت: 2022-03-11

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

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

اختبار قبول Calabash لنظامي Android و iOS

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

ما هو اختبار واجهة المستخدم كل شيء؟

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

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

تقول "هذا يبدو رائعًا" ، ولكن كيف تفعل ذلك لتطبيق Android أو iOS؟

أطر عمل اختبار واجهة المستخدم لنظامي Android و iOS

إذا قرأت الوثائق الرسمية لنظامي التشغيل Android و iOS ، فإنهم يقترحون عليك كتابة اختبارات واجهة المستخدم وتشغيلها في IDEs الرسمية الخاصة بهم. بالنسبة لنظام Android ، إنه Android Studio ، وبالنسبة لنظام iOS ، فهو Xcode.

تذهب الوثائق الرسمية إلى حد التوصية بأطر محددة للاختبار. تغطي وثائق Android الرسمية بعض الموضوعات حول Espresso ، إطار اختبار Android UI. وبالمثل ، تقترح Apple استخدام إطار عمل XCTest.

وإذا كنت ستعمل بجدية على اختبارات واجهة المستخدم ، فقد تتبع هذه الاقتراحات ، وهو أمر منطقي نظرًا لأن Espresso تحتفظ به Google وهي جزء من مستودع دعم Android. من المحتمل جدًا أن تدعم Espresso جميع الميزات الجديدة التي ستقدمها Google لنظام Android في المستقبل. يمكنك قول الشيء نفسه عن إطار عمل XCTest لنظام iOS.

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

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

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

عندما ينمو التطبيق ، يصبح "لمس هذه الأزرار" يدويًا يستغرق وقتًا طويلاً في كل مرة تقوم فيها بتحديث التطبيق.

ولكن ماذا لو كان هناك إطار عمل جعل اختبار واجهة المستخدم أسهل ، ولم يمنحك أي عذر لعدم كتابة اختبارات واجهة المستخدم لتطبيقاتك؟

قابل كالاباش.

كالاباش: اختبار القبول الآلي لتطبيقات الهاتف المحمول

منذ حوالي عام ، بدأت في البحث عن إطار عمل للاختبار سيكون سهل الاستخدام للأشخاص الذين ليسوا مطوري برامج. وهذا عندما وجدت كالاباش.

يعمل إطار اختبار المصدر المفتوح هذا ، الذي طوره فريق Xamarin وصيانته ، على كل من Android و iOS. يتيح لك كتابة وتنفيذ اختبارات القبول الآلية لتطبيقات الهاتف المحمول.

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

يمكن لـ Calabash التفاعل مع تطبيقك مثل Espresso أو XCTest. ومع ذلك ، فإن ما يجعل كالاباش اختيارًا ممتازًا هنا هو دعمه للخيار.

Cucumber هي أداة يمكنها إجراء اختبارات آلية مكتوبة بلغة إنجليزية بسيطة (إذا كنت ترغب في ذلك ، يمكنك تعديلها لاستخدام أي لغة أخرى بسيطة). لذلك لكتابة اختبارات آلية على Cucumber ، لا يحتاج المُختبِر إلى معرفة Java أو Objective-C أو أي لغة برمجة أخرى.

ما الذي يجعل علامة كالاباش؟

يتكون إطار عمل Calabash من مكتبات يمكنها التفاعل مع تطبيقات Android و iOS. يمكن تشغيله على أجهزة حقيقية. لذلك يمكنه القيام بالأشياء التي يقوم بها المختبِر يدويًا.

يوجد مشروعان مختلفان على جيثب يجعلان كالاباش ممكنًا:

  • كالاباش الروبوت - لالروبوت

  • calabash-ios - لنظام iOS

يمكن أن يعمل Calabash مع أي إطار اختبار قائم على Ruby. في هذه المقالة ، سنغطي الخيار - الطريقة الأكثر شيوعًا وملاءمة لكتابة اختبارات كالاباش.

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

بعد ذلك ، قم بتثبيت Calabash لمنصتك المفضلة باتباع روابط GitHub أعلاه.

كتابة أول اختبار لك على كالاباش

اختبارات الكتابة في كالاباش سهلة للغاية. دعونا نرى كيف يبدو اختبار بسيط لتطبيق iOS:

 Feature: User Login Scenario: Unsuccessful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "tstuser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Username you entered is incorrect" Scenario: Successful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "testeruser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Hey testeruser!"

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

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

أي شخص يعرف عن التنمية المدفوعة بالسلوك (BDD) سيجد نفسه بالفعل على دراية بهذا الأمر.

كيف يعمل كالاباش؟

لمعرفة ما يجري وراء الخطوات التي يستخدمها المختبِر ، يمكنك فتح المشروع على GitHub والتحقق من الملف التالي:

 calabash-cucumber/features/step_definitions/calabash_steps.rb

دعونا نرى تعريف الخطوة التالية:

 When I enter "testeruser" into the "Username" field
 Then /^I enter "([^\"]*)" into the "([^\"]*)" field$/ do |text_to_type, field_name| touch("textField marked: '#{field_name}'") wait_for_keyboard keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

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

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

كيفية إضافة خطوات مخصصة

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

على سبيل المثال ، إذا احتاج أحد المختبرين إلى الوصول إلى حقل الإدخال بواسطة عنصر نائب ، بدلاً من اسم الحقل:

 Then /^I enter "([^\"]*)" into the field with placeholder "([^\"]*)"$/ do |text_to_type, placeholder| touch("textField placeholder:'#{placeholder}'") wait_for_keyboard() keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

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

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

يمكنك العثور على وظائف Ruby التي يمكنك استخدامها هنا:

http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber

سحابة اختبار Xamarin

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

هذا هو المكان الذي يساعد فيه Xamarin Test Cloud كثيرًا. يوجد حوالي 2000 جهاز حقيقي في السحابة والخبر السار هو أنها تدعم اختبارات Calabash.

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

ابدأ في كتابة اختبارات واجهة المستخدم

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