- المصدر: TestMatrix
- معلومات العميل
- تفاصيل معلومات العميل
- مواصفات الاختبار
- TestSetup
- ملف الجهاز
- ملف Obb
- مصدر المعلومات
- الملف العادي
- APK
- حساب
- GoogleAuto
- متغيرات البيئة
- سيستراسيتوب
- IosTestSetup
- IosDeviceFile
- AndroidInstrumentationTest
- AppBundle
- خيار الأوركسترا
- خيار المشاركة
- التقسيم الموحد
- المشاركة اليدوية
- TestTargetsForShard
- مشاركة ذكية
- androidRoboTest
- RoboDirective
- RoboActionType
- وضع روبو
- RoboStartingIntent
- LauncherActivityIntent
- StartActivityIntent
- AndroidTestLoop
- IosXcTest
- IosTestLoop
- بيئة ماتريكس
- AndroidMatrix
- AndroidDeviceList
- AndroidDevice
- IosDeviceList
- iOSDevice
- تنفيذ اختبار
- شظية
- بيئة
- حالة الاختبار
- خطوة نتائج الأداة
- تفاصيل الاختبار
- تخزين النتائج
- جوجل كلاودستوراج
- ToolResultsHistory
- ToolResultsExecution
- تفاصيل مصفوفة غير صالحة
- ملخص النتائج
- طُرق
المصدر: TestMatrix
يلتقط TestMatrix جميع التفاصيل حول الاختبار. أنه يحتوي على تكوين البيئة، ومواصفات الاختبار، وعمليات تنفيذ الاختبار والحالة العامة والنتيجة.
تمثيل جيسون |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
مجالات | |
---|---|
testMatrixId | الإخراج فقط. معرف فريد تم تعيينه بواسطة الخدمة. |
projectId | المشروع السحابي الذي يمتلك مصفوفة الاختبار. |
clientInfo | معلومات حول العميل الذي استدعى الاختبار. |
testSpecification | مطلوب. كيفية إجراء الاختبار. |
environmentMatrix | مطلوب. الأجهزة التي يتم تنفيذ الاختبارات عليها. |
testExecutions[] | الإخراج فقط. قائمة عمليات تنفيذ الاختبار التي تنشئها الخدمة لهذه المصفوفة. |
resultStorage | مطلوب. حيث تتم كتابة نتائج المصفوفة. |
state | الإخراج فقط. يشير إلى التقدم الحالي لمصفوفة الاختبار. |
timestamp | الإخراج فقط. الوقت الذي تم فيه إنشاء مصفوفة الاختبار هذه في البداية. طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانو ثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
invalidMatrixDetails | الإخراج فقط. يصف سبب اعتبار المصفوفة غير صالحة. مفيد فقط للمصفوفات في الحالة غير الصالحة. |
flakyTestAttempts | عدد المرات التي يجب إعادة محاولة تنفيذ الاختبار فيها في حالة فشل حالة اختبار واحدة أو أكثر لأي سبب من الأسباب. الحد الأقصى لعدد عمليات إعادة التشغيل المسموح بها هو 10. الافتراضي هو 0، مما يعني عدم إعادة التشغيل. |
outcomeSummary | الإخراج فقط. النتيجة الإجمالية للاختبار. يتم التعيين فقط عند انتهاء حالة مصفوفة الاختبار. |
failFast | إذا كان هذا صحيحًا، فسيتم إجراء محاولة واحدة فقط على الأكثر لتشغيل كل تنفيذ/جزء في المصفوفة. ولا تتأثر محاولات الاختبار غير المستقرة. عادةً، يتم إجراء محاولتين أو أكثر في حالة اكتشاف مشكلة محتملة في البنية الأساسية. هذه الميزة مخصصة لأحمال العمل الحساسة لزمن الاستجابة. قد يكون حدوث حالات فشل التنفيذ أكبر بكثير بالنسبة للمصفوفات سريعة الفشل ويكون الدعم محدودًا أكثر بسبب هذا التوقع. |
معلومات العميل
معلومات حول العميل الذي استدعى الاختبار.
تمثيل جيسون |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
مجالات | |
---|---|
name | مطلوب. اسم العميل، مثل gcloud. |
clientInfoDetails[] | قائمة المعلومات التفصيلية عن العميل. |
تفاصيل معلومات العميل
زوج من المعلومات التفصيلية ذات القيمة الرئيسية حول العميل الذي استدعى الاختبار. أمثلة: {'الإصدار'، '1.0'}، {'مسار الإصدار'، 'BETA'}.
تمثيل جيسون |
---|
{ "key": string, "value": string } |
مجالات | |
---|---|
key | مطلوب. مفتاح معلومات العميل التفصيلية. |
value | مطلوب. قيمة المعلومات التفصيلية للعميل. |
مواصفات الاختبار
وصف لكيفية إجراء الاختبار.
تمثيل جيسون |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
مجالات | |
---|---|
testTimeout | الحد الأقصى للوقت المسموح به لتنفيذ الاختبار قبل أن يتم إلغاؤه تلقائيًا. القيمة الافتراضية هي 5 دقائق. مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' |
disableVideoRecording | تعطيل تسجيل الفيديو. قد يقلل من زمن الوصول للاختبار. |
disablePerformanceMetrics | تعطيل تسجيل مقاييس الأداء. قد يقلل من زمن الوصول للاختبار. |
setup حقل الاتحاد. متطلبات إعداد الاختبار. يمكن أن يكون setup واحدًا فقط مما يلي: | |
testSetup | اختبار متطلبات الإعداد لنظام التشغيل Android، مثل الملفات المطلوب تثبيتها والبرامج النصية التمهيدية. |
iosTestSetup | اختبار متطلبات الإعداد لنظام التشغيل iOS. |
test ميداني للاتحاد . مطلوب. نوع الاختبار الذي سيتم إجراؤه. يمكن أن يكون test واحدًا مما يلي فقط: | |
androidInstrumentationTest | اختبار أجهزة أندرويد. |
androidRoboTest | اختبار الروبوت الروبوت. |
androidTestLoop | تطبيق Android مع حلقة اختبار. |
iosXcTest | iOS XCTest، عبر ملف .xctestrun. |
iosTestLoop | تطبيق iOS مع حلقة اختبار. |
TestSetup
وصف لكيفية إعداد جهاز Android قبل إجراء الاختبار.
تمثيل جيسون |
---|
{ "filesToPush": [ { object ( |
مجالات | |
---|---|
filesToPush[] | قائمة الملفات المطلوب دفعها إلى الجهاز قبل بدء الاختبار. |
directoriesToPull[] | قائمة الأدلة الموجودة على الجهاز لتحميلها إلى GCS في نهاية الاختبار؛ يجب أن تكون مسارات مطلقة ضمن /sdcard أو /storage أو /data/local/tmp. تقتصر أسماء المسارات على الأحرف az AZ 0-9 _ - . + و / ملاحظة: سيتم توفير المسارات /sdcard و/data ومعاملتها كبدائل مسار ضمنية. على سبيل المثال، إذا لم يتم تعيين /sdcard الموجود على جهاز معين إلى وحدة تخزين خارجية، فسيقوم النظام باستبداله ببادئة مسار التخزين الخارجي لذلك الجهاز. |
additionalApks[] | ملفات APK التي سيتم تثبيتها بالإضافة إلى تلك التي يتم اختبارها مباشرة. الحد الأقصى حاليا هو 100. |
account | سيتم تسجيل دخول الجهاز على هذا الحساب طوال مدة الاختبار. |
networkProfile | ملف تعريف حركة مرور الشبكة المستخدم لإجراء الاختبار. يمكن الاستعلام عن ملفات تعريف الشبكة المتوفرة باستخدام نوع البيئة NETWORK_CONFIGURATION عند استدعاء TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
environmentVariables[] | متغيرات البيئة التي سيتم تعيينها للاختبار (تنطبق فقط على اختبارات الأجهزة). |
systrace | تكوين Systrace للتشغيل. مهجور: استخدم Systrace Python 2 الذي تم إيقافه في 2020-01-01. لم يعد Systrace مدعومًا في Cloud Testing API، ولن يتم توفير ملف Systrace في النتائج. |
dontAutograntPermissions | ما إذا كان سيتم منع منح جميع أذونات وقت التشغيل عند تثبيت التطبيق |
ملف الجهاز
وصف ملف جهاز واحد.
تمثيل جيسون |
---|
{ // Union field |
مجالات | |
---|---|
device_file حقل الاتحاد file_file . مطلوب. يمكن أن يكون device_file واحدًا فقط مما يلي: | |
obbFile | إشارة إلى ملف blob ثنائي غير شفاف. |
regularFile | إشارة إلى ملف عادي. |
ملف Obb
ملف ثنائي كبير الحجم غير شفاف لتثبيته على الجهاز قبل بدء الاختبار.
تمثيل جيسون |
---|
{
"obbFileName": string,
"obb": {
object ( |
مجالات | |
---|---|
obbFileName | مطلوب. اسم ملف OBB الذي يجب أن يتوافق مع التنسيق المحدد بواسطة Android، على سبيل المثال [main|patch].0300110.com.example.android.obb والذي سيتم تثبيته في <shared-storage>/Android/obb/<package-name>/ على الجهاز. |
obb | مطلوب. ملف (ملفات) Blob Binary Blob (OBB) المعتمة لتثبيتها على الجهاز. |
مصدر المعلومات
مرجع إلى ملف، يستخدم لإدخالات المستخدم.
تمثيل جيسون |
---|
{ // Union field |
مجالات | |
---|---|
file ميداني للاتحاد . مطلوب. مرجع الملف. يمكن أن يكون file واحدًا مما يلي فقط: | |
gcsPath | مسار إلى ملف في Google Cloud Storage. مثال: gs://build-app-1414623860166/app%40debug-unaligned.apk من المتوقع أن تكون هذه المسارات مشفرة بعنوان URL (ترميز النسبة المئوية) |
الملف العادي
ملف أو دليل لتثبيته على الجهاز قبل بدء الاختبار.
تمثيل جيسون |
---|
{
"content": {
object ( |
مجالات | |
---|---|
content | مطلوب. الملف المصدر. |
devicePath | مطلوب. مكان وضع المحتوى على الجهاز. يجب أن يكون مسارًا مطلقًا ومُدرجًا في القائمة المسموح بها. إذا كان الملف موجودا، سيتم استبداله. تم إدراج الدلائل التالية من جانب الجهاز وأي من الدلائل الفرعية الخاصة بها في القائمة المسموح بها: ${EXTERNAL_STORAGE}، /sdcard، أو /storage ${ANDROID_DATA}/local/tmp أو /data/local/tmp تحديد مسار خارج أشجار الدليل هذه غير صالح. سيتم توفير المسارات /sdcard و/data ومعاملتها كبدائل مسار ضمنية. على سبيل المثال، إذا لم يتم تعيين /sdcard الموجود على جهاز معين إلى وحدة تخزين خارجية، فسيقوم النظام باستبداله ببادئة مسار التخزين الخارجي لذلك الجهاز ونسخ الملف هناك. يُنصح بشدة باستخدام واجهة برمجة تطبيقات البيئة في التطبيق واختبار التعليمات البرمجية للوصول إلى الملفات الموجودة على الجهاز بطريقة محمولة. |
APK
ملف حزمة Android للتثبيت.
تمثيل جيسون |
---|
{
"location": {
object ( |
مجالات | |
---|---|
location | المسار إلى APK المراد تثبيته على الجهاز قبل بدء الاختبار. |
packageName | حزمة جافا لـ APK المراد تثبيتها. يتم تحديد القيمة من خلال فحص بيان التطبيق. |
حساب
يحدد الحساب وكيفية تسجيل الدخول إليه.
تمثيل جيسون |
---|
{ // Union field |
مجالات | |
---|---|
حقل الاتحاد account_type . مطلوب. نوع الحساب، بناءً على الغرض منه (مثل Google) وآلية تسجيل الدخول الخاصة به (مثل اسم المستخدم وكلمة المرور). يمكن أن يكون account_type واحدًا فقط مما يلي: | |
googleAuto | حساب تسجيل دخول جوجل تلقائي. |
GoogleAuto
تمكين تسجيل الدخول التلقائي إلى حساب Google. في حالة تعيينها، تقوم الخدمة تلقائيًا بإنشاء حساب اختبار Google وإضافته إلى الجهاز، قبل تنفيذ الاختبار. لاحظ أنه قد يتم إعادة استخدام الحسابات التجريبية. تعرض العديد من التطبيقات مجموعة كاملة من الوظائف عند وجود حساب على الجهاز. يتيح تسجيل الدخول إلى الجهاز باستخدام هذه الحسابات التي تم إنشاؤها اختبار المزيد من الوظائف.
متغيرات البيئة
تم تمرير زوج القيمة الرئيسية كمتغير بيئة للاختبار.
تمثيل جيسون |
---|
{ "key": string, "value": string } |
مجالات | |
---|---|
key | مفتاح لمتغير البيئة. |
value | قيمة متغير البيئة. |
سيستراسيتوب
تمثيل جيسون |
---|
{ "durationSeconds": integer } |
مجالات | |
---|---|
durationSeconds | مدة Systrace بالثواني. ينبغي أن يكون بين 1 و 30 ثانية. 0 تعطيل النظام. |
IosTestSetup
وصف لكيفية إعداد جهاز iOS قبل إجراء الاختبار.
تمثيل جيسون |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
مجالات | |
---|---|
networkProfile | ملف تعريف حركة مرور الشبكة المستخدم لإجراء الاختبار. يمكن الاستعلام عن ملفات تعريف الشبكة المتوفرة باستخدام نوع البيئة NETWORK_CONFIGURATION عند استدعاء TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
additionalIpas[] | تطبيقات iOS المراد تثبيتها بالإضافة إلى تلك التي يتم اختبارها مباشرة. |
pushFiles[] | قائمة الملفات المطلوب دفعها إلى الجهاز قبل بدء الاختبار. |
pullDirectories[] | قائمة الدلائل الموجودة على الجهاز للتحميل إلى Cloud Storage في نهاية الاختبار. يجب أن تكون الأدلة إما في دليل مشترك (مثل /private/var/mobile/Media) أو ضمن دليل يمكن الوصول إليه داخل نظام ملفات التطبيق (مثل /Documents) عن طريق تحديد معرف الحزمة. |
IosDeviceFile
ملف أو دليل لتثبيته على الجهاز قبل بدء الاختبار.
تمثيل جيسون |
---|
{
"content": {
object ( |
مجالات | |
---|---|
content | الملف المصدر |
bundleId | معرف حزمة التطبيق حيث يوجد هذا الملف. تعمل تطبيقات iOS على تحديد نظام الملفات الخاص بها، لذلك يجب أن تحدد ملفات التطبيق التطبيق المثبت على الجهاز. |
devicePath | موقع الملف على الجهاز، داخل نظام ملفات وضع الحماية الخاص بالتطبيق |
AndroidInstrumentationTest
اختبار لتطبيق Android يمكنه التحكم في مكون Android بشكل مستقل عن دورة حياته العادية. تقوم اختبارات أجهزة Android بتشغيل ملف APK للتطبيق واختبار APK داخل نفس العملية على جهاز Android افتراضي أو فعلي. كما أنها تحدد فئة تشغيل الاختبار، مثل com.google.GoogleTestRunner، والتي يمكن أن تختلف وفقًا لإطار عمل الأجهزة المحدد الذي تم اختياره.
راجع https://developer.android.com/training/testing/fundamentals لمزيد من المعلومات حول أنواع اختبارات Android.
تمثيل جيسون |
---|
{ "testApk": { object ( |
مجالات | |
---|---|
testApk | مطلوب. ملف APK الذي يحتوي على رمز الاختبار المطلوب تنفيذه. |
appPackageId | حزمة جافا للتطبيق قيد الاختبار. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق. |
testPackageId | حزمة جافا للاختبار الذي سيتم تنفيذه. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق. |
testRunnerClass | فئة InstrumentationTestRunner. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق. |
testTargets[] | يجب أن يكون كل هدف مؤهلاً بالكامل باسم الحزمة أو اسم الفئة، بأحد هذه التنسيقات:
إذا كان فارغا، سيتم تشغيل كافة الأهداف في الوحدة. |
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 | خيار تشغيل الاختبارات في أجزاء متعددة بالتوازي. |
حقل الاتحاد app_under_test . مطلوب. يمكن أن يكون app_under_test واحدًا فقط مما يلي: | |
appApk | APK للتطبيق قيد الاختبار. |
appBundle | حزمة تطبيقات متعددة APK للتطبيق قيد الاختبار. |
AppBundle
تنسيق ملف Android App Bundle، الذي يحتوي على ملف BundleConfig.pb، أو دليل الوحدة الأساسية، أو صفر أو أكثر من أدلة وحدات الميزات الديناميكية.
راجع https://developer.android.com/guide/app-bundle/build للحصول على إرشادات حول إنشاء حزم التطبيقات.
تمثيل جيسون |
---|
{ // Union field |
مجالات | |
---|---|
bundle حقل الاتحاد. مطلوب. معلومات موقع الحزمة. يمكن أن تكون bundle واحدة فقط مما يلي: | |
bundleLocation | ملف .aab يمثل حزمة التطبيق قيد الاختبار. |
خيار الأوركسترا
يحدد كيفية تنفيذ الاختبار.
التعدادات | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | القيمة الافتراضية: سيختار الخادم الوضع. يعني حاليًا أنه سيتم تشغيل الاختبار بدون المنسق. في المستقبل، سيتم إجراء جميع اختبارات الأجهزة مع المنسق. يتم تشجيع استخدام المُنسق بشدة نظرًا لجميع المزايا التي يقدمها. |
USE_ORCHESTRATOR | قم بتشغيل الاختبار باستخدام المنسق. ** متوافق فقط مع الإصدار 1.1 من AndroidJUnitRunner أو أعلى! ** مُستَحسَن. |
DO_NOT_USE_ORCHESTRATOR | قم بتشغيل الاختبار دون استخدام المنسق. |
خيار المشاركة
خيارات لتمكين المشاركة.
تمثيل جيسون |
---|
{ // Union field |
مجالات | |
---|---|
يمكن أن يكون | |
uniformSharding | حالات اختبار الشظايا بشكل موحد مع إعطاء العدد الإجمالي للشظايا. |
manualSharding | حالات اختبار Shards في مجموعات محددة من الحزم و/أو الفئات و/أو الأساليب. |
smartSharding | اختبار Shards بناءً على سجلات توقيت حالة الاختبار السابقة. |
التقسيم الموحد
حالات اختبار الشظايا بشكل موحد مع إعطاء العدد الإجمالي للشظايا.
بالنسبة لاختبارات الأجهزة، ستتم ترجمتها إلى وسيطات AndroidJUnitRunner "-e numShard" و"-e shardIndex". مع تمكين التجزئة الموحدة، يكون تحديد أي من وسيطات التجزئة هذه عبر environmentVariables
غير صالح.
استنادًا إلى آلية التجزئة التي يستخدمها AndroidJUnitRunner، ليس هناك ما يضمن توزيع حالات الاختبار بشكل موحد عبر جميع الأجزاء.
تمثيل جيسون |
---|
{ "numShards": integer } |
مجالات | |
---|---|
numShards | مطلوب. إجمالي عدد القطع المراد إنشاؤها. ويجب أن يكون هذا دائمًا رقمًا موجبًا لا يزيد عن العدد الإجمالي لحالات الاختبار. عند تحديد جهاز فعلي واحد أو أكثر، يجب أن يكون عدد الأجزاء <= 50. عند تحديد جهاز ظاهري واحد أو أكثر من أجهزة ARM، يجب أن يكون العدد <= 200. عند تحديد أجهزة ظاهرية x86 فقط، يجب أن يكون العدد <= 500 . |
المشاركة اليدوية
حالات اختبار Shards في مجموعات محددة من الحزم و/أو الفئات و/أو الأساليب.
مع تمكين التجزئة اليدوية، يكون تحديد أهداف الاختبار عبر متغيرات البيئة أو في InstrumentationTest غير صالح.
تمثيل جيسون |
---|
{
"testTargetsForShard": [
{
object ( |
مجالات | |
---|---|
testTargetsForShard[] | مطلوب. مجموعة من الحزم و/أو الفئات و/أو طرق الاختبار التي سيتم تشغيلها لكل جزء تم إنشاؤه يدويًا. يجب عليك تحديد جزء واحد على الأقل في حالة وجود هذا الحقل. عند تحديد جهاز فعلي واحد أو أكثر، يجب أن يكون عدد testTargetsForShard المتكرر <= 50. عند تحديد واحد أو أكثر من أجهزة ARM الافتراضية، يجب أن يكون <= 200. عند تحديد أجهزة افتراضية x86 فقط، يجب أن يكون <= 500. |
TestTargetsForShard
أهداف الاختبار للشظية.
تمثيل جيسون |
---|
{ "testTargets": [ string ] } |
مجالات | |
---|---|
testTargets[] | مجموعة من الحزم والفئات و/أو طرق الاختبار التي سيتم تشغيلها لكل جزء. يجب تحديد الأهداف بتنسيق وسيطة AndroidJUnitRunner. على سبيل المثال، "حزمة com.my.packages" "فئة com.my.package.MyClass". يجب أن يكون عدد testTargets أكبر من 0. |
مشاركة ذكية
اختبار Shards بناءً على سجلات توقيت حالة الاختبار السابقة.
تمثيل جيسون |
---|
{ "targetedShardDuration": string } |
مجالات | |
---|---|
targetedShardDuration | مقدار الوقت الذي يجب أن تستغرقه الاختبارات داخل القطعة. الافتراضي: 300 ثانية (5 دقائق). الحد الأدنى المسموح به: 120 ثانية (دقيقتان). يتم تعيين عدد الأجزاء ديناميكيًا استنادًا إلى الوقت، وصولاً إلى الحد الأقصى للجزء (الموضح أدناه). لضمان حالة اختبار واحدة على الأقل لكل جزء، لن يتجاوز عدد الأجزاء عدد حالات الاختبار. سيتم تجاوز مدة الجزء إذا:
مدة المشاركة غير مضمونة لأن المشاركة الذكية تستخدم سجل حالة الاختبار والمدد الافتراضية التي قد لا تكون دقيقة. قواعد العثور على سجلات توقيت حالة الاختبار هي:
نظرًا لأن مدة الجزء الفعلية يمكن أن تتجاوز مدة الجزء المستهدفة، نوصي بتعيين القيمة المستهدفة على الأقل 5 دقائق أقل من الحد الأقصى المسموح به لمهلة الاختبار (45 دقيقة للأجهزة الفعلية و60 دقيقة للأجهزة الافتراضية)، أو استخدام الإعداد المخصص اختبار قيمة المهلة التي قمت بتعيينها. يتجنب هذا الأسلوب إلغاء الجزء قبل انتهاء كافة الاختبارات. لاحظ أن هناك حدًا أقصى لعدد القطع. عند تحديد جهاز فعلي واحد أو أكثر، يجب أن يكون عدد الأجزاء <= 50. عند تحديد جهاز ظاهري واحد أو أكثر من أجهزة ARM، يجب أن يكون العدد <= 200. عند تحديد أجهزة ظاهرية x86 فقط، يجب أن يكون العدد <= 500 لضمان حالة اختبار واحدة على الأقل لكل قطعة، لن يتجاوز عدد القطع عدد حالات الاختبار. يتم احتساب كل جزء يتم إنشاؤه ضمن حصة الاختبار اليومية. مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' |
androidRoboTest
اختبار لتطبيق Android يستكشف التطبيق على جهاز Android افتراضي أو فعلي، ويبحث عن الأسباب والأعطال أثناء حدوثه.
تمثيل جيسون |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
مجالات | |
---|---|
appPackageId | حزمة جافا للتطبيق قيد الاختبار. يتم تحديد القيمة الافتراضية من خلال فحص بيان التطبيق. |
appInitialActivity | النشاط الأولي الذي ينبغي استخدامه لبدء التطبيق. |
maxDepth | أقصى عمق لمكدس الاجتياز الذي يمكن لـ Robo استكشافه. يجب أن يكون عمرك 2 على الأقل ليتمكن Robo من استكشاف التطبيق بعد النشاط الأول. الافتراضي هو 50. |
maxSteps | الحد الأقصى لعدد الخطوات التي يمكن لـ Robo تنفيذها. الافتراضي ليس الحد. |
roboDirectives[] | مجموعة من التوجيهات التي يجب أن يطبقها Robo أثناء الزحف. يتيح ذلك للمستخدمين تخصيص عملية الزحف. على سبيل المثال، يمكن توفير اسم المستخدم وكلمة المرور لحساب اختباري. |
roboMode | الوضع الذي يجب أن يعمل فيه Robo. يجب أن يسمح معظم العملاء للخادم بملء هذا الحقل تلقائيًا. |
roboScript | ملف JSON يتضمن سلسلة من الإجراءات التي يجب على Robo تنفيذها كمقدمة للزحف. |
startingIntents[] | الأغراض المستخدمة لتشغيل التطبيق للزحف. إذا لم يتم توفير أي شيء، فسيتم إطلاق نشاط المشغل الرئيسي. إذا تم توفير بعضها، فسيتم إطلاق تلك المقدمة فقط (يجب توفير نشاط المشغل الرئيسي بشكل صريح). |
حقل الاتحاد app_under_test . مطلوب. يمكن أن يكون app_under_test واحدًا فقط مما يلي: | |
appApk | APK للتطبيق قيد الاختبار. |
appBundle | حزمة تطبيقات متعددة APK للتطبيق قيد الاختبار. |
RoboDirective
يوجه Robo للتفاعل مع عنصر واجهة مستخدم محدد إذا تمت مواجهته أثناء الزحف. حاليًا، يمكن لـ Robo إجراء إدخال نص أو النقر على العناصر.
تمثيل جيسون |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
مجالات | |
---|---|
resourceName | مطلوب. اسم مورد android لعنصر واجهة المستخدم المستهدف. على سبيل المثال، في Java: R.string.foo في ملف xml: @string/foo مطلوب الجزء "foo" فقط. الوثيقة المرجعية: https://developer.Android.com/guide/topics/resources/accessing-resources.html |
inputText | النص الذي تم توجيه Robo لتعيينه. إذا تركت فارغة، فسيتم التعامل مع التوجيه على أنه نقرة على العنصر المطابق لاسم المورد. |
actionType | مطلوب. نوع الإجراء الذي يجب على 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 |
مجالات | |
---|---|
timeout | المهلة بالثواني لكل نية. مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' |
حقل الاتحاد starting_intent . مطلوب. تفاصيل النية لبدء النشاط. يمكن أن يكون starting_intent واحدًا فقط مما يلي: | |
launcherActivity | نية تبدأ نشاط المشغل الرئيسي. |
startActivity | نية تبدأ نشاطًا بتفاصيل محددة. |
LauncherActivityIntent
يحدد نية تبدأ نشاط المشغل الرئيسي.
StartActivityIntent
نية البداية المحددة بواسطة الإجراء، وURI، والفئات.
تمثيل جيسون |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
مجالات | |
---|---|
action | اسم الفعل. مطلوب لـ START_ACTIVITY. |
uri | URI للإجراء. |
categories[] | فئات النوايا لتعيين النية. |
AndroidTestLoop
اختبار لتطبيق Android باستخدام حلقة اختبار. ستتم إضافة الهدف <intent-name> ضمنيًا، نظرًا لأن Games هي المستخدم الوحيد لواجهة برمجة التطبيقات هذه في الوقت الحالي.
تمثيل جيسون |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
مجالات | |
---|---|
appPackageId | حزمة جافا للتطبيق قيد الاختبار. يتم تحديد الإعداد الافتراضي من خلال فحص بيان التطبيق. |
scenarios[] | قائمة السيناريوهات التي يجب تشغيلها أثناء الاختبار. الافتراضي هو كل حلقات الاختبار، المستمدة من بيان التطبيق. |
scenarioLabels[] | قائمة تسميات السيناريو التي يجب تشغيلها أثناء الاختبار. يجب أن يتم تعيين تسميات السيناريو إلى التسميات المحددة في بيان التطبيق. على سبيل المثال، يضيف player_experience وcom.google.test.loops.player_experience جميع الحلقات المسمى في البيان باسم com.google.test.loops.player_experience إلى التنفيذ. يمكن أيضًا تحديد السيناريوهات في حقل السيناريوهات. |
حقل الاتحاد app_under_test . مطلوب. حزمة الروبوت للاختبار. يمكن أن يكون app_under_test واحدًا فقط مما يلي: | |
appApk | APK للتطبيق قيد الاختبار. |
appBundle | حزمة تطبيقات متعددة APK للتطبيق قيد الاختبار. |
IosXcTest
اختبار لتطبيق iOS يستخدم إطار عمل XCTest. يدعم Xcode خيار "الإنشاء للاختبار"، الذي ينشئ ملف .xctestrun الذي يحتوي على مواصفات الاختبار (الوسائط، وطرق الاختبار، وما إلى ذلك). يقبل نوع الاختبار هذا ملفًا مضغوطًا يحتوي على ملف .xctestrun والمحتويات المقابلة لدليل Build/Products الذي يحتوي على كافة الثنائيات اللازمة لتشغيل الاختبارات.
تمثيل جيسون |
---|
{ "testsZip": { object ( |
مجالات | |
---|---|
testsZip | مطلوب. ملف .zip الذي يحتوي على ملف .xctestrun ومحتويات دليل DerivedData/Build/Products. يتم تجاهل ملف .xctestrun الموجود في هذا الملف المضغوط إذا تم تحديد حقل xctestrun. |
xctestrun | ملف .xctestrun الذي سيتجاوز ملف .xctestrun في ملف مضغوط للاختبارات. نظرًا لأن الملف .xctestrun يحتوي على متغيرات البيئة بالإضافة إلى طرق الاختبار للتشغيل و/أو التجاهل، فقد يكون هذا مفيدًا لاختبارات التجزئة. الافتراضي مأخوذ من اختبارات الرمز البريدي. |
xcodeVersion | إصدار Xcode الذي يجب استخدامه للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. الإعدادات الافتراضية لأحدث إصدار Xcode الذي يدعمه Firebase Test Lab. |
appBundleId | الإخراج فقط. معرف الحزمة للتطبيق قيد الاختبار. |
testSpecialEntitlements | خيار اختبار استحقاقات التطبيق الخاصة. سيؤدي تعيين هذا إلى إعادة تسجيل التطبيق باستحقاقات خاصة بمعرف تطبيق صريح. يدعم حاليًا اختبار استحقاق aps-environment. |
IosTestLoop
اختبار لتطبيق iOS الذي ينفذ واحدًا أو أكثر من سيناريوهات حلقة اللعبة. يقبل نوع الاختبار هذا تطبيقًا مؤرشفًا (ملف .ipa) وقائمة من سيناريوهات الأعداد الصحيحة التي سيتم تنفيذها على التطبيق بالتسلسل.
تمثيل جيسون |
---|
{
"appIpa": {
object ( |
مجالات | |
---|---|
appIpa | مطلوب. .ipa للتطبيق للاختبار. |
scenarios[] | قائمة السيناريوهات التي يجب تشغيلها أثناء الاختبار. الإعدادات الافتراضية للسيناريو الفردي 0 إذا لم يتم تحديدها. |
appBundleId | الإخراج فقط. معرف الحزمة للتطبيق قيد الاختبار. |
بيئة ماتريكس
مصفوفة البيئات التي سيتم تنفيذ الاختبار فيها.
تمثيل جيسون |
---|
{ // Union field |
مجالات | |
---|---|
بيئة حقل الاتحاد_ environment_matrix . مطلوب. مصفوفة البيئة. يمكن أن تكون environment_matrix واحدة فقط مما يلي: | |
androidMatrix | مصفوفة من أجهزة أندرويد. |
androidDeviceList | قائمة أجهزة أندرويد؛ سيتم تشغيل الاختبار فقط على الأجهزة المحددة. |
iosDeviceList | قائمة أجهزة iOS. |
AndroidMatrix
يتم تحديد مجموعة من التباديل الخاصة بتكوين جهاز Android من خلال المنتج المتقاطع للمحاور المحددة. داخليًا، سيتم توسيع AndroidMatrix المحدد ليشمل مجموعة من أجهزة Android.
سيتم إنشاء مثيل التباديل المدعومة فقط. يتم تجاهل التباديل غير الصالح (على سبيل المثال، النماذج/الإصدارات غير المتوافقة).
تمثيل جيسون |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
مجالات | |
---|---|
androidModelIds[] | مطلوب. معرفات مجموعة أجهزة Android التي سيتم استخدامها. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
androidVersionIds[] | مطلوب. معرفات مجموعة إصدار نظام التشغيل Android المراد استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
locales[] | مطلوب. مجموعة اللغات التي سيقوم جهاز الاختبار بتمكينها للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
orientations[] | مطلوب. مجموعة التوجهات للاختبار بها. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
AndroidDeviceList
قائمة بتكوينات جهاز Android الذي سيتم تنفيذ الاختبار فيه.
تمثيل جيسون |
---|
{
"androidDevices": [
{
object ( |
مجالات | |
---|---|
androidDevices[] | مطلوب. قائمة أجهزة أندرويد. |
AndroidDevice
جهاز أندرويد واحد.
تمثيل جيسون |
---|
{ "androidModelId": string, "androidVersionId": string, "locale": string, "orientation": string } |
مجالات | |
---|---|
androidModelId | مطلوب. معرف جهاز Android الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
androidVersionId | مطلوب. معرف إصدار نظام التشغيل Android الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
locale | مطلوب. اللغة المحلية لجهاز الاختبار المستخدم للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
orientation | مطلوب. كيف يتم توجيه الجهاز أثناء الاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
IosDeviceList
قائمة بتكوينات جهاز iOS الذي سيتم تنفيذ الاختبار فيه.
تمثيل جيسون |
---|
{
"iosDevices": [
{
object ( |
مجالات | |
---|---|
iosDevices[] | مطلوب. قائمة أجهزة iOS. |
iOSDevice
جهاز iOS واحد.
تمثيل جيسون |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
مجالات | |
---|---|
iosModelId | مطلوب. معرف جهاز iOS الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
iosVersionId | مطلوب. معرف إصدار برنامج iOS الرئيسي الذي سيتم استخدامه. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
locale | مطلوب. اللغة المحلية لجهاز الاختبار المستخدم للاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
orientation | مطلوب. كيف يتم توجيه الجهاز أثناء الاختبار. استخدم TestEnvironmentDiscoveryService للحصول على الخيارات المدعومة. |
تنفيذ اختبار
اختبار واحد يتم تنفيذه في بيئة واحدة.
تمثيل جيسون |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
مجالات | |
---|---|
id | الإخراج فقط. معرف فريد تم تعيينه بواسطة الخدمة. |
matrixId | الإخراج فقط. معرف المحتوي على TestMatrix. |
projectId | الإخراج فقط. المشروع السحابي الذي يملك تنفيذ الاختبار. |
testSpecification | الإخراج فقط. كيفية إجراء الاختبار. |
shard | الإخراج فقط. تفاصيل عن الشق. |
environment | الإخراج فقط. كيف يتم تكوين الجهاز (الأجهزة) المضيفة. |
state | الإخراج فقط. يشير إلى التقدم الحالي في تنفيذ الاختبار (على سبيل المثال، انتهى). |
toolResultsStep | الإخراج فقط. حيث تتم كتابة نتائج هذا التنفيذ. |
timestamp | الإخراج فقط. الوقت الذي تم فيه إنشاء تنفيذ الاختبار هذا في البداية. طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانو ثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
testDetails | الإخراج فقط. تفاصيل إضافية حول اختبار التشغيل. |
شظية
الإخراج فقط. تفاصيل عن الشق.
تمثيل جيسون |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
مجالات | |
---|---|
shardIndex | الإخراج فقط. فهرس الكسرة بين كل الكسور. |
numShards | الإخراج فقط. العدد الإجمالي للشظايا. |
testTargetsForShard | الإخراج فقط. أهداف الاختبار لكل قطعة. تم تعيينه فقط للمشاركة اليدوية. |
estimatedShardDuration | الإخراج فقط. مدة القطعة المقدرة بناءً على سجلات توقيت حالة الاختبار السابقة، إذا كانت متوفرة. مدة بالثواني تصل إلى تسعة أرقام كسرية، وتنتهي بـ ' |
بيئة
البيئة التي يتم فيها إجراء الاختبار.
تمثيل جيسون |
---|
{ // Union field |
مجالات | |
---|---|
environment ميدان الاتحاد . مطلوب. البيئة. environment يمكن أن تكون واحدة فقط مما يلي: | |
androidDevice | جهاز Android يجب استخدامه مع اختبار Android. |
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 | الإخراج فقط. المشروع السحابي الذي يمتلك خطوة نتائج الأداة. |
historyId | الإخراج فقط. معرف سجل نتائج الأداة. |
executionId | الإخراج فقط. معرف تنفيذ نتائج الأداة. |
stepId | الإخراج فقط. معرف خطوة نتائج الأداة. |
تفاصيل الاختبار
تفاصيل إضافية حول التقدم في اختبار التشغيل.
تمثيل جيسون |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
مجالات | |
---|---|
progressMessages[] | الإخراج فقط. وصف تفصيلي يمكن قراءته بواسطة الإنسان لتقدم الاختبار. على سبيل المثال: "توفير جهاز"، "بدء الاختبار". أثناء التنفيذ، قد يتم إلحاق بيانات جديدة بنهاية رسائل التقدم. |
errorMessage | الإخراج فقط. إذا كانت حالة الاختبار خطأ، فستحتوي هذه السلسلة على تفاصيل يمكن قراءتها بواسطة الإنسان حول الخطأ. |
تخزين النتائج
المواقع التي يتم فيها تخزين نتائج إجراء الاختبار.
تمثيل جيسون |
---|
{ "googleCloudStorage": { object ( |
مجالات | |
---|---|
googleCloudStorage | مطلوب. |
toolResultsHistory | سجل نتائج الأداة الذي يحتوي على تنفيذ نتائج الأداة التي تتم كتابة النتائج إليها. إذا لم يتم توفيرها، سيتم اختيار الخدمة القيمة المناسبة. |
toolResultsExecution | الإخراج فقط. تنفيذ نتائج الأداة التي تتم كتابة النتائج عليها. |
resultsUrl | الإخراج فقط. عنوان URL للنتائج في Firebase Web Console. |
جوجل كلاودستوراج
موقع تخزين داخل Google Cloud Storage (GCS).
تمثيل جيسون |
---|
{ "gcsPath": string } |
مجالات | |
---|---|
gcsPath | مطلوب. المسار إلى الدليل في GCS الذي سيحتوي في النهاية على نتائج هذا الاختبار. يجب أن يكون لدى المستخدم الطالب حق الوصول للكتابة على المجموعة الموجودة في المسار المتوفر. |
ToolResultsHistory
يمثل مورد سجل نتائج الأداة.
تمثيل جيسون |
---|
{ "projectId": string, "historyId": string } |
مجالات | |
---|---|
projectId | مطلوب. المشروع السحابي الذي يمتلك سجل نتائج الأداة. |
historyId | مطلوب. معرف سجل نتائج الأداة. |
ToolResultsExecution
يمثل مورد تنفيذ نتائج الأداة.
هذا لديه نتائج TestMatrix.
تمثيل جيسون |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
مجالات | |
---|---|
projectId | الإخراج فقط. المشروع السحابي الذي يمتلك الأداة يؤدي إلى التنفيذ. |
historyId | الإخراج فقط. معرف سجل نتائج الأداة. |
executionId | الإخراج فقط. معرف تنفيذ نتائج الأداة. |
تفاصيل مصفوفة غير صالحة
السبب التفصيلي لاعتبار المصفوفة غير صالحة.
التعدادات | |
---|---|
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 الاختباري على فئة عداء الاختبار المحددة من قبل المستخدم أو في ملف البيان. يمكن أن يكون سبب ذلك أحد الأسباب التالية:
|
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 | كان تشغيل مصفوفة الاختبار ناجحًا، على سبيل المثال:
|
FAILURE | فشل التشغيل، على سبيل المثال:
|
INCONCLUSIVE | حدث شيء غير متوقع. يجب أن يظل التشغيل غير ناجح ولكن من المحتمل أن تكون هذه مشكلة عابرة وقد تكون إعادة تشغيل الاختبار ناجحة. |
SKIPPED | تم تخطي كافة الاختبارات، على سبيل المثال:
|
طُرق | |
---|---|
| يلغي عمليات تنفيذ الاختبار غير المكتملة في مصفوفة الاختبار. |
| إنشاء وتشغيل مصفوفة من الاختبارات وفقًا للمواصفات المحددة. |
| التحقق من حالة مصفوفة الاختبار وعمليات التنفيذ بمجرد إنشائها. |