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

يوضّح هذا الدليل كيفية إجراء اختبار XCTest أو اختبار حلقة ألعاب باستخدام واجهة سطر الأوامر gcloud.

الخطوة 1: ضبط بيئة Google Cloud SDK المحلية

  1. تنزيل Google Cloud SDK
  2. ويشمل ذلك أداة gcloud CLI.

  3. تأكَّد من أنّ عملية التثبيت محدَّثة وتتضمّن الأمر gcloud firebase:
          gcloud components update
  4. سجِّل الدخول إلى gcloud CLI باستخدام حسابك على Google:
          gcloud auth login
  5. اضبط مشروعك على Firebase في gcloud، حيث PROJECT_ID هو رقم تعريف مشروعك على Firebase:
         gcloud config set project PROJECT_ID

الخطوة 2: إجراء الاختبار

تشغيل اختبار XCTest

  1. حمِّل ملف ZIP الخاص بالاختبار عن طريق تنفيذ الأمر التالي (إذا لم تكن قد حزمت تطبيقك بعد، راجِع تجميع XCTest):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. اختَر سمات الاختبار.

    تتيح لك Test Lab إجراء اختبارات على مجموعة متنوعة من إصدارات iOS والأجهزة واتجاهات الشاشة واللغات. تُعرف هذه الإعدادات باسم سمات الاختبار. للاطّلاع على خيارات كل سمة (مثل إصدارات Xcode المتوافقة مع إصدار iOS على الجهاز)، استبدِل models أو versions أو locales بـ dimension في الأمر التالي:

    gcloud firebase test ios dimension list

    يكون اتجاه الشاشة أبسط إلى حد ما، لأنّ خياراته الوحيدة هي portrait وlandscape.

    راجِع قائمة سمات الاختبار، واختَر بعض المجموعات التي تريد إجراء الاختبار عليها. انتقِل إلى خطط الأسعار للاطّلاع على الحد الأقصى لعدد المجموعات التي يمكنك عرضها في اليوم.

  3. بعد اختيار مجموعة من سمات الاختبار، يمكنك أن تطلب من Test Lab تنفيذ اختباراتك باستخدام الأمر firebase test ios run. لكل مجموعة من سمات الاختبار التي تريد إجراء الاختبار عليها، أدرِج علامة --device منفصلة:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    من المحتمل أن يتعذّر إجراء الاختبار بسبب عدم التوافق بين إصدار Xcode الذي تم إنشاء الاختبار باستخدامه وإصدار Xcode التلقائي الذي يستخدمه Test Lab. لتحديد إصدار Xcode متوافق لاختبارك، استخدِم العلامة --xcode-version:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    للمساعدة في تحديد مواقع مصفوفات الاختبار في وحدة تحكّم Firebase، يمكنك اختياريًا تصنيف مصفوفة الاختبار باستخدام العلامة --client-details matrixLabel="<label>" في المثال التالي:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

اختبار الأذونات الخاصة

لاختبار الأذونات التي تتطلّب رقم تعريف تطبيق صريحًا، يمكنك إجراء ذلك من خلال ضبط العلامة --test-special-entitlements. Test Lab تعيد توقيع التطبيق باستخدام معرّف حزمة جديد لتوفير الأذونات الخاصة، لذا تأكَّد من عدم وجود موارد في ملف ZIP تحتوي على مراجع مباشرة إلى معرّف حزمة التطبيق.

الأذونات المتاحة:
  1. الإشعارات الفورية apns-environment
  2. شبكة VPN شخصية com.apple.developer.networking.vpn.api
الإشعارات الفورية

للسماح بطلبات الإشعارات الفورية، يمكن للمستخدمين إنشاء رموز JSON المميّزة للويب باستخدام مفتاح التوقيع الخاص مع معرّف المفتاح C7FD9DJAA8 ومعرّف الفريق 9CKCGNNUQN. ستكون الرموز المميزة التي تم إنشاؤها صالحة لمدة ساعة واحدة، ويجب إعادة تحميلها كل 60 دقيقة. يمكنك الاطّلاع على مزيد من المعلومات حول إنشاء اتصال مستند إلى الرمز المميز بخدمة APNs.

مجموعات التطبيقات

تكون أرقام تعريف مجموعات التطبيقات فريدة على مستوى العالم. وهذا يعني أنّه عند إعادة توقيع تطبيقات المستخدمين، لا يمكننا استخدام سوى معرّف مجموعة التطبيقات المرتبط بحساب المطوّر Test Lab. إذا كان الاختبار يعتمد على مجموعات التطبيقات، سيتعذّر إجراء الاختبار.

