- المصدر: TestMatrix
- ClientInfo
- ClientInfoDetail (معلومات العميل)
- TestSpecification
- اختبار الإعداد
- DeviceFile
- ObbFile
- FileReference
- GeneralFile (ملف عادي)
- حِزمة APK
- الحساب
- GoogleAuto
- EnvironmentVariable
- SystraceSetup
- IosTestSetup
- IosDeviceFile
- اختبار AndroidinstrumentationTest
- AppBundle
- OrchestratorOption
- ShardingOption
- التقسيم الموحَّد
- التقسيم اليدوي
- TestTargetsForShard
- التقسيم الذكي
- AndroidRoboTest
- RoboDirective
- RoboActionType
- RoboMode
- RoboStartIntent
- LauncherActivityIntent
- StartActivityIntent
- NoActivityIntent
- AndroidTestLoop
- IosXcTest
- IosTestLoop
- IosRoboTest
- EnvironmentMatrix
- مصفوفة Android
- AndroidDeviceList
- IosDeviceList
- جهاز IosDevice
- تنفيذ الاختبار
- الجزء
- البيئة
- TestState
- خطوة نتائج الأدوات
- TestDetails
- مساحة تخزين النتائج
- GoogleCloudStorage
- سجلّ نتائج الأدوات
- تنفيذ نتائج الأدوات
- ValidMatrixDetails
- MatrixErrorDetail
- ملخّص النتائج
- الطُرق
المرجع: TestMatrix
تجمع TestMatrix جميع التفاصيل المتعلقة بالاختبار. فهي تحتوي على تهيئة البيئة ومواصفات الاختبار وعمليات تنفيذ الاختبار والحالة العامة والنتائج.
تمثيل JSON |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
الحقول | |
---|---|
testMatrixId |
النتائج فقط. المعرّف الفريد الذي تحدّده الخدمة |
projectId |
يشير ذلك المصطلح إلى المشروع على السحابة الإلكترونية الذي يملك مصفوفة الاختبار. |
clientInfo |
معلومات عن العميل الذي استدعى الاختبار. |
testSpecification |
مطلوب. كيفية إجراء الاختبار. |
environmentMatrix |
مطلوب. الأجهزة التي يتم إجراء الاختبارات عليها. |
testExecutions[] |
النتائج فقط. قائمة بعمليات تنفيذ الاختبار التي تنشئها الخدمة لهذه المصفوفة. |
resultStorage |
مطلوب. حيث تتم كتابة نتائج المصفوفة. |
state |
النتائج فقط. تشير إلى التقدم الحالي لمصفوفة الاختبار. |
timestamp |
النتائج فقط. الوقت الذي تم فيه إنشاء مصفوفة الاختبار هذه في البداية. طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
invalidMatrixDetails |
النتائج فقط. تصف سبب اعتبار المصفوفة غير صالحة. تكون مفيدة فقط للمصفوفات التي تكون في الحالة "غير صالحة". |
extendedInvalidMatrixDetails[] |
النتائج فقط. تفاصيل حول سبب اعتبار المصفوفة غير صالحة. إذا كان من الممكن إجراء عدة عمليات فحص بأمان، سيتم الإبلاغ عنها ولكن لا يجب وضع أي افتراضات حول طول هذه القائمة. |
flakyTestAttempts |
عدد المرّات التي يجب فيها إعادة محاولة إجراء اختبار TestExecution في حال تعذّر حلّ حالة واحدة أو أكثر من حالات الاختبار الخاصة به لأي سبب من الأسباب. الحدّ الأقصى لعدد عمليات إعادة التشغيل المسموح به هو 10. القيمة التلقائية هي 0، ما يعني عدم إعادة التشغيل. |
outcomeSummary |
النتائج فقط. النتيجة الإجمالية للاختبار. يتم ضبط السياسة فقط في حال تم الانتهاء من حالة مصفوفة الاختبار. |
failFast |
إذا كانت القيمة هي true، سيتم إجراء محاولة واحدة فقط على الأكثر لتشغيل كل عملية تنفيذ/جزء في المصفوفة. ولا تتأثر محاولات الاختبار غير المستقرة. في العادة، يتم إجراء محاولتين أو أكثر في حالة اكتشاف مشكلة محتملة في البنية الأساسية. هذه الميزة مخصّصة لأعباء العمل الحسّاسة لوقت الاستجابة. وقد تكون نسبة إخفاقات التنفيذ أكبر بكثير في المصفوفات ذات السرعة العالية، كما أن الدعم يكون محدودًا بسبب هذا التوقع. |
ClientInfo
معلومات عن العميل الذي استدعى الاختبار.
تمثيل JSON |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
الحقول | |
---|---|
name |
مطلوب. اسم العميل، مثل gcloud. |
clientInfoDetails[] |
تمثّل هذه السمة قائمة بالمعلومات التفصيلية حول العميل. |
ClientInfoDetail (معلومات العميل)
زوج المفتاح/القيمة من المعلومات التفصيلية عن العميل الذي استدعى الاختبار. أمثلة: {'Version', '1.0'}، {'Release Track', 'BETA'}.
تمثيل JSON |
---|
{ "key": string, "value": string } |
الحقول | |
---|---|
key |
مطلوب. تمثّل هذه السمة مفتاح معلومات العميل التفصيلية. |
value |
مطلوب. قيمة المعلومات التفصيلية عن العميل. |
مواصفات الاختبار
تمثّل هذه السمة وصفًا لطريقة إجراء الاختبار.
تمثيل JSON |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
الحقول | |
---|---|
testTimeout |
يُسمح بالحد الأقصى لمدة تنفيذ الاختبار قبل إلغائه تلقائيًا. القيمة التلقائية هي 5 دقائق. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
disableVideoRecording |
لإيقاف تسجيل الفيديو. قد يقلّل هذا الخيار من وقت استجابة الاختبار. |
disablePerformanceMetrics |
لإيقاف تسجيل مقاييس الأداء. قد يقلّل هذا الخيار من وقت استجابة الاختبار. |
حقل الاتحاد setup . اختبار متطلبات الإعداد يمكن أن يكون setup واحدًا فقط مما يلي: |
|
testSetup |
اختبار متطلبات إعداد Android، على سبيل المثال الملفات لتثبيتها، والنصوص البرمجية التمهيدية. |
iosTestSetup |
اختبار متطلبات الإعداد لنظام التشغيل iOS |
حقل الاتحاد test . مطلوب. تمثّل هذه السمة نوع الاختبار المطلوب إجراؤه. يمكن أن يكون test واحدًا فقط مما يلي: |
|
androidInstrumentationTest |
اختبار قياس حالة Android |
androidRoboTest |
اختبار robo على Android |
androidTestLoop |
تطبيق Android يتضمّن حلقة اختبار. |
iosXcTest |
XCTest لنظام التشغيل iOS، عبر ملف xctestrun. |
iosTestLoop |
تطبيق iOS يتضمّن حلقة اختبار. |
iosRoboTest |
اختبار Robo على أجهزة iOS |
اختبار الإعداد
وصف لطريقة إعداد جهاز Android قبل إجراء الاختبار
تمثيل JSON |
---|
{ "filesToPush": [ { object ( |
الحقول | |
---|---|
filesToPush[] |
قائمة بالملفات المطلوب إرسالها إلى الجهاز قبل بدء الاختبار. |
directoriesToPull[] |
قائمة بالأدلة على الجهاز المراد تحميلها إلى خدمة GCS في نهاية الاختبار ويجب أن تكون مسارات مطلقة ضمن /sdcard أو /storage أو /data/local/tmp. تقتصر أسماء المسارات على الأحرف a-z A-Z 0-9 _ - . + و / ملاحظة: سيتم توفير المسارات /sdcard و /البيانات وسيتم التعامل معها على أنّها بدائل ضمنية للمسارات. مثلاً: في حال عدم ربط /sdcard على جهاز معيّن بمساحة تخزين خارجية، سيستبدلها النظام ببادئة مسار التخزين الخارجي لذلك الجهاز. |
initialSetupApks[] |
هذه السمة اختيارية. حِزم APK التي يتم إعدادها بشكلٍ أوّلي كي يتم تثبيتها قبل تثبيت التطبيق الذي يخضع للاختبار الحد الأقصى حاليًا هو 100 |
additionalApks[] |
حِزم APK المراد تثبيتها بالإضافة إلى التطبيقات التي يتم اختبارها مباشرةً. سيتم تثبيتها بعد اختبار التطبيق. الحد الأقصى حاليًا هو 100 |
account |
سيتم تسجيل دخول الجهاز إلى هذا الحساب طوال مدة الاختبار. |
networkProfile |
ملف تعريف حركة بيانات الشبكة المستخدَم لإجراء الاختبار. يمكن البحث عن الملفات الشخصية المتاحة للشبكة باستخدام نوع البيئة NETWORK_CONFIGURATION عند استدعاء TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
environmentVariables[] |
متغيرات البيئة المطلوب ضبطها للاختبار (ينطبق فقط على اختبارات قياس حالة التطبيق) |
systrace |
إعدادات Systrace للتشغيل متوقّفة نهائيًا: استخدمت Systrace لغة Python 2 التي تم إيقافها نهائيًا في 01-01-2020. لم يعُد Systrace متوافقًا مع Cloud Testing API، ولن يتم تقديم أي ملف Systrace في النتائج. |
dontAutograntPermissions |
تحديد ما إذا كان سيتم منح جميع أذونات وقت التشغيل عند تثبيت التطبيق |
ملف الجهاز
وصف ملف على جهاز واحد
تمثيل JSON |
---|
{ // Union field |
الحقول | |
---|---|
حقل الاتحاد device_file . مطلوب. يمكن أن يكون device_file واحدًا فقط مما يلي: |
|
obbFile |
مرجع إلى ملف ثنائي كبير ثنائي غير شفاف. |
regularFile |
مرجع لملف عادي. |
ملف ObbFile
يشير ذلك المصطلح إلى ملف ثنائي غير شفاف يجب تثبيته على الجهاز قبل بدء الاختبار.
تمثيل JSON |
---|
{
"obbFileName": string,
"obb": {
object ( |
الحقول | |
---|---|
obbFileName |
مطلوب. اسم ملف OBB الذي يجب أن يتوافق مع التنسيق المحدّد بواسطة Android، مثلاً [main|patch].0300110.com.example.android.obb الذي سيتم تثبيته في <shared-storage>/Android/obb/<package-name>/ على الجهاز. |
obb |
مطلوب. ملفات Blob الثنائية المعتمة (OBB) المطلوب تثبيتها على الجهاز. |
مرجع الملف
يشير إلى مرجع لملف يُستخدَم لإدخالات المستخدمين.
تمثيل JSON |
---|
{ // Union field |
الحقول | |
---|---|
حقل الاتحاد file . مطلوب. مرجع الملف. يمكن أن يكون file واحدًا فقط مما يلي: |
|
gcsPath |
مسار إلى ملف في Google Cloud Storage. مثال: gs://build-app-1414623860166/app%40debug-unaligned.apk من المتوقّع أن تكون هذه المسارات بترميز عناوين URL (ترميز بنسبة مئوية). |
ملف عادي
ملف أو دليل مطلوب تثبيته على الجهاز قبل بدء الاختبار
تمثيل JSON |
---|
{
"content": {
object ( |
الحقول | |
---|---|
content |
مطلوب. ملف المصدر |
devicePath |
مطلوب. مكان وضع المحتوى على الجهاز يجب أن يكون مسارًا مطلقًا مُدرجًا في القائمة المسموح بها. إذا كان الملف موجودًا، سيتم استبداله. يتم إدراج الأدلة التالية من جهة الجهاز وأي من أدلتها الفرعية في القائمة المسموح بها: ${EXTERNAL_STORAGE} أو /sdcard أو /storage ${ANDROID_DATA}/local/tmp أو /data/local/tmp إنّ تحديد مسار خارج مجموعات الأشجار هذه غير صالح. سيتم توفير المسارات /sdcard و /البيانات وسيتم التعامل معها على أنّها بدائل ضمنية للمسارات. مثلاً: في حال عدم ربط /sdcard على جهاز معيّن بمساحة تخزين خارجية، سيستبدلها النظام ببادئة مسار التخزين الخارجي لذلك الجهاز وينسخ الملف إليها. ننصح بشدة باستخدام Environment API في التطبيق واختبار الرمز للوصول إلى الملفات على الجهاز بطريقة قابلة للنقل. |
APK
ملف حزمة Android للتثبيت.
تمثيل JSON |
---|
{
"location": {
object ( |
الحقول | |
---|---|
location |
المسار إلى حزمة APK المراد تثبيتها على الجهاز قبل بدء الاختبار |
packageName |
حزمة جافا لحِزمة APK المطلوب تثبيتها ويتم تحديد القيمة من خلال فحص بيان التطبيق. |
الحساب
يحدد حسابًا وكيفية تسجيل الدخول إليه.
تمثيل JSON |
---|
{ // Union field |
الحقول | |
---|---|
حقل الاتحاد account_type . مطلوب. نوع الحساب، استنادًا إلى الغرض منه (على سبيل المثال، Google) وآلية تسجيل الدخول الخاصة به (مثل اسم المستخدم وكلمة المرور). يمكن أن يكون account_type واحدًا فقط مما يلي: |
|
googleAuto |
حساب تسجيل دخول تلقائي إلى Google. |
GoogleAuto
لا يحتوي هذا النوع على أي حقول.
لتفعيل تسجيل الدخول التلقائي إلى حساب Google. في حال ضبط هذه السياسة، تُنشئ الخدمة تلقائيًا حسابًا تجريبيًا على Google وتضيفه إلى الجهاز قبل إجراء الاختبار. ويُرجى العِلم بأنّه قد تتم إعادة استخدام الحسابات الاختبارية. تعرض العديد من التطبيقات مجموعتها الكاملة من الوظائف عند توفّر حساب على الجهاز. يسمح تسجيل الدخول إلى الجهاز باستخدام هذه الحسابات التي تم إنشاؤها باختبار المزيد من الوظائف.
متغيّر البيئة
يتم تمرير زوج المفتاح/القيمة كمتغير بيئي إلى الاختبار.
تمثيل JSON |
---|
{ "key": string, "value": string } |
الحقول | |
---|---|
key |
مفتاح لمتغيّر البيئة. |
value |
قيمة متغيّر البيئة |
إعداد النظام
تمثيل JSON |
---|
{ "durationSeconds": integer } |
الحقول | |
---|---|
durationSeconds |
مدة النظام بالثواني. يجب أن تتراوح المدة بين ثانية واحدة و30 ثانية. 0 توقف تتبع النظام. |
إعداد IosTest
وصف لطريقة إعداد جهاز iOS قبل إجراء الاختبار
تمثيل JSON |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
الحقول | |
---|---|
networkProfile |
ملف تعريف حركة بيانات الشبكة المستخدَم لإجراء الاختبار. يمكن البحث عن الملفات الشخصية المتاحة للشبكة باستخدام نوع البيئة NETWORK_CONFIGURATION عند استدعاء TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
additionalIpas[] |
تطبيقات iOS التي يجب تثبيتها بالإضافة إلى التطبيقات التي يتم اختبارها مباشرةً |
pushFiles[] |
قائمة بالملفات المطلوب إرسالها إلى الجهاز قبل بدء الاختبار. |
pullDirectories[] |
قائمة بالأدلة على الجهاز المطلوب تحميلها إلى Cloud Storage في نهاية الاختبار. يجب أن تكون الأدلة إما في دليل مشترك (مثل /private/var/mobile/Media) أو داخل دليل يمكن الوصول إليه داخل نظام ملفات التطبيق (مثل /Documents) من خلال تحديد معرّف الحزمة. |
ملف IosDevice
ملف أو دليل مطلوب تثبيته على الجهاز قبل بدء الاختبار
تمثيل JSON |
---|
{
"content": {
object ( |
الحقول | |
---|---|
content |
الملف المصدر |
bundleId |
رقم تعريف حزمة التطبيق الذي يتوفّر فيه هذا الملف تضع تطبيقات iOS وضع الحماية في نظام الملفات الخاص بها، لذلك يجب أن تحدِّد ملفات التطبيقات التطبيق المثبَّت على الجهاز. |
devicePath |
موقع الملف على الجهاز، داخل نظام ملفات التطبيق في وضع الحماية |
اختبار Androidمرحبًا
يشير ذلك المصطلح إلى اختبار لتطبيق Android يمكنه التحكّم في أحد مكوّنات Android بشكل مستقل عن مراحل حياته الطبيعية. تُجري اختبارات قياس حالة Android حزمة APK للتطبيق وتختبر حزمة APK داخل العملية نفسها على جهاز Androidافتراضي أو مادي. كما يحددون فئة عدّاء الاختبار، مثل com.google.GoogleTestRunner، والتي يمكن أن تختلف في إطار عمل الأدوات المحدد الذي تم اختياره.
يمكنك الانتقال إلى https://developer.android.com/training/testing/Fundamentals لمعرفة المزيد من المعلومات حول أنواع اختبارات Android.
تمثيل JSON |
---|
{ "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"، يحتوي على ملف BundleConfig.pb أو دليل الوحدة الأساسية أو أدلة لوحدات الميزات الديناميكية أو صفر أو أكثر
يمكنك الانتقال إلى https://developer.android.com/guide/app-bundle/build للحصول على إرشادات حول إنشاء حِزم التطبيقات.
تمثيل JSON |
---|
{ // Union field |
الحقول | |
---|---|
حقل الاتحاد bundle . مطلوب. معلومات الموقع الجغرافي للحِزمة يمكن أن يكون bundle واحدًا فقط مما يلي: |
|
bundleLocation |
ملف .aab يمثّل حِزمة التطبيق قيد الاختبار. |
خيار الأوركسترا
تحدّد هذه السمة طريقة تنفيذ الاختبار.
تعدادات | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED |
القيمة التلقائية: سيختار الخادم الوضع. يشير ذلك حاليًا إلى أنّ الاختبار سيُجري بدون تحديد التنسيق. في المستقبل، سيتم إجراء جميع اختبارات الأدوات مع المسؤول عن التنظيم. يُنصح بشدة باستخدام الأوركسترا نظرًا إلى جميع الفوائد التي يقدمها. |
USE_ORCHESTRATOR |
قم بإجراء الاختبار باستخدام الأوركسترا. ** متوافق فقط مع الإصدار 1.1 من AndroidJUnitRunner أو الإصدارات الأحدث. ** يُنصح به. |
DO_NOT_USE_ORCHESTRATOR |
يمكنك إجراء الاختبار بدون الاستعانة بمنظّم. |
خيار التقسيم إلى أجزاء
خيارات تفعيل عملية التقسيم إلى أجزاء
تمثيل JSON |
---|
{ // Union field |
الحقول | |
---|---|
حقل الاتحاد يمكن أن يكون |
|
uniformSharding |
يُقسم حالات الاختبار بشكل موحّد بناءً على إجمالي عدد الأجزاء. |
manualSharding |
تقسّم الأجزاء الحالات إلى مجموعات محددة من الحزم و/أو الفئات و/أو الطرق. |
smartSharding |
يتم اختبار الأجزاء استنادًا إلى سجلّات توقيت حالات الاختبار السابقة. |
تقسيم موحَّد
يُقسم حالات الاختبار بشكل موحّد بناءً على إجمالي عدد الأجزاء.
بالنسبة إلى اختبارات قياس حالة التطبيق، ستتم ترجمة النص إلى " -e numShard" و"-e shardIndex" وسيطات AndroidJUnitRunner. عند تفعيل عملية التقسيم الموحّدة، يكون تحديد أي من هذه الوسيطات المقسَّمة عبر environmentVariables
غير صالح.
واستنادًا إلى آلية التقسيم التي يستخدمها AndroidJUnitRunner، ليس هناك ما يضمن توزيع حالات الاختبار بشكل موحد على جميع الأجزاء.
تمثيل JSON |
---|
{ "numShards": integer } |
الحقول | |
---|---|
numShards |
مطلوب. إجمالي عدد الأجزاء المراد إنشاؤها. ويجب أن يكون دائمًا عددًا موجبًا لا يزيد عن إجمالي عدد حالات الاختبار. عند اختيار جهاز مادي واحد أو أكثر، يجب أن يكون عدد الأجزاء <= 50. عند اختيار جهاز افتراضي واحد أو أكثر من أجهزة ARM الافتراضية، يجب أن يكون العدد <= 200. عند اختيار أجهزة افتراضية بحجم x86 فقط، يجب أن تكون القيمة أقل من أو يساوي 500. |
التقسيم اليدوي
تقسّم الأجزاء الحالات إلى مجموعات محددة من الحزم و/أو الفئات و/أو الطرق.
وفي حال تفعيل التقسيم اليدوي، يكون تحديد أهداف الاختبار باستخدام متغيّرات البيئة أو في أداة اختبار الأدوات غير صالح.
تمثيل JSON |
---|
{
"testTargetsForShard": [
{
object ( |
الحقول | |
---|---|
testTargetsForShard[] |
مطلوب. مجموعة من الحِزم و/أو الفئات و/أو طرق الاختبار التي سيتم تشغيلها لكل جزء يتم إنشاؤه يدويًا يجب تحديد جزء واحد على الأقل في حالة وجود هذا الحقل. عند اختيار جهاز فعلي واحد أو أكثر، يجب أن يكون عدد مرات تكرار testTargetsForShard أقل من أو تساوي 50. عند اختيار جهاز افتراضي واحد أو أكثر من أجهزة ARM الافتراضية، يجب أن يكون العدد <= 200. عند اختيار أجهزة افتراضية بحجم x86 فقط، يجب أن تكون القيمة أقل من أو يساوي 500. |
TestTargetsForShard
أهداف اختبارية للجزء
تمثيل JSON |
---|
{ "testTargets": [ string ] } |
الحقول | |
---|---|
testTargets[] |
مجموعة من الحزم و/أو الفئات و/أو طرق الاختبار التي سيتم تشغيلها لكل جزء. يجب تحديد الأهداف بتنسيق الوسيطة AndroidJUnitRunner. على سبيل المثال، "package com.my.packages" "class com.my.package.MyClass". يجب أن يكون عدد testTargets أكبر من 0. |
التقسيم الذكي
يتم اختبار الأجزاء استنادًا إلى سجلّات توقيت حالات الاختبار السابقة.
تمثيل JSON |
---|
{ "targetedShardDuration": string } |
الحقول | |
---|---|
targetedShardDuration |
مقدار الوقت الذي يجب أن تستغرقه الاختبارات ضمن الجزء. الإعدادات التلقائية: 300 ثانية (5 دقائق). الحدّ الأدنى المسموح به: 120 ثانية (دقيقتان). يتم تعيين عدد الأجزاء ديناميكيًا استنادًا إلى الوقت، وصولاً إلى الحد الأقصى للأجزاء (الموضح أدناه). لضمان حالة اختبار واحدة على الأقل لكل جزء، لن يتجاوز عدد الأجزاء عدد حالات الاختبار. سيتم تجاوز مدة الأجزاء في الحالات التالية:
مدة الأجزاء غير مضمونة لأن التقسيم الذكي يستخدم سجلّ حالات الاختبار والمدد التلقائية التي قد لا تكون دقيقة. قواعد العثور على سجلات توقيت حالة الاختبار هي:
ونظرًا لأن مدة الجزء الفعلية يمكن أن تتجاوز مدة الجزء المستهدف، ننصحك بضبط القيمة المستهدفة على أقل من 5 دقائق على الأقل عن الحد الأقصى المسموح به لمهلة الاختبار (45 دقيقة للأجهزة الفعلية و60 دقيقة للأجهزة الافتراضية)، أو باستخدام القيمة المخصّصة لمهلة الاختبار التي حددتها. تعمل هذه الطريقة على تجنب إلغاء الجزء قبل اكتمال جميع الاختبارات. تجدر الإشارة إلى أنّ هناك حدًا أقصى لعدد الأجزاء. عند اختيار جهاز مادي واحد أو أكثر، يجب أن يكون عدد الأجزاء <= 50. عند اختيار جهاز افتراضي واحد أو أكثر من أجهزة ARM الافتراضية، يجب أن يكون العدد <= 200. عند اختيار أجهزة افتراضية بحجم x86 فقط، يجب أن تكون القيمة أقل من أو يساوي 500. لضمان حالة اختبار واحدة على الأقل لكل جزء، لن يتجاوز عدد الأجزاء عدد حالات الاختبار. يتم احتساب كل جزء يتم إنشاؤه ضمن حصة الاختبار اليومية. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
AndroidRoboTest
يشير ذلك المصطلح إلى اختبار لأحد تطبيقات Android، حيث يستكشف التطبيق على جهاز Android افتراضي أو فعلي لرصد الجانيين والأعطال أثناء حدوثه.
تمثيل JSON |
---|
{ "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 تنفيذ إدخال نص أو النقر على العنصر.
تمثيل JSON |
---|
{
"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 |
النص الذي تم توجيه روبو لإعداده. إذا تُرك هذا الحقل فارغًا، فسيتم التعامل مع الأمر على أنه نقرة على العنصر المطابق لـ مباشرة name. |
actionType |
مطلوب. نوع الإجراء الذي يجب أن ينفذه Robo على العنصر المحدد. |
نوع الإجراء RoboActionType
الإجراءات التي يمكن لنظام Robo تنفيذها على عناصر واجهة المستخدم
تعدادات | |
---|---|
ACTION_TYPE_UNSPECIFIED |
يُرجى عدم استخدامها. لإصدارات Proto فقط. |
SINGLE_CLICK |
يمكنك توجيه Robo للنقر على العنصر المحدّد. لا يعمل إذا كان العنصر المحدد غير قابل للنقر. |
ENTER_TEXT |
يمكنك توجيه Robo لإدخال نص على العنصر المحدّد. لا يمكن الاختيار إذا لم يتم تفعيل العنصر المحدد أو إذا كان لا يسمح بإدخال النص. |
IGNORE |
توجيه Robo إلى تجاهل التفاعلات مع عنصر معيّن. |
وضع RoboMode
الوضع الذي يجب أن يعمل به Robo
تعدادات | |
---|---|
ROBO_MODE_UNSPECIFIED |
وهذا يعني أنه على الخادم اختيار الوضع. يُنصح به. |
ROBO_VERSION_1 |
تشغيل Robo في وضع UIAutomator فقط بدون إعادة إيقاف التطبيق |
ROBO_VERSION_2 |
تشغيل Robo في قهوة الإسبريسو العادية باستخدام الإجراء الاحتياطي UIAutomator |
نية بدء Robo التحكّم
رسالة لتحديد أنشطة البدء المراد الزحف إليها
تمثيل JSON |
---|
{ "timeout": string, // Union field |
الحقول | |
---|---|
timeout |
مهلة بالثواني لكل هدف. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
حقل الاتحاد starting_intent . مطلوب. تفاصيل النية لبدء نشاط يمكن أن يكون starting_intent واحدًا فقط مما يلي: |
|
launcherActivity |
عبارة عن الغرض من بدء نشاط مشغّل التطبيقات الرئيسي. |
startActivity |
غرض يبدأ نشاطًا بتفاصيل محدّدة |
noActivity |
تخطي نشاط البدء |
نية مشغّل التطبيقات
لا يحتوي هذا النوع على أي حقول.
يحدِّد هذا الإعداد هدفًا يبدأ نشاط مشغّل التطبيقات الرئيسي.
StartActivityIntent
هدف بداية يحدّده إجراء ومعرّف الموارد المنتظم (URI) والفئات.
تمثيل JSON |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
الحقول | |
---|---|
action |
اسم الإجراء. مطلوب لـ START_ACTIVITY. |
uri |
معرّف الموارد المنتظم (URI) للإجراء. |
categories[] |
فئات الأهداف المطلوب ضبطها على الغرض |
NoActivityIntent
لا يحتوي هذا النوع على أي حقول.
تخطي نشاط البدء
حلقة AndroidTestLoop
يشير ذلك المصطلح إلى اختبار لأحد تطبيقات Android يتضمّن حلقة اختبار. الغرض من <intent-name> ستتم إضافته ضمنيًا، نظرًا لأن تطبيق "ألعاب Google" هو المستخدم الوحيد لواجهة برمجة التطبيقات هذه في الوقت الحالي.
تمثيل JSON |
---|
{ "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 . مطلوب. حزمة Android المطلوب اختبارها يمكن أن يكون app_under_test واحدًا فقط مما يلي: |
|
appApk |
يتم اختبار حزمة APK للتطبيق. |
appBundle |
حزمة تطبيق متعددة APK خاصة بالتطبيق قيد الاختبار. |
اختبار IosXcTest
يشير ذلك المصطلح إلى اختبار لتطبيق iOS يستخدم إطار العمل XCTest. تدعم Xcode خيار "إنشاء للاختبار"، الذي ينشئ ملف .xctestrun يحتوي على مواصفات الاختبار (الوسيطات وطرق الاختبار وما إلى ذلك). يقبل هذا النوع من الاختبار ملف ZIP يحتوي على ملف xctestrun والمحتوى المقابل لدليل Build/Products الذي يحتوي على جميع البرامج الثنائية اللازمة لإجراء الاختبارات.
تمثيل JSON |
---|
{ "testsZip": { object ( |
الحقول | |
---|---|
testsZip |
مطلوب. ملف zip. يحتوي على ملف xctestrun ومحتوى دليل DerivedData/Build/Products. يتم تجاهل ملف .xctestrun في ملف zip هذا إذا تم تحديد حقل xctestrun. |
xctestrun |
ملف xctestrun سيتجاوز ملف .xctestrun في ملف الاختبارات المضغوط. نظرًا لأن ملف .xctestrun يحتوي على متغيرات بيئة إلى جانب طرق اختبار للتشغيل و/أو التجاهل، يمكن أن يكون هذا مفيدًا لاختبارات التقسيم. تم الحصول على الإعدادات التلقائية من ملف ZIP للاختبارات. |
xcodeVersion |
إصدار Xcode الذي يجب استخدامه للاختبار. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. يتم ضبط الإعدادات التلقائية على أحدث إصدار من Xcode يتوافق مع Firebase Test Lab. |
appBundleId |
النتائج فقط. معرِّف الحزمة للتطبيق قيد الاختبار. |
testSpecialEntitlements |
خيار اختبار أذونات التطبيق الخاصة سيؤدي ضبط ذلك إلى إعادة توقيع التطبيق الذي يمتلك أذونات خاصة مع معرّف تطبيق صريح. يتيح هذا الإذن حاليًا اختبار إذن الوصول إلى واجهة التطبيقات والتوافق مع التطبيقات. |
حلقة IosTestLoop
يشير ذلك المصطلح إلى اختبار لتطبيق iOS ينفذ سيناريو واحد أو أكثر من سيناريوهات حلقة الألعاب. يقبل هذا النوع من الاختبار تطبيقًا من الأرشيف (ملف .ipa) وقائمة بسيناريوهات الأعداد الصحيحة التي سيتم تنفيذها في التطبيق بشكل تسلسلي.
تمثيل JSON |
---|
{
"appIpa": {
object ( |
الحقول | |
---|---|
appIpa |
مطلوب. ملف .ipa للتطبيق المطلوب اختباره. |
scenarios[] |
تمثّل هذه السمة قائمة بالسيناريوهات التي يجب إجراؤها أثناء الاختبار. ويتم ضبط القيمة التلقائية على سيناريو واحد 0 في حال عدم تحديده. |
appBundleId |
النتائج فقط. معرِّف الحزمة للتطبيق قيد الاختبار. |
IosRoboTest
يشير ذلك المصطلح إلى اختبار يستكشف تطبيق iOS على جهاز iOS.
تمثيل JSON |
---|
{ "appIpa": { object ( |
الحقول | |
---|---|
appIpa |
مطلوب. يجب استخدام عنوان IP المخزن في هذا الملف لتشغيل الاختبار. |
appBundleId |
رقم تعريف الحِزمة الخاصة بالتطبيق تحت الاختبار. ويتم تحديد ذلك من خلال فحص ملف "Info.plist" للتطبيق. الملف. |
roboScript |
Roboscript اختياري لتخصيص الزحف. يمكنك الاطّلاع على https://firebase.google.com/docs/test-lab/android/robo-scripts-reference للحصول على مزيد من المعلومات حول Roboscripts. |
مصفوفة البيئة
مصفوفة البيئات التي سيتم تنفيذ الاختبار فيها.
تمثيل JSON |
---|
{ // Union field |
الحقول | |
---|---|
حقل الاتحاد environment_matrix . مطلوب. مصفوفة البيئة. يمكن أن يكون environment_matrix واحدًا فقط مما يلي: |
|
androidMatrix |
مصفوفة من أجهزة Android |
androidDeviceList |
قائمة بأجهزة Android سيتم إجراء الاختبار على الأجهزة المحددة فقط. |
iosDeviceList |
قائمة بأجهزة iOS. |
مصفوفة Android
يتم تحديد مجموعة من التعديلات على إعدادات أجهزة Android من خلال عرض المنتجات المتقاطعة على المحاور المحددة. وسيتم توسيع نطاق واجهة برمجة التطبيقات AndroidMatrix داخليًا لتشمل مجموعة من أجهزة Android.
سيتم إنشاء مثيل للتباديل المتاحة فقط. يتم تجاهل التعديلات غير الصالحة (مثل النماذج/الإصدارات غير المتوافقة).
تمثيل JSON |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
الحقول | |
---|---|
androidModelIds[] |
مطلوب. أرقام تعريف مجموعة أجهزة Android التي سيتم استخدامها. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
androidVersionIds[] |
مطلوب. أرقام تعريف مجموعة إصدار نظام التشغيل Android المطلوب استخدامها. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
locales[] |
مطلوب. مجموعة اللغات التي سيتيحها جهاز الاختبار للاختبار. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
orientations[] |
مطلوب. مجموعة الاتجاهات المراد الاختبار باستخدامها. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
قائمة أجهزة Android
قائمة بإعدادات أجهزة Android التي سيتم تنفيذ الاختبار فيها.
تمثيل JSON |
---|
{
"androidDevices": [
{
object ( |
الحقول | |
---|---|
androidDevices[] |
مطلوب. قائمة بأجهزة Android. |
قائمة IosDeviceList
قائمة بإعدادات أجهزة iOS التي سيتم تنفيذ الاختبار فيها.
تمثيل JSON |
---|
{
"iosDevices": [
{
object ( |
الحقول | |
---|---|
iosDevices[] |
مطلوب. قائمة بأجهزة iOS. |
جهاز Ios
جهاز iOS واحد
تمثيل JSON |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
الحقول | |
---|---|
iosModelId |
مطلوب. رقم تعريف جهاز iOS المطلوب استخدامه. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
iosVersionId |
مطلوب. معرّف إصدار البرنامج الرئيسي لنظام التشغيل iOS المطلوب استخدامه. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
locale |
مطلوب. اللغة التي استخدمها جهاز الاختبار لإجراء الاختبار. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
orientation |
مطلوب. كيفية توجيه الجهاز أثناء الاختبار. استخدِم TestEnvironmentDiscoveryService للحصول على الخيارات المتوافقة. |
تنفيذ الاختبار
يشير ذلك المصطلح إلى اختبار واحد يتم تنفيذه في بيئة واحدة.
تمثيل JSON |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
الحقول | |
---|---|
id |
النتائج فقط. المعرّف الفريد الذي تحدّده الخدمة |
matrixId |
النتائج فقط. معرِّف TestMatrix الذي يحتوي على. |
projectId |
النتائج فقط. المشروع على السحابة الإلكترونية المسؤول عن تنفيذ الاختبار |
testSpecification |
النتائج فقط. كيفية إجراء الاختبار. |
shard |
النتائج فقط. تمثّل هذه السمة تفاصيل حول الجزء. |
environment |
النتائج فقط. كيفية ضبط الأجهزة المضيفة. |
state |
النتائج فقط. يشير إلى التقدّم الحالي لتنفيذ الاختبار (على سبيل المثال، تم الانتهاء). |
toolResultsStep |
النتائج فقط. تتم كتابة نتائج عملية التنفيذ هذه. |
timestamp |
النتائج فقط. الوقت الذي تم فيه إنشاء عملية تنفيذ الاختبار هذه في البداية طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
testDetails |
النتائج فقط. تفاصيل إضافية حول الاختبار الجاري. |
الجزء
النتائج فقط. تمثّل هذه السمة تفاصيل حول الجزء.
تمثيل JSON |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
الحقول | |
---|---|
shardIndex |
النتائج فقط. فهرس الجزء بين جميع الأجزاء. |
numShards |
النتائج فقط. إجمالي عدد الأجزاء. |
testTargetsForShard |
النتائج فقط. أهداف اختبارية لكل جزء يتم ضبطها للتقسيم اليدوي فقط. |
estimatedShardDuration |
النتائج فقط. مدة الجزء المقدّرة استنادًا إلى سجلّات توقيت حالات الاختبار السابقة، إذا توفّرت. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
البيئة
البيئة التي يتم فيها إجراء الاختبار.
تمثيل JSON |
---|
{ // Union field |
الحقول | |
---|---|
حقل الاتحاد environment . مطلوب. البيئة. يمكن أن يكون environment واحدًا فقط مما يلي: |
|
androidDevice |
تمثّل هذه السمة جهاز Android يجب استخدامه مع اختبار Android. |
iosDevice |
تمثّل هذه السمة جهاز iOS يجب استخدامه مع إجراء اختبار iOS. |
حالة الاختبار
حالة (أي التقدم) لتنفيذ اختبار أو مصفوفة.
تعدادات | |
---|---|
TEST_STATE_UNSPECIFIED |
يُرجى عدم استخدامها. لإصدارات Proto فقط. |
VALIDATING |
يتم التحقق من صحة التنفيذ أو المصفوفة. |
PENDING |
تنتظر عملية التنفيذ أو المصفوفة حتى تصبح الموارد متاحة. |
RUNNING |
تجري حاليًا معالجة التنفيذ. لا يمكن ضبطها إلا عند التنفيذ. |
FINISHED |
انتهت عملية التنفيذ أو المصفوفة بشكل طبيعي. ويعني هذا على المصفوفة اكتمال المعالجة على مستوى المصفوفة بشكل طبيعي، ولكن قد تكون عمليات التنفيذ الفردية في حالة خطأ. |
ERROR |
توقفت عملية التنفيذ أو المصفوفة بسبب حدوث خلل في البنية الأساسية. |
UNSUPPORTED_ENVIRONMENT |
لم يتم تنفيذ عملية التنفيذ لأنّها تتوافق مع بيئة غير متوافقة. لا يمكن ضبطها إلا عند التنفيذ. |
INCOMPATIBLE_ENVIRONMENT |
لم يتم تنفيذ التنفيذ لأنّ المدخلات المقدَّمة غير متوافقة مع البيئة المطلوبة. مثال: إصدار AndroidVersion المطلوب أقل من قيمة minSdkVersion في حزمة APK لا يمكن ضبطها إلا عند التنفيذ. |
INCOMPATIBLE_ARCHITECTURE |
لم يتم تنفيذ التنفيذ لأنّ المدخلات المقدَّمة غير متوافقة مع البنية المطلوبة. مثال: الجهاز المطلوب لا يتيح تشغيل الرمز الأصلي في حزمة APK المقدَّمة لا يمكن ضبطها إلا عند التنفيذ. |
CANCELLED |
ألغى المستخدم عملية التنفيذ. لا يمكن ضبطها إلا عند التنفيذ. |
INVALID |
لم يتم تنفيذ عملية التنفيذ أو المصفوفة لأنّ المدخلات التي تم تقديمها غير صالحة. أمثلة: ملف الإدخال ليس من النوع المتوقع أو أنه تالف أو تالف أو تم وضع علامة عليه كبرامج ضارة |
خطوة نتائج الأدوات
تمثّل هذه السمة مرجعًا لخطوات نتائج الأداة.
هذا له نتائج TestExecution.
تمثيل JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string, "stepId": string } |
الحقول | |
---|---|
projectId |
النتائج فقط. المشروع على السحابة الإلكترونية الذي يملك خطوة نتائج الأداة |
historyId |
النتائج فقط. معرّف سجلّ نتائج الأداة |
executionId |
النتائج فقط. تعرض الأداة معرّف التنفيذ. |
stepId |
النتائج فقط. معرّف الخطوة الذي تنتجه الأداة. |
تفاصيل الاختبار
تفاصيل إضافية حول مستوى تقدّم الاختبار قيد التنفيذ.
تمثيل JSON |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
الحقول | |
---|---|
progressMessages[] |
النتائج فقط. أوصاف تفصيلية لتقدم الاختبار يمكن للمستخدمين قراءتها. على سبيل المثال: "إدارة حسابات جهاز" و"بدء الاختبار". خلال عملية التنفيذ، قد يتم إلحاق بيانات جديدة بنهاية ProMessages. |
errorMessage |
النتائج فقط. إذا كانت قيمة TestState هي ERROR، فستحتوي هذه السلسلة على تفاصيل يمكن للإنسان قراءتها حول الخطأ. |
مساحة تخزين النتائج
المواقع الجغرافية التي يتم فيها تخزين نتائج إجراء الاختبار
تمثيل JSON |
---|
{ "googleCloudStorage": { object ( |
الحقول | |
---|---|
googleCloudStorage |
مطلوب. |
toolResultsHistory |
تقوم الأداة بنتائج السجل الذي يحتوي على تنفيذ نتائج الأداة التي تمت كتابة النتائج إليها. إذا لم يتم توفير هذه المعلومات، ستختار الخدمة قيمة مناسبة. |
toolResultsExecution |
النتائج فقط. تؤدي الأداة إلى تنفيذ النتائج التي تتم كتابة النتائج إليها. |
resultsUrl |
النتائج فقط. عنوان URL يؤدي إلى النتائج في "وحدة تحكُّم الويب في Firebase". |
التخزين السحابي
موقع تخزين ضمن Google Cloud Storage (GCS)
تمثيل JSON |
---|
{ "gcsPath": string } |
الحقول | |
---|---|
gcsPath |
مطلوب. المسار إلى دليل في GCS سيحتوي في النهاية على نتائج هذا الاختبار. يجب أن يكون لدى المستخدم الذي قدّم الطلب إذن وصول للكتابة على الحزمة في المسار المتوفّر. |
سجلّ نتائج الأدوات
يمثل موردًا لسجل النتائج في الأداة.
تمثيل JSON |
---|
{ "projectId": string, "historyId": string } |
الحقول | |
---|---|
projectId |
مطلوب. المشروع على السحابة الإلكترونية الذي يملك سجلّ نتائج الأداة |
historyId |
مطلوب. معرّف سجلّ نتائج الأداة |
تنفيذ نتائج الأدوات
تمثل موردًا لتنفيذ النتائج للأداة.
هذا له نتائج TestMatrix.
تمثيل JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
الحقول | |
---|---|
projectId |
النتائج فقط. المشروع على السحابة الإلكترونية الذي يملك أداة تنفيذ النتائج |
historyId |
النتائج فقط. معرّف سجلّ نتائج الأداة |
executionId |
النتائج فقط. تعرض الأداة معرّف التنفيذ. |
تفاصيل غير صالحة للمصفوفة
السبب التفصيلي الذي أدّى إلى اعتبار المصفوفة "غير صالحة".
تعدادات | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED |
يُرجى عدم استخدامها. لإصدارات Proto فقط. |
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/studio/build/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 |
هناك تعارض في الإرشادات المسجَّلة التلقائية. |
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 == "صحيح" في ملف xctestrun. |
PLIST_CANNOT_BE_PARSED |
تعذّر تحليل ملف Info.plist في ملف ZCTest بتنسيق zip. |
TEST_ONLY_APK |
تم وضع علامة "testOnly" على حزمة APK. متوقّفة نهائيًا وغير مُستخدَمة حاليًا. |
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/persistent#requirements |
UNKNOWN_PERMISSION_ERROR |
حدثت مشكلة غير معروفة في الإذن أثناء إجراء هذا الاختبار. |
MatrixErrorDetail
تصف خطأً أو مشكلة واحدة في مصفوفة.
تمثيل JSON |
---|
{ "reason": string, "message": string } |
الحقول | |
---|---|
reason |
النتائج فقط. سبب الخطأ. هذه قيمة ثابتة في OFFER_SNAKE_CASE تحدد سبب الخطأ. |
message |
النتائج فقط. رسالة يمكن لشخص عادي قراءتها حول كيفية حدوث الخطأ في TestMatrix يتم التوسيع إلى الحقل |
ملخّص النتائج
ملخّص نتائج مصفوفة اختبار مكتمل
تعدادات | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED |
يُرجى عدم استخدامها. لإصدارات Proto فقط. |
SUCCESS |
تم تشغيل مصفوفة الاختبار بنجاح، على سبيل المثال:
|
FAILURE |
تعذّر إتمام عملية التشغيل، على سبيل المثال:
|
INCONCLUSIVE |
حدث خطأ غير متوقع. من المفترض أن يتم اعتبار عملية التشغيل غير ناجحة، ولكن من المحتمل أن تكون هذه مشكلة عابرة، وقد تتم إعادة إجراء الاختبار بنجاح. |
SKIPPED |
تمّ تخطّي جميع الاختبارات، على سبيل المثال:
|
الطُرق |
|
---|---|
|
إلغاء عمليات تنفيذ الاختبار غير المكتملة في مصفوفة اختبار. |
|
تنشئ وتدير مصفوفة من الاختبارات وفقًا للمواصفات المحددة. |
|
للتحقق من حالة مصفوفة اختبار وعمليات التنفيذ بعد إنشائها. |