الاختبار باستخدام واجهة سطر الأوامر في 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.

على سبيل المثال، يتم تشغيل الحلقات 1 و2 و3 و5 في --scenario-numbers=1-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 لاستكشاف خيارات الاختبار المتوفّرة بشكل عام أو في الإصدار التجريبي.