إجراء اختبار "حلقة الألعاب"

نفِّذ الأمر gcloud beta firebase test ios run واستخدِم العلامات التالية لضبط عملية التنفيذ:

علامات اختبارات "حلقة الألعاب"
--type

مطلوبة: تحدّد نوع اختبار iOS الذي تريد تنفيذه. يمكنك إدخال أنواع الاختبارات xctest (القيمة التلقائية) أو game-loop.

--app

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

--scenario-numbers

حلقات الألعاب (المعروفة أيضًا باسم السيناريوهات) التي تريد تشغيلها في تطبيقك. يمكنك إدخال حلقة واحدة أو قائمة بالحلقات أو نطاق من الحلقات. عدد مرات التكرار التلقائي هو 1.

على سبيل المثال، --scenario-numbers=1-3,5 يشغّل الحلقات 1 و2 و3 و5.

--device-model

الجهاز الفعلي الذي تريد إجراء الاختبار عليه (يمكنك الاطّلاع على الأجهزة المتاحة التي يمكنك استخدامها).

--timeout

الحدّ الأقصى للمدة التي تريد أن يستمرّ فيها اختبارك يمكنك إدخال عدد صحيح لتمثيل المدة بالثواني، أو عدد صحيح وتعداد لتمثيل المدة كوحدة زمنية أطول.

على سبيل المثال:

  • يؤدي الخيار --timeout=200 إلى إيقاف الاختبار عند تشغيله لمدة تصل إلى 200 ثانية.
  • يؤدي الخيار --timeout=1h إلى إنهاء الاختبار تلقائيًا بعد ساعة واحدة من تشغيله.

على سبيل المثال، ينفّذ الأمر التالي اختبار "حلقة الألعاب" الذي ينفّذ الحلقات 1 و4 و6 و7 و8 على هاتف iPhone 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

لمزيد من المعلومات عن gcloud CLI، يُرجى الاطّلاع على المستندات المرجعية.

الخطوة 3 (اختيارية): أتمتة الاختبارات المستقبلية التي تنشئها

إنشاء نصوص برمجية لأوامر gcloud باستخدام Test Lab

يمكنك استخدام نصوص shell البرمجية أو ملفات الدفعات لأتمتة أوامر اختبار تطبيقات الأجهزة الجوّالة التي كنت ستنفّذها باستخدام سطر أوامر gcloud. يعمل نموذج البرنامج النصي bash التالي على تشغيل XCTest بمهلة دقيقتَين، ويُبلغك إذا اكتملت عملية تشغيل الاختبار بنجاح:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

رموز الخروج من النص البرمجي

توفّر Test Lab عدة رموز خروج يمكنك استخدامها لفهم نتائج الاختبارات التي تجريها باستخدام البرامج النصية أو ملفات الدفعات بشكل أفضل.

رمز الخروج ملاحظات
0 تم اجتياز جميع عمليات تنفيذ الاختبار.
1 حدث خطأ عام. تشمل الأسباب المحتملة ما يلي: اسم ملف غير متوفّر أو حدوث خطأ في HTTP/الشبكة.
2 تم إنهاء الاختبار بسبب تقديم أوامر أو وسيطات غير معروفة.
10 لم يتم اجتياز حالة اختبار واحدة أو أكثر (فئات أو طرق فئات تم اختبارها) ضمن عملية تنفيذ اختبار.
15 تعذّر على Firebase Test Lab تحديد ما إذا كانت مصفوفة الاختبار قد اجتازت الاختبار أو فشلت فيه بسبب حدوث خطأ غير متوقّع.
19 ألغى المستخدم مصفوفة الاختبار.
20 حدث خطأ في البنية الأساسية للاختبار.

الخطوة 4: التحقيق في نتائج الاختبار

عند بدء الاختبار، ستتلقّى رابطًا يؤدي إلى صفحة نتائج الاختبار. قد تستغرق الاختبارات عدة دقائق لتنفيذها، وذلك حسب عدد الإعدادات المختلفة التي اخترتها ومدة المهلة المحدّدة لاختباراتك. بعد إجراء الاختبارات، يمكنك مراجعة نتائجها. اطّلِع على مقالة تحليل نتائج Firebase Test Lab لمعرفة المزيد عن كيفية تفسير نتائج الاختبار.

الخطوة التالية

اطّلِع على مستندات Google Cloud SDK لاستكشاف خيارات الاختبار التي تتوفّر لجميع المستخدمين أو في الإصدار التجريبي.