REST Resource: projects.testMatrices

المصدر: TestMatrix

يلتقط TestMatrix جميع التفاصيل حول الاختبار. أنه يحتوي على تكوين البيئة، ومواصفات الاختبار، وعمليات تنفيذ الاختبار والحالة العامة والنتيجة.

تمثيل جيسون
{
  "testMatrixId": string,
  "projectId": string,
  "clientInfo": {
    object (ClientInfo)
  },
  "testSpecification": {
    object (TestSpecification)
  },
  "environmentMatrix": {
    object (EnvironmentMatrix)
  },
  "testExecutions": [
    {
      object (TestExecution)
    }
  ],
  "resultStorage": {
    object (ResultStorage)
  },
  "state": enum (TestState),
  "timestamp": string,
  "invalidMatrixDetails": enum (InvalidMatrixDetails),
  "flakyTestAttempts": integer,
  "outcomeSummary": enum (OutcomeSummary),
  "failFast": boolean
}
مجالات
testMatrixId

string

الإخراج فقط. معرف فريد تم تعيينه بواسطة الخدمة.

projectId

string

المشروع السحابي الذي يمتلك مصفوفة الاختبار.

clientInfo

object ( ClientInfo )

معلومات حول العميل الذي استدعى الاختبار.

testSpecification

object ( TestSpecification )

مطلوب. كيفية إجراء الاختبار.

environmentMatrix

object ( EnvironmentMatrix )

مطلوب. الأجهزة التي يتم تنفيذ الاختبارات عليها.

testExecutions[]

object ( TestExecution )

الإخراج فقط. قائمة عمليات تنفيذ الاختبار التي تنشئها الخدمة لهذه المصفوفة.

resultStorage

object ( ResultStorage )

مطلوب. حيث تتم كتابة نتائج المصفوفة.

state

enum ( TestState )

الإخراج فقط. يشير إلى التقدم الحالي لمصفوفة الاختبار.

timestamp

string ( Timestamp format)

الإخراج فقط. الوقت الذي تم فيه إنشاء مصفوفة الاختبار هذه في البداية.

طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانو ثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

invalidMatrixDetails

enum ( InvalidMatrixDetails )

الإخراج فقط. يصف سبب اعتبار المصفوفة غير صالحة. مفيد فقط للمصفوفات في الحالة غير الصالحة.

flakyTestAttempts

integer

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

الافتراضي هو 0، مما يعني عدم إعادة التشغيل.

outcomeSummary

enum ( OutcomeSummary )

الإخراج فقط. النتيجة الإجمالية للاختبار. يتم التعيين فقط عند انتهاء حالة مصفوفة الاختبار.

failFast

boolean

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

عادةً، يتم إجراء محاولتين أو أكثر في حالة اكتشاف مشكلة محتملة في البنية الأساسية.

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

معلومات العميل

معلومات حول العميل الذي استدعى الاختبار.

تمثيل جيسون
{
  "name": string,
  "clientInfoDetails": [
    {
      object (ClientInfoDetail)
    }
  ]
}
مجالات
name

string

مطلوب. اسم العميل، مثل gcloud.

clientInfoDetails[]

object ( ClientInfoDetail )

قائمة المعلومات التفصيلية عن العميل.

تفاصيل معلومات العميل

زوج من المعلومات التفصيلية ذات القيمة الرئيسية حول العميل الذي استدعى الاختبار. أمثلة: {'الإصدار'، '1.0'}، {'مسار الإصدار'، 'BETA'}.

تمثيل جيسون
{
  "key": string,
  "value": string
}
مجالات
key

string

مطلوب. مفتاح معلومات العميل التفصيلية.

value

string

مطلوب. قيمة المعلومات التفصيلية للعميل.

مواصفات الاختبار

وصف لكيفية إجراء الاختبار.

تمثيل جيسون
{
  "testTimeout": string,
  "disableVideoRecording": boolean,
  "disablePerformanceMetrics": boolean,

  // Union field setup can be only one of the following:
  "testSetup": {
    object (TestSetup)
  },
  "iosTestSetup": {
    object (IosTestSetup)
  }
  // End of list of possible types for union field setup.

  // Union field test can be only one of the following:
  "androidInstrumentationTest": {
    object (AndroidInstrumentationTest)
  },
  "androidRoboTest": {
    object (AndroidRoboTest)
  },
  "androidTestLoop": {
    object (AndroidTestLoop)
  },
  "iosXcTest": {
    object (IosXcTest)
  },
  "iosTestLoop": {
    object (IosTestLoop)
  }
  // End of list of possible types for union field test.
}
مجالات
testTimeout

string ( Duration format)

الحد الأقصى للوقت المسموح به لتنفيذ الاختبار قبل أن يتم إلغاؤه تلقائيًا. القيمة الافتراضية هي 5 دقائق.

مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' s '. مثال: "3.5s" .

disableVideoRecording

boolean

تعطيل تسجيل الفيديو. قد يقلل من زمن الوصول للاختبار.

disablePerformanceMetrics

boolean

تعطيل تسجيل مقاييس الأداء. قد يقلل من زمن الوصول للاختبار.

setup حقل الاتحاد. متطلبات إعداد الاختبار. يمكن أن يكون setup واحدًا فقط مما يلي:
testSetup

object ( TestSetup )

اختبار متطلبات الإعداد لنظام التشغيل Android، مثل الملفات المطلوب تثبيتها والبرامج النصية التمهيدية.

iosTestSetup

object ( IosTestSetup )

اختبار متطلبات الإعداد لنظام التشغيل iOS.

test ميداني للاتحاد . مطلوب. نوع الاختبار الذي سيتم إجراؤه. يمكن أن يكون test واحدًا مما يلي فقط:
androidInstrumentationTest

object ( AndroidInstrumentationTest )

اختبار أجهزة أندرويد.

androidRoboTest

object ( AndroidRoboTest )

اختبار الروبوت الروبوت.

androidTestLoop

object ( AndroidTestLoop )

تطبيق Android مع حلقة اختبار.

iosXcTest

object ( IosXcTest )

iOS XCTest، عبر ملف .xctestrun.

iosTestLoop

object ( IosTestLoop )

تطبيق iOS مع حلقة اختبار.

TestSetup

وصف لكيفية إعداد جهاز Android قبل إجراء الاختبار.

تمثيل جيسون
{
  "filesToPush": [
    {
      object (DeviceFile)
    }
  ],
  "directoriesToPull": [
    string
  ],
  "additionalApks": [
    {
      object (Apk)
    }
  ],
  "account": {
    object (Account)
  },
  "networkProfile": string,
  "environmentVariables": [
    {
      object (EnvironmentVariable)
    }
  ],
  "systrace": {
    object (SystraceSetup)
  },
  "dontAutograntPermissions": boolean
}
مجالات
filesToPush[]

object ( DeviceFile )

قائمة الملفات المطلوب دفعها إلى الجهاز قبل بدء الاختبار.

directoriesToPull[]

string

قائمة الأدلة الموجودة على الجهاز لتحميلها إلى GCS في نهاية الاختبار؛ يجب أن تكون مسارات مطلقة ضمن /sdcard أو /storage أو /data/local/tmp. تقتصر أسماء المسارات على الأحرف az AZ 0-9 _ - . + و /

ملاحظة: سيتم توفير المسارات /sdcard و/data ومعاملتها كبدائل مسار ضمنية. على سبيل المثال، إذا لم يتم تعيين /sdcard الموجود على جهاز معين إلى وحدة تخزين خارجية، فسيقوم النظام باستبداله ببادئة مسار التخزين الخارجي لذلك الجهاز.

additionalApks[]

object ( Apk )

ملفات APK التي سيتم تثبيتها بالإضافة إلى تلك التي يتم اختبارها مباشرة. الحد الأقصى حاليا هو 100.

account

object ( Account )

سيتم تسجيل دخول الجهاز على هذا الحساب طوال مدة الاختبار.

networkProfile

string

ملف تعريف حركة مرور الشبكة المستخدم لإجراء الاختبار. يمكن الاستعلام عن ملفات تعريف الشبكة المتوفرة باستخدام نوع البيئة NETWORK_CONFIGURATION عند استدعاء TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

environmentVariables[]

object ( EnvironmentVariable )

متغيرات البيئة التي سيتم تعيينها للاختبار (تنطبق فقط على اختبارات الأجهزة).

systrace
(deprecated)

object ( SystraceSetup )

تكوين Systrace للتشغيل. مهجور: استخدم Systrace Python 2 الذي تم إيقافه في 2020-01-01. لم يعد Systrace مدعومًا في Cloud Testing API، ولن يتم توفير ملف Systrace في النتائج.

dontAutograntPermissions

boolean

ما إذا كان سيتم منع منح جميع أذونات وقت التشغيل عند تثبيت التطبيق

ملف الجهاز

وصف ملف جهاز واحد.

تمثيل جيسون
{

  // Union field device_file can be only one of the following:
  "obbFile": {
    object (ObbFile)
  },
  "regularFile": {
    object (RegularFile)
  }
  // End of list of possible types for union field device_file.
}
مجالات
device_file حقل الاتحاد file_file . مطلوب. يمكن أن يكون device_file واحدًا فقط مما يلي:
obbFile

object ( ObbFile )

إشارة إلى ملف blob ثنائي غير شفاف.

regularFile

object ( RegularFile )

إشارة إلى ملف عادي.

ملف Obb

ملف ثنائي كبير الحجم غير شفاف لتثبيته على الجهاز قبل بدء الاختبار.

تمثيل جيسون
{
  "obbFileName": string,
  "obb": {
    object (FileReference)
  }
}
مجالات
obbFileName

string

مطلوب. اسم ملف OBB الذي يجب أن يتوافق مع التنسيق المحدد بواسطة Android، على سبيل المثال [main|patch].0300110.com.example.android.obb والذي سيتم تثبيته في <shared-storage>/Android/obb/<package-name>/ على الجهاز.

obb

object ( FileReference )

مطلوب. ملف (ملفات) Blob Binary Blob (OBB) المعتمة لتثبيتها على الجهاز.

مصدر المعلومات

مرجع إلى ملف، يستخدم لإدخالات المستخدم.

تمثيل جيسون
{

  // Union field file can be only one of the following:
  "gcsPath": string
  // End of list of possible types for union field file.
}
مجالات
file ميداني للاتحاد . مطلوب. مرجع الملف. يمكن أن يكون file واحدًا مما يلي فقط:
gcsPath

string

مسار إلى ملف في Google Cloud Storage. مثال: gs://build-app-1414623860166/app%40debug-unaligned.apk من المتوقع أن تكون هذه المسارات مشفرة بعنوان URL (ترميز النسبة المئوية)

الملف العادي

ملف أو دليل لتثبيته على الجهاز قبل بدء الاختبار.

تمثيل جيسون
{
  "content": {
    object (FileReference)
  },
  "devicePath": string
}
مجالات
content

object ( FileReference )

مطلوب. الملف المصدر.

devicePath

string

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

${EXTERNAL_STORAGE}، /sdcard، أو /storage

${ANDROID_DATA}/local/tmp أو /data/local/tmp

تحديد مسار خارج أشجار الدليل هذه غير صالح.

سيتم توفير المسارات /sdcard و/data ومعاملتها كبدائل مسار ضمنية. على سبيل المثال، إذا لم يتم تعيين /sdcard الموجود على جهاز معين إلى وحدة تخزين خارجية، فسيقوم النظام باستبداله ببادئة مسار التخزين الخارجي لذلك الجهاز ونسخ الملف هناك.

يُنصح بشدة باستخدام واجهة برمجة تطبيقات البيئة في التطبيق واختبار التعليمات البرمجية للوصول إلى الملفات الموجودة على الجهاز بطريقة محمولة.

APK

ملف حزمة Android للتثبيت.

تمثيل جيسون
{
  "location": {
    object (FileReference)
  },
  "packageName": string
}
مجالات
location

object ( FileReference )

المسار إلى APK المراد تثبيته على الجهاز قبل بدء الاختبار.

packageName

string

حزمة جافا لـ APK المراد تثبيتها. يتم تحديد القيمة من خلال فحص بيان التطبيق.

حساب

يحدد الحساب وكيفية تسجيل الدخول إليه.

تمثيل جيسون
{

  // Union field account_type can be only one of the following:
  "googleAuto": {
    object (GoogleAuto)
  }
  // End of list of possible types for union field account_type.
}
مجالات
حقل الاتحاد account_type . مطلوب. نوع الحساب، بناءً على الغرض منه (مثل Google) وآلية تسجيل الدخول الخاصة به (مثل اسم المستخدم وكلمة المرور). يمكن أن يكون account_type واحدًا فقط مما يلي:
googleAuto

object ( GoogleAuto )

حساب تسجيل دخول جوجل تلقائي.

GoogleAuto

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

متغيرات البيئة

تم تمرير زوج القيمة الرئيسية كمتغير بيئة للاختبار.

تمثيل جيسون
{
  "key": string,
  "value": string
}
مجالات
key

string

مفتاح لمتغير البيئة.

value

string

قيمة متغير البيئة.

سيستراسيتوب

تمثيل جيسون
{
  "durationSeconds": integer
}
مجالات
durationSeconds
(deprecated)

integer

مدة Systrace بالثواني. ينبغي أن يكون بين 1 و 30 ثانية. 0 تعطيل النظام.

IosTestSetup

وصف لكيفية إعداد جهاز iOS قبل إجراء الاختبار.

تمثيل جيسون
{
  "networkProfile": string,
  "additionalIpas": [
    {
      object (FileReference)
    }
  ],
  "pushFiles": [
    {
      object (IosDeviceFile)
    }
  ],
  "pullDirectories": [
    {
      object (IosDeviceFile)
    }
  ]
}
مجالات
networkProfile

string

ملف تعريف حركة مرور الشبكة المستخدم لإجراء الاختبار. يمكن الاستعلام عن ملفات تعريف الشبكة المتوفرة باستخدام نوع البيئة NETWORK_CONFIGURATION عند استدعاء TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

additionalIpas[]

object ( FileReference )

تطبيقات iOS المراد تثبيتها بالإضافة إلى تلك التي يتم اختبارها مباشرة.

pushFiles[]

object ( IosDeviceFile )

قائمة الملفات المطلوب دفعها إلى الجهاز قبل بدء الاختبار.

pullDirectories[]

object ( IosDeviceFile )

قائمة الدلائل الموجودة على الجهاز للتحميل إلى Cloud Storage في نهاية الاختبار.

يجب أن تكون الأدلة إما في دليل مشترك (مثل /private/var/mobile/Media) أو ضمن دليل يمكن الوصول إليه داخل نظام ملفات التطبيق (مثل /Documents) عن طريق تحديد معرف الحزمة.

IosDeviceFile

ملف أو دليل لتثبيته على الجهاز قبل بدء الاختبار.

تمثيل جيسون
{
  "content": {
    object (FileReference)
  },
  "bundleId": string,
  "devicePath": string
}
مجالات
content

object ( FileReference )

الملف المصدر

bundleId

string

معرف حزمة التطبيق حيث يوجد هذا الملف.

تعمل تطبيقات iOS على تحديد نظام الملفات الخاص بها، لذلك يجب أن تحدد ملفات التطبيق التطبيق المثبت على الجهاز.

devicePath

string

موقع الملف على الجهاز، داخل نظام ملفات وضع الحماية الخاص بالتطبيق

AndroidInstrumentationTest

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

راجع https://developer.android.com/training/testing/fundamentals لمزيد من المعلومات حول أنواع اختبارات Android.

تمثيل جيسون
{
  "testApk": {
    object (FileReference)
  },
  "appPackageId": string,
  "testPackageId": string,
  "testRunnerClass": string,
  "testTargets": [
    string
  ],
  "orchestratorOption": enum (OrchestratorOption),
  "shardingOption": {
    object (ShardingOption)
  },

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
مجالات
testApk

object ( FileReference )

مطلوب. ملف APK الذي يحتوي على رمز الاختبار المطلوب تنفيذه.

appPackageId

string

حزمة جافا للتطبيق قيد الاختبار. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق.

testPackageId

string

حزمة جافا للاختبار الذي سيتم تنفيذه. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق.

testRunnerClass

string

فئة InstrumentationTestRunner. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق.

testTargets[]

string

يجب أن يكون كل هدف مؤهلاً بالكامل باسم الحزمة أو اسم الفئة، بأحد هذه التنسيقات:

  • "اسم الحزمة"
  • "اسم الحزمة فئة.class_name"
  • "اسم الحزمة فئة.class_name#method_name"

إذا كان فارغا، سيتم تشغيل كافة الأهداف في الوحدة.

orchestratorOption

enum ( OrchestratorOption )

خيار ما إذا كان سيتم تشغيل كل اختبار ضمن استدعاء الأجهزة الخاص به باستخدام Android Test Orchestrator أم لا. ** Orchestrator متوافق فقط مع الإصدار 1.1 من AndroidJUnitRunner أو أعلى! ** يقدم المنسق المزايا التالية:

  • لا توجد دولة مشتركة
  • الأعطال معزولة
  • يتم تحديد نطاق السجلات لكل اختبار

راجع https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator لمزيد من المعلومات حول Android Test Orchestrator.

إذا لم يتم تعيينه، فسيتم تشغيل الاختبار بدون المنسق.

shardingOption

object ( ShardingOption )

خيار تشغيل الاختبارات في أجزاء متعددة بالتوازي.

حقل الاتحاد app_under_test . مطلوب. يمكن أن يكون app_under_test واحدًا فقط مما يلي:
appApk

object ( FileReference )

APK للتطبيق قيد الاختبار.

appBundle

object ( AppBundle )

حزمة تطبيقات متعددة APK للتطبيق قيد الاختبار.

AppBundle

تنسيق ملف Android App Bundle، الذي يحتوي على ملف BundleConfig.pb، أو دليل الوحدة الأساسية، أو صفر أو أكثر من أدلة وحدات الميزات الديناميكية.

راجع https://developer.android.com/guide/app-bundle/build للحصول على إرشادات حول إنشاء حزم التطبيقات.

تمثيل جيسون
{

  // Union field bundle can be only one of the following:
  "bundleLocation": {
    object (FileReference)
  }
  // End of list of possible types for union field bundle.
}
مجالات
bundle حقل الاتحاد. مطلوب. معلومات موقع الحزمة. يمكن أن تكون bundle واحدة فقط مما يلي:
bundleLocation

object ( FileReference )

ملف .aab يمثل حزمة التطبيق قيد الاختبار.

خيار الأوركسترا

يحدد كيفية تنفيذ الاختبار.

التعدادات
ORCHESTRATOR_OPTION_UNSPECIFIED القيمة الافتراضية: سيختار الخادم الوضع. يعني حاليًا أنه سيتم تشغيل الاختبار بدون المنسق. في المستقبل، سيتم إجراء جميع اختبارات الأجهزة مع المنسق. يتم تشجيع استخدام المُنسق بشدة نظرًا لجميع المزايا التي يقدمها.
USE_ORCHESTRATOR قم بتشغيل الاختبار باستخدام المنسق. ** متوافق فقط مع الإصدار 1.1 من AndroidJUnitRunner أو أعلى! ** مُستَحسَن.
DO_NOT_USE_ORCHESTRATOR قم بتشغيل الاختبار دون استخدام المنسق.

خيار المشاركة

خيارات لتمكين المشاركة.

تمثيل جيسون
{

  // Union field option can be only one of the following:
  "uniformSharding": {
    object (UniformSharding)
  },
  "manualSharding": {
    object (ManualSharding)
  },
  "smartSharding": {
    object (SmartSharding)
  }
  // End of list of possible types for union field option.
}
مجالات

option حقل الاتحاد.

يمكن أن يكون option واحدًا فقط مما يلي:

uniformSharding

object ( UniformSharding )

حالات اختبار الشظايا بشكل موحد مع إعطاء العدد الإجمالي للشظايا.

manualSharding

object ( ManualSharding )

حالات اختبار Shards في مجموعات محددة من الحزم و/أو الفئات و/أو الأساليب.

smartSharding

object ( SmartSharding )

اختبار Shards بناءً على سجلات توقيت حالة الاختبار السابقة.

التقسيم الموحد

حالات اختبار الشظايا بشكل موحد مع إعطاء العدد الإجمالي للشظايا.

بالنسبة لاختبارات الأجهزة، ستتم ترجمتها إلى وسيطات AndroidJUnitRunner "-e numShard" و"-e shardIndex". مع تمكين التجزئة الموحدة، يكون تحديد أي من وسيطات التجزئة هذه عبر environmentVariables غير صالح.

استنادًا إلى آلية التجزئة التي يستخدمها AndroidJUnitRunner، ليس هناك ما يضمن توزيع حالات الاختبار بشكل موحد عبر جميع الأجزاء.

تمثيل جيسون
{
  "numShards": integer
}
مجالات
numShards

integer

مطلوب. إجمالي عدد القطع المراد إنشاؤها. ويجب أن يكون هذا دائمًا رقمًا موجبًا لا يزيد عن العدد الإجمالي لحالات الاختبار. عند تحديد جهاز فعلي واحد أو أكثر، يجب أن يكون عدد الأجزاء <= 50. عند تحديد جهاز ظاهري واحد أو أكثر من أجهزة ARM، يجب أن يكون العدد <= 200. عند تحديد أجهزة ظاهرية x86 فقط، يجب أن يكون العدد <= 500 .

المشاركة اليدوية

حالات اختبار Shards في مجموعات محددة من الحزم و/أو الفئات و/أو الأساليب.

مع تمكين التجزئة اليدوية، يكون تحديد أهداف الاختبار عبر متغيرات البيئة أو في InstrumentationTest غير صالح.

تمثيل جيسون
{
  "testTargetsForShard": [
    {
      object (TestTargetsForShard)
    }
  ]
}
مجالات
testTargetsForShard[]

object ( TestTargetsForShard )

مطلوب. مجموعة من الحزم و/أو الفئات و/أو طرق الاختبار التي سيتم تشغيلها لكل جزء تم إنشاؤه يدويًا. يجب عليك تحديد جزء واحد على الأقل في حالة وجود هذا الحقل. عند تحديد جهاز فعلي واحد أو أكثر، يجب أن يكون عدد testTargetsForShard المتكرر <= 50. عند تحديد واحد أو أكثر من أجهزة ARM الافتراضية، يجب أن يكون <= 200. عند تحديد أجهزة افتراضية x86 فقط، يجب أن يكون <= 500.

TestTargetsForShard

أهداف الاختبار للشظية.

تمثيل جيسون
{
  "testTargets": [
    string
  ]
}
مجالات
testTargets[]

string

مجموعة من الحزم والفئات و/أو طرق الاختبار التي سيتم تشغيلها لكل جزء. يجب تحديد الأهداف بتنسيق وسيطة AndroidJUnitRunner. على سبيل المثال، "حزمة com.my.packages" "فئة com.my.package.MyClass".

يجب أن يكون عدد testTargets أكبر من 0.

مشاركة ذكية

اختبار Shards بناءً على سجلات توقيت حالة الاختبار السابقة.

تمثيل جيسون
{
  "targetedShardDuration": string
}
مجالات
targetedShardDuration

string ( Duration format)

مقدار الوقت الذي يجب أن تستغرقه الاختبارات داخل القطعة.

الافتراضي: 300 ثانية (5 دقائق). الحد الأدنى المسموح به: 120 ثانية (دقيقتان).

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

  • تم الوصول إلى الحد الأقصى للجزء ويتبقى المزيد من وقت الاختبار المحسوب لتخصيصه للأجزاء.
  • من المقدر أن يكون أي اختبار فردي أطول من مدة الجزء المستهدف.

مدة المشاركة غير مضمونة لأن المشاركة الذكية تستخدم سجل حالة الاختبار والمدد الافتراضية التي قد لا تكون دقيقة. قواعد العثور على سجلات توقيت حالة الاختبار هي:

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

نظرًا لأن مدة الجزء الفعلية يمكن أن تتجاوز مدة الجزء المستهدفة، نوصي بتعيين القيمة المستهدفة على الأقل 5 دقائق أقل من الحد الأقصى المسموح به لمهلة الاختبار (45 دقيقة للأجهزة الفعلية و60 دقيقة للأجهزة الافتراضية)، أو استخدام الإعداد المخصص اختبار قيمة المهلة التي قمت بتعيينها. يتجنب هذا الأسلوب إلغاء الجزء قبل انتهاء كافة الاختبارات.

لاحظ أن هناك حدًا أقصى لعدد القطع. عند تحديد جهاز فعلي واحد أو أكثر، يجب أن يكون عدد الأجزاء <= 50. عند تحديد جهاز ظاهري واحد أو أكثر من أجهزة ARM، يجب أن يكون العدد <= 200. عند تحديد أجهزة ظاهرية x86 فقط، يجب أن يكون العدد <= 500 لضمان حالة اختبار واحدة على الأقل لكل قطعة، لن يتجاوز عدد القطع عدد حالات الاختبار. يتم احتساب كل جزء يتم إنشاؤه ضمن حصة الاختبار اليومية.

مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' s '. مثال: "3.5s" .

androidRoboTest

اختبار لتطبيق Android يستكشف التطبيق على جهاز Android افتراضي أو فعلي، ويبحث عن الأسباب والأعطال أثناء حدوثه.

تمثيل جيسون
{
  "appPackageId": string,
  "appInitialActivity": string,
  "maxDepth": integer,
  "maxSteps": integer,
  "roboDirectives": [
    {
      object (RoboDirective)
    }
  ],
  "roboMode": enum (RoboMode),
  "roboScript": {
    object (FileReference)
  },
  "startingIntents": [
    {
      object (RoboStartingIntent)
    }
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
مجالات
appPackageId

string

حزمة جافا للتطبيق قيد الاختبار. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق.

appInitialActivity

string

النشاط الأولي الذي ينبغي استخدامه لبدء التطبيق.

maxDepth
(deprecated)

integer

أقصى عمق لمكدس الاجتياز الذي يمكن لـ Robo استكشافه. يجب أن يكون عمرك 2 على الأقل ليتمكن Robo من استكشاف التطبيق بعد النشاط الأول. الافتراضي هو 50.

maxSteps
(deprecated)

integer

الحد الأقصى لعدد الخطوات التي يمكن لـ Robo تنفيذها. الافتراضي ليس الحد.

roboDirectives[]

object ( RoboDirective )

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

roboMode

enum ( RoboMode )

الوضع الذي يجب أن يعمل فيه Robo. يجب أن يسمح معظم العملاء للخادم بملء هذا الحقل تلقائيًا.

roboScript

object ( FileReference )

ملف JSON يتضمن سلسلة من الإجراءات التي يجب على Robo تنفيذها كمقدمة للزحف.

startingIntents[]

object ( RoboStartingIntent )

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

حقل الاتحاد app_under_test . مطلوب. يمكن أن يكون app_under_test واحدًا فقط مما يلي:
appApk

object ( FileReference )

APK للتطبيق قيد الاختبار.

appBundle

object ( AppBundle )

حزمة تطبيقات متعددة APK للتطبيق قيد الاختبار.

RoboDirective

يوجه Robo للتفاعل مع عنصر واجهة مستخدم محدد إذا تمت مواجهته أثناء الزحف. حاليًا، يمكن لـ Robo إجراء إدخال نص أو النقر على العناصر.

تمثيل جيسون
{
  "resourceName": string,
  "inputText": string,
  "actionType": enum (RoboActionType)
}
مجالات
resourceName

string

مطلوب. اسم مورد android لعنصر واجهة المستخدم المستهدف. على سبيل المثال، في Java: R.string.foo في ملف xml: @string/foo مطلوب الجزء "foo" فقط. الوثيقة المرجعية: https://developer.Android.com/guide/topics/resources/accessing-resources.html

inputText

string

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

actionType

enum ( RoboActionType )

مطلوب. نوع الإجراء الذي يجب على Robo تنفيذه على العنصر المحدد.

RoboActionType

الإجراءات التي يمكن لـ Robo تنفيذها على عناصر واجهة المستخدم.

التعدادات
ACTION_TYPE_UNSPECIFIED لا تستخدم. للإصدارات الأولية فقط.
SINGLE_CLICK قم بتوجيه Robo للنقر على العنصر المحدد. لا يمكن تنفيذه إذا كان العنصر المحدد غير قابل للنقر.
ENTER_TEXT قم بتوجيه Robo لإدخال نص في العنصر المحدد. لا يمكن تنفيذه إذا لم يتم تمكين العنصر المحدد أو لا يسمح بإدخال النص.
IGNORE قم بتوجيه Robo لتجاهل التفاعلات مع عنصر معين.

وضع روبو

الوضع الذي يجب أن يعمل فيه Robo.

التعدادات
ROBO_MODE_UNSPECIFIED هذا يعني أن الخادم يجب أن يختار الوضع. مُستَحسَن.
ROBO_VERSION_1 يقوم بتشغيل Robo في وضع UIAutomator فقط دون إيقاف التطبيق
ROBO_VERSION_2 يقوم بتشغيل Robo في قهوة الإسبريسو القياسية باستخدام خيار UIAutomator الاحتياطي

RoboStartingIntent

رسالة لتحديد أنشطة البدء المراد الزحف إليها.

تمثيل جيسون
{
  "timeout": string,

  // Union field starting_intent can be only one of the following:
  "launcherActivity": {
    object (LauncherActivityIntent)
  },
  "startActivity": {
    object (StartActivityIntent)
  }
  // End of list of possible types for union field starting_intent.
}
مجالات
timeout

string ( Duration format)

المهلة بالثواني لكل نية.

مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' s '. مثال: "3.5s" .

حقل الاتحاد starting_intent . مطلوب. تفاصيل النية لبدء النشاط. يمكن أن يكون starting_intent واحدًا فقط مما يلي:
launcherActivity

object ( LauncherActivityIntent )

نية تبدأ نشاط المشغل الرئيسي.

startActivity

object ( StartActivityIntent )

نية تبدأ نشاطًا بتفاصيل محددة.

LauncherActivityIntent

يحدد نية تبدأ نشاط المشغل الرئيسي.

StartActivityIntent

نية البداية المحددة بواسطة الإجراء، وURI، والفئات.

تمثيل جيسون
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
مجالات
action

string

اسم الفعل. مطلوب لـ START_ACTIVITY.

uri

string

URI للإجراء.

categories[]

string

فئات النوايا لتعيين النية.

AndroidTestLoop

اختبار لتطبيق Android باستخدام حلقة اختبار. ستتم إضافة الهدف <intent-name> ضمنيًا، نظرًا لأن Games هي المستخدم الوحيد لواجهة برمجة التطبيقات هذه في الوقت الحالي.

تمثيل جيسون
{
  "appPackageId": string,
  "scenarios": [
    integer
  ],
  "scenarioLabels": [
    string
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
مجالات
appPackageId

string

حزمة جافا للتطبيق قيد الاختبار. يتم تحديد الإعداد الافتراضي من خلال فحص بيان التطبيق.

scenarios[]

integer

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

scenarioLabels[]

string

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

حقل الاتحاد app_under_test . مطلوب. حزمة الروبوت للاختبار. يمكن أن يكون app_under_test واحدًا فقط مما يلي:
appApk

object ( FileReference )

APK للتطبيق قيد الاختبار.

appBundle

object ( AppBundle )

حزمة تطبيقات متعددة APK للتطبيق قيد الاختبار.

IosXcTest

اختبار لتطبيق iOS يستخدم إطار عمل XCTest. يدعم Xcode خيار "الإنشاء للاختبار"، الذي ينشئ ملف .xctestrun الذي يحتوي على مواصفات الاختبار (الوسائط، وطرق الاختبار، وما إلى ذلك). يقبل نوع الاختبار هذا ملفًا مضغوطًا يحتوي على ملف .xctestrun والمحتويات المقابلة لدليل Build/Products الذي يحتوي على كافة الثنائيات اللازمة لتشغيل الاختبارات.

تمثيل جيسون
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
مجالات
testsZip

object ( FileReference )

مطلوب. ملف .zip الذي يحتوي على ملف .xctestrun ومحتويات دليل DerivedData/Build/Products. يتم تجاهل ملف .xctestrun الموجود في هذا الملف المضغوط إذا تم تحديد حقل xctestrun.

xctestrun

object ( FileReference )

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

xcodeVersion

string

إصدار Xcode الذي يجب استخدامه للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. الإعدادات الافتراضية لأحدث إصدار Xcode الذي يدعمه Firebase Test Lab.

appBundleId

string

الإخراج فقط. معرف الحزمة للتطبيق قيد الاختبار.

testSpecialEntitlements

boolean

خيار اختبار استحقاقات التطبيق الخاصة. سيؤدي تعيين هذا إلى إعادة تسجيل التطبيق باستحقاقات خاصة بمعرف تطبيق صريح. يدعم حاليًا اختبار استحقاق aps-environment.

IosTestLoop

اختبار لتطبيق iOS الذي ينفذ واحدًا أو أكثر من سيناريوهات حلقة اللعبة. يقبل نوع الاختبار هذا تطبيقًا مؤرشفًا (ملف .ipa) وقائمة من سيناريوهات الأعداد الصحيحة التي سيتم تنفيذها على التطبيق بالتسلسل.

تمثيل جيسون
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
مجالات
appIpa

object ( FileReference )

مطلوب. .ipa للتطبيق للاختبار.

scenarios[]

integer

قائمة السيناريوهات التي يجب تشغيلها أثناء الاختبار. الإعدادات الافتراضية للسيناريو الفردي 0 إذا لم يتم تحديدها.

appBundleId

string

الإخراج فقط. معرف الحزمة للتطبيق قيد الاختبار.

بيئة ماتريكس

مصفوفة البيئات التي سيتم تنفيذ الاختبار فيها.

تمثيل جيسون
{

  // Union field environment_matrix can be only one of the following:
  "androidMatrix": {
    object (AndroidMatrix)
  },
  "androidDeviceList": {
    object (AndroidDeviceList)
  },
  "iosDeviceList": {
    object (IosDeviceList)
  }
  // End of list of possible types for union field environment_matrix.
}
مجالات
بيئة حقل الاتحاد_ environment_matrix . مطلوب. مصفوفة البيئة. يمكن أن تكون environment_matrix واحدة فقط مما يلي:
androidMatrix

object ( AndroidMatrix )

مصفوفة من أجهزة أندرويد.

androidDeviceList

object ( AndroidDeviceList )

قائمة أجهزة أندرويد؛ سيتم تشغيل الاختبار فقط على الأجهزة المحددة.

iosDeviceList

object ( IosDeviceList )

قائمة أجهزة iOS.

AndroidMatrix

يتم تحديد مجموعة من التباديل الخاصة بتكوين جهاز Android من خلال المنتج المتقاطع للمحاور المحددة. داخليًا، سيتم توسيع AndroidMatrix المحدد ليشمل مجموعة من أجهزة Android.

سيتم إنشاء مثيل التباديل المدعومة فقط. يتم تجاهل التباديل غير الصالح (على سبيل المثال، النماذج/الإصدارات غير المتوافقة).

تمثيل جيسون
{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
مجالات
androidModelIds[]

string

مطلوب. معرفات مجموعة أجهزة Android التي سيتم استخدامها. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

androidVersionIds[]

string

مطلوب. معرفات مجموعة إصدار نظام التشغيل Android المراد استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

locales[]

string

مطلوب. مجموعة اللغات التي سيقوم جهاز الاختبار بتمكينها للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

orientations[]

string

مطلوب. مجموعة التوجهات للاختبار بها. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

AndroidDeviceList

قائمة بتكوينات جهاز Android الذي سيتم تنفيذ الاختبار فيه.

تمثيل جيسون
{
  "androidDevices": [
    {
      object (AndroidDevice)
    }
  ]
}
مجالات
androidDevices[]

object ( AndroidDevice )

مطلوب. قائمة أجهزة أندرويد.

AndroidDevice

جهاز أندرويد واحد.

تمثيل جيسون
{
  "androidModelId": string,
  "androidVersionId": string,
  "locale": string,
  "orientation": string
}
مجالات
androidModelId

string

مطلوب. معرف جهاز Android الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

androidVersionId

string

مطلوب. معرف إصدار نظام التشغيل Android الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

locale

string

مطلوب. اللغة المحلية لجهاز الاختبار المستخدم للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

orientation

string

مطلوب. كيف يتم توجيه الجهاز أثناء الاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

IosDeviceList

قائمة بتكوينات جهاز iOS الذي سيتم تنفيذ الاختبار فيه.

تمثيل جيسون
{
  "iosDevices": [
    {
      object (IosDevice)
    }
  ]
}
مجالات
iosDevices[]

object ( IosDevice )

مطلوب. قائمة أجهزة iOS.

iOSDevice

جهاز iOS واحد.

تمثيل جيسون
{
  "iosModelId": string,
  "iosVersionId": string,
  "locale": string,
  "orientation": string
}
مجالات
iosModelId

string

مطلوب. معرف جهاز iOS الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

iosVersionId

string

مطلوب. معرف إصدار برنامج iOS الرئيسي الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

locale

string

مطلوب. اللغة المحلية لجهاز الاختبار المستخدم للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

orientation

string

مطلوب. كيف يتم توجيه الجهاز أثناء الاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة.

تنفيذ اختبار

اختبار واحد يتم تنفيذه في بيئة واحدة.

تمثيل جيسون
{
  "id": string,
  "matrixId": string,
  "projectId": string,
  "testSpecification": {
    object (TestSpecification)
  },
  "shard": {
    object (Shard)
  },
  "environment": {
    object (Environment)
  },
  "state": enum (TestState),
  "toolResultsStep": {
    object (ToolResultsStep)
  },
  "timestamp": string,
  "testDetails": {
    object (TestDetails)
  }
}
مجالات
id

string

الإخراج فقط. معرف فريد تم تعيينه بواسطة الخدمة.

matrixId

string

الإخراج فقط. معرف المحتوي على TestMatrix.

projectId

string

الإخراج فقط. المشروع السحابي الذي يملك تنفيذ الاختبار.

testSpecification

object ( TestSpecification )

الإخراج فقط. كيفية إجراء الاختبار.

shard

object ( Shard )

الإخراج فقط. تفاصيل عن الشق.

environment

object ( Environment )

الإخراج فقط. كيف يتم تكوين الجهاز (الأجهزة) المضيفة.

state

enum ( TestState )

الإخراج فقط. يشير إلى التقدم الحالي في تنفيذ الاختبار (على سبيل المثال، انتهى).

toolResultsStep

object ( ToolResultsStep )

الإخراج فقط. حيث تتم كتابة نتائج هذا التنفيذ.

timestamp

string ( Timestamp format)

الإخراج فقط. الوقت الذي تم فيه إنشاء تنفيذ الاختبار هذا في البداية.

طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانو ثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

testDetails

object ( TestDetails )

الإخراج فقط. تفاصيل إضافية حول اختبار التشغيل.

شظية

الإخراج فقط. تفاصيل عن الشق.

تمثيل جيسون
{
  "shardIndex": integer,
  "numShards": integer,
  "testTargetsForShard": {
    object (TestTargetsForShard)
  },
  "estimatedShardDuration": string
}
مجالات
shardIndex

integer

الإخراج فقط. فهرس الكسرة بين كل الكسور.

numShards

integer

الإخراج فقط. العدد الإجمالي للشظايا.

testTargetsForShard

object ( TestTargetsForShard )

الإخراج فقط. أهداف الاختبار لكل قطعة. تم تعيينه فقط للمشاركة اليدوية.

estimatedShardDuration

string ( Duration format)

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

مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' s '. مثال: "3.5s" .

بيئة

البيئة التي يتم فيها إجراء الاختبار.

تمثيل جيسون
{

  // Union field environment can be only one of the following:
  "androidDevice": {
    object (AndroidDevice)
  },
  "iosDevice": {
    object (IosDevice)
  }
  // End of list of possible types for union field environment.
}
مجالات
environment ميدان الاتحاد . مطلوب. البيئة. environment يمكن أن تكون واحدة فقط مما يلي:
androidDevice

object ( AndroidDevice )

جهاز Android يجب استخدامه مع اختبار Android.

iosDevice

object ( IosDevice )

جهاز iOS يجب استخدامه مع اختبار iOS.

حالة الاختبار

الحالة (أي التقدم) لتنفيذ الاختبار أو المصفوفة.

التعدادات
TEST_STATE_UNSPECIFIED لا تستخدم. للإصدارات الأولية فقط.
VALIDATING يتم التحقق من صحة التنفيذ أو المصفوفة.
PENDING ينتظر التنفيذ أو المصفوفة حتى تصبح الموارد متاحة.
RUNNING

التنفيذ قيد المعالجة حاليًا.

لا يمكن ضبطه إلا على التنفيذ.

FINISHED

تم إنهاء التنفيذ أو المصفوفة بشكل طبيعي.

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

ERROR لقد توقف التنفيذ أو المصفوفة بسبب مواجهة فشل في البنية الأساسية.
UNSUPPORTED_ENVIRONMENT

لم يتم تشغيل التنفيذ لأنه يتوافق مع بيئة غير مدعومة.

لا يمكن ضبطه إلا على التنفيذ.

INCOMPATIBLE_ENVIRONMENT

لم يتم تشغيل التنفيذ لأن المدخلات المتوفرة غير متوافقة مع البيئة المطلوبة.

مثال: إصدار Android المطلوب أقل من إصدار minSdkVersion الخاص بـ APK

لا يمكن ضبطه إلا على التنفيذ.

INCOMPATIBLE_ARCHITECTURE

لم يتم تشغيل التنفيذ لأن المدخلات المقدمة غير متوافقة مع البنية المطلوبة.

مثال: الجهاز المطلوب لا يدعم تشغيل الكود الأصلي في ملف APK المرفق

لا يمكن ضبطه إلا على التنفيذ.

CANCELLED

ألغى المستخدم التنفيذ.

لا يمكن ضبطه إلا على التنفيذ.

INVALID

لم يتم تشغيل التنفيذ أو المصفوفة لأن المدخلات المقدمة غير صالحة.

أمثلة: ملف الإدخال ليس من النوع المتوقع، أو أنه تالف/مشوه، أو تم وضع علامة عليه كبرنامج ضار

خطوة نتائج الأداة

يمثل مورد خطوة نتائج الأداة.

هذا له نتائج TestExecution.

تمثيل جيسون
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
مجالات
projectId

string

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

historyId

string

الإخراج فقط. معرف سجل نتائج الأداة.

executionId

string

الإخراج فقط. معرف تنفيذ نتائج الأداة.

stepId

string

الإخراج فقط. معرف خطوة نتائج الأداة.

تفاصيل الاختبار

تفاصيل إضافية حول التقدم في اختبار التشغيل.

تمثيل جيسون
{
  "progressMessages": [
    string
  ],
  "errorMessage": string
}
مجالات
progressMessages[]

string

الإخراج فقط. وصف تفصيلي يمكن قراءته بواسطة الإنسان لتقدم الاختبار. على سبيل المثال: "توفير جهاز"، "بدء الاختبار".

أثناء التنفيذ، قد يتم إلحاق بيانات جديدة بنهاية رسائل التقدم.

errorMessage

string

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

تخزين النتائج

المواقع التي يتم فيها تخزين نتائج إجراء الاختبار.

تمثيل جيسون
{
  "googleCloudStorage": {
    object (GoogleCloudStorage)
  },
  "toolResultsHistory": {
    object (ToolResultsHistory)
  },
  "toolResultsExecution": {
    object (ToolResultsExecution)
  },
  "resultsUrl": string
}
مجالات
googleCloudStorage

object ( GoogleCloudStorage )

مطلوب.

toolResultsHistory

object ( ToolResultsHistory )

سجل نتائج الأداة الذي يحتوي على تنفيذ نتائج الأداة التي تتم كتابة النتائج إليها.

إذا لم يتم توفيرها، سيتم اختيار الخدمة القيمة المناسبة.

toolResultsExecution

object ( ToolResultsExecution )

الإخراج فقط. تنفيذ نتائج الأداة التي تتم كتابة النتائج عليها.

resultsUrl

string

الإخراج فقط. عنوان URL للنتائج في Firebase Web Console.

جوجل كلاودستوراج

موقع تخزين داخل Google Cloud Storage (GCS).

تمثيل جيسون
{
  "gcsPath": string
}
مجالات
gcsPath

string

مطلوب. المسار إلى الدليل في GCS الذي سيحتوي في النهاية على نتائج هذا الاختبار. يجب أن يكون لدى المستخدم الطالب حق الوصول للكتابة على المجموعة الموجودة في المسار المتوفر.

ToolResultsHistory

يمثل مورد سجل نتائج الأداة.

تمثيل جيسون
{
  "projectId": string,
  "historyId": string
}
مجالات
projectId

string

مطلوب. المشروع السحابي الذي يمتلك سجل نتائج الأداة.

historyId

string

مطلوب. معرف سجل نتائج الأداة.

ToolResultsExecution

يمثل مورد تنفيذ نتائج الأداة.

هذا لديه نتائج TestMatrix.

تمثيل جيسون
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
مجالات
projectId

string

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

historyId

string

الإخراج فقط. معرف سجل نتائج الأداة.

executionId

string

الإخراج فقط. معرف تنفيذ نتائج الأداة.

تفاصيل مصفوفة غير صالحة

السبب التفصيلي لاعتبار المصفوفة غير صالحة.

التعدادات
INVALID_MATRIX_DETAILS_UNSPECIFIED لا تستخدم. للإصدارات الأولية فقط.
DETAILS_UNAVAILABLE المصفوفة غير صالحة، ولكن لا توجد تفاصيل أخرى متاحة.
MALFORMED_APK تعذر تحليل ملف APK لتطبيق الإدخال.
MALFORMED_TEST_APK تعذر تحليل ملف APK لاختبار الإدخال.
NO_MANIFEST تعذر العثور على AndroidManifest.xml.
NO_PACKAGE_NAME لا يعلن بيان APK عن اسم الحزمة.
INVALID_PACKAGE_NAME معرف تطبيق APK (المعروف أيضًا باسم اسم الحزمة) غير صالح. انظر أيضًا https://developer.Android.com/build/configure-app-module#set-application-id
TEST_SAME_AS_APP حزمة الاختبار وحزمة التطبيق متماثلتان.
NO_INSTRUMENTATION لا يعلن ملف APK الاختباري عن الأجهزة.
NO_SIGNATURE لا يحتوي تطبيق الإدخال APK على توقيع.
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE فئة مشغل الاختبار المحددة بواسطة المستخدم أو في ملف بيان APK للاختبار غير متوافقة مع Android Test Orchestrator. يتوافق Orchestrator فقط مع الإصدار 1.1 من AndroidJUnitRunner أو الإصدارات الأحدث. يمكن تعطيل Orchestrator باستخدام DO_NOT_USE_ORCHESTRATOR OrchestratorOption.
NO_TEST_RUNNER_CLASS

لا يحتوي ملف APK الاختباري على فئة عداء الاختبار المحددة من قبل المستخدم أو في ملف البيان. يمكن أن يكون سبب ذلك أحد الأسباب التالية:

  • قدم المستخدم اسم فئة عداء غير صحيح، أو
  • مشغل الاختبار ليس مدمجًا في ملف APK للاختبار (قد يكون موجودًا في APK التطبيق بدلاً من ذلك).
NO_LAUNCHER_ACTIVITY لا يمكن العثور على نشاط المشغل الرئيسي.
FORBIDDEN_PERMISSIONS يعلن التطبيق عن واحد أو أكثر من الأذونات غير المسموح بها.
INVALID_ROBO_DIRECTIVES يوجد تعارض في توجيهات robo المقدمة.
INVALID_RESOURCE_NAME يوجد اسم مورد واحد غير صالح على الأقل في توجيهات robo المقدمة
INVALID_DIRECTIVE_ACTION تعريف غير صالح للإجراء في توجيهات robo (على سبيل المثال، يتضمن إجراء النقر أو التجاهل حقل نص إدخال)
TEST_LOOP_INTENT_FILTER_NOT_FOUND لا يوجد مرشح نوايا حلقة اختبار، أو أن المرشح المعطى لم يتم تنسيقه بشكل صحيح.
SCENARIO_LABEL_NOT_DECLARED يحتوي الطلب على تسمية سيناريو لم يتم الإعلان عنها في البيان.
SCENARIO_LABEL_MALFORMED حدث خطأ أثناء تحليل قيمة التصنيف.
SCENARIO_NOT_DECLARED يحتوي الطلب على رقم سيناريو لم يتم الإعلان عنه في البيان.
DEVICE_ADMIN_RECEIVER تطبيقات مسؤول الجهاز غير مسموح بها.
MALFORMED_XC_TEST_ZIP كان XCTest المضغوط تالفًا. لا يحتوي الملف المضغوط على ملف .xctestrun واحد ومحتويات دليل DerivedData/Build/Products.
BUILT_FOR_IOS_SIMULATOR تم تصميم XCTest المضغوط لمحاكي iOS وليس لجهاز فعلي.
NO_TESTS_IN_XC_TEST_ZIP لم يحدد الملف .xctestrun أية أهداف اختبار.
USE_DESTINATION_ARTIFACTS يحدد واحد أو أكثر من أهداف الاختبار المحددة في ملف .xctestrun "UseDestinationArtifacts"، وهو أمر غير مسموح به.
TEST_NOT_APP_HOSTED يجب أن تحتوي اختبارات XC التي يتم تشغيلها على الأجهزة الفعلية على "IsAppHostedTestBundle" == "true" في ملف xctestrun.
PLIST_CANNOT_BE_PARSED تعذر تحليل ملف Info.plist الموجود في الملف المضغوط XCTest.
TEST_ONLY_APK

تم وضع علامة على APK على أنه "testOnly". مهملة وغير مستخدمة حاليا.

MALFORMED_IPA لا يمكن تحليل IPA المدخلات.
MISSING_URL_SCHEME لا يسجل التطبيق نظام URL الخاص بحلقة اللعبة.
MALFORMED_APP_BUNDLE تعذرت معالجة حزمة تطبيقات iOS (.app).
NO_CODE_APK APK لا يحتوي على رمز. راجع أيضًا https://developer.Android.com/guide/topics/manifest/application-element.html#code
INVALID_INPUT_APK إما أن مسار APK للإدخال المقدم كان مشوهًا، أو أن ملف APK غير موجود، أو أن المستخدم ليس لديه إذن للوصول إلى ملف APK.
INVALID_APK_PREVIEW_SDK تم تصميم APK لمعاينة SDK وهي غير مدعومة
MATRIX_TOO_LARGE تم توسيع المصفوفة لتحتوي على عدد كبير جدًا من عمليات الإعدام.
TEST_QUOTA_EXCEEDED لا توجد حصة اختبارية كافية لتشغيل عمليات التنفيذ في هذه المصفوفة.
SERVICE_NOT_ACTIVATED لم يتم تنشيط واجهة برمجة تطبيقات الخدمة السحابية المطلوبة. راجع: https://firebase.google.com/docs/test-lab/android/continious#requirements
UNKNOWN_PERMISSION_ERROR حدثت مشكلة تتعلق بالإذن غير معروفة أثناء تشغيل هذا الاختبار.

ملخص النتائج

ملخص النتائج لمصفوفة الاختبار النهائية.

التعدادات
OUTCOME_SUMMARY_UNSPECIFIED لا تستخدم. للإصدارات الأولية فقط.
SUCCESS

كان تشغيل مصفوفة الاختبار ناجحًا، على سبيل المثال:

  • لقد نجحت جميع حالات الاختبار.
  • لم يكتشف Robo أي عطل في التطبيق قيد الاختبار.
FAILURE

فشل التشغيل، على سبيل المثال:

  • فشلت حالة اختبار واحدة أو أكثر.
  • انتهت مهلة الاختبار.
  • تعطل التطبيق قيد الاختبار.
INCONCLUSIVE حدث شيء غير متوقع. يجب أن يظل التشغيل غير ناجح ولكن من المحتمل أن تكون هذه مشكلة عابرة وقد تكون إعادة تشغيل الاختبار ناجحة.
SKIPPED

تم تخطي كافة الاختبارات، على سبيل المثال:

  • جميع تكوينات الجهاز كانت غير متوافقة.

طُرق

cancel

يلغي عمليات تنفيذ الاختبار غير المكتملة في مصفوفة الاختبار.

create

إنشاء وتشغيل مصفوفة من الاختبارات وفقًا للمواصفات المحددة.

get

التحقق من حالة مصفوفة الاختبار وعمليات التنفيذ بمجرد إنشائها.