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

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

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

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

  3. تأكَّد من أنّ عملية التثبيت محدّثة وتتضمّن command 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

مطلوبة: المسار المطلق (GCS أو نظام الملفات) لملف 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، يُرجى الاطّلاع على المستندات المرجعية.

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

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

يمكنك استخدام نصوص Shell البرمجية أو ملفات المعالجة التسلسلية لتشغيل أوامر اختبار التطبيقات المتوافقة مع الأجهزة الجوّالة بشكل آلي، والتي كان من الممكن تنفيذها باستخدام سطر أوامر gcloud. يُجري نموذج ملف bash script هذا اختبار 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 لاستكشاف خيارات الاختبار التي تتوفّر بشكل عام أو في الإصدار التجريبي.