عیبیابی و پرسشگان «آزمایشگاه»
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این صفحه راهنمایی عیبیابی و پاسخ به پرسشهای متداول درباره اجرای آزمایشها با Firebase Test Lab را ارائه میدهد. مشکلات شناختهشده نیز
مستند شدهاند. اگر نمیتوانید آنچه را که بهدنبالش هستید پیدا کنید یا به راهنمایی بیشتری نیاز دارید، به کانال test-lab# در Firebase Slack بپیوندید یا با پشتیبانی Firebase تماس بگیرید.
عیبیابی
چرا اجرای آزمایش من اینقدر طول میکشد؟
وقتی دستگاهی با سطح ظرفیت بالا در کاتالوگ Test Lab انتخاب میکنید، ممکن است آزمایشها سریعتر شروع شوند. وقتی دستگاه ظرفیت کمی دارد، ممکن است اجرای آزمایشها بیشتر طول بکشد. اگر تعداد آزمایشهای فراخواندهشده بسیار بیشتر از ظرفیت دستگاههای انتخابشده باشد، ممکن است تکمیل آزمایشها بیشتر طول بکشد.
آزمایشهایی که در هر سطح ظرفیت دستگاه اجرا میشوند ممکن است بهدلیل عوامل زیر بیشتر طول بکشند:
ترافیک، که بر دردسترس بودن دستگاه و سرعت آزمایش تأثیر میگذارد.
خرابی دستگاه یا زیرساخت که ممکن است در هر زمانی اتفاق بیفتد. برای بررسی اینکه آیا زیرساخت گزارششدهای برای Test Lab وجود دارد یا نه،
داشبورد وضعیت Firebase را ببینید.
برای کسب اطلاعات بیشتر درباره ظرفیت دستگاه در Test Lab، اطلاعات ظرفیت دستگاه را برای Android و iOS ببینید.
چرا نتایج آزمایش غیرقطعی دریافت میکنم؟
نتایج آزمون غیرقطعی معمولاً بهدلیل لغو اجرای آزمون یا خطاهای زیرساختی رخ میدهد.
خطاهای زیرساخت بهدلیل مشکلات داخلی Test Lab، مانند خطاهای شبکه یا رفتارهای غیرمنتظره دستگاه، ایجاد میشوند. Test Lab بهطور داخلی اجرای آزمایشهایی را که چندینبار خطای زیرساخت تولید میکنند، قبلاز گزارش نتیجه غیرقطعی، بازنشسته میکند؛ بااینحال، میتوانید این بازنشستگیها را بااستفاده از failFast غیرفعال کنید.
آزمایش را در Test Lab تکرار کنید تا مطمئن شوید که قابلتکرار است.
درصورت امکان، آزمایش را در دستگاه یا نوع دستگاه دیگری اجرا کنید.
اگر مشکل برطرف نشد، با تیم Test Lab در
کانال #test-lab در
Firebase Slack تماس بگیرید.
چرا شاردینگ باعث شد آزمایشهایم طولانیتر اجرا شوند؟
اگر تعداد بخشهایی که مشخص کردهاید از تعداد دستگاههای دردسترس برای استفاده در Test Lab بیشتر باشد،
بخشبندی میتواند باعث شود آزمایشهایتان طولانیتر اجرا شوند. برای
اجتناب از این وضعیت، به دستگاه دیگری بروید. برای اطلاعات بیشتر
درباره انتخاب دستگاهی دیگر، به
ظرفیت دستگاه مراجعه کنید.
چرا شروع آزمون من
طول میکشد؟
وقتی درخواست آزمایشی ارسال میکنید، برنامهتان ابتدا اعتبارسنجی، دوباره امضا، و غیره میشود تا برای اجرای آزمایشها در دستگاه آماده شود. معمولاً این فرایند در کمتر از چند ثانیه تکمیل میشود، اما میتواند تحتتأثیر عواملی مثل اندازه برنامهتان قرار گیرد.
پساز آماده شدن برنامهتان، اجرای آزمایشی زمانبندی میشود و تا زمانی که دستگاهی برای اجرای آن آماده شود، در صف باقی میماند. تا زمانی که اجرای همه آزمایشها بهپایان نرسد،
وضعیت ماتریس «درحال انتظار» خواهد بود (صرفنظر از اینکه اجرای آزمایشها
در صف باشد یا فعالانه درحال اجرا باشد).
چرا تکمیل شدن آزمایش من
طول میکشد؟
پساز اتمام اجرای آزمایشی، مصنوعات آزمایشی از دستگاه بارگیری، پردازش، و در Cloud Storage بارگذاری میشوند. مدت زمان این مرحله میتواند
تحت تأثیر مقدار و اندازه مصنوعات قرار گیرد.
عیبیابی مختص Android
برنامه دادهها را برنمیگرداند و نمیتواند نماگرفتها را پیدا کند
ساختههای اجرای آزمایشی (مانند نماگرفتها و فایلهای گزارش) در Google Cloud Storage ذخیره میشوند و مستقیماً در کنسول Firebase ارائه میشوند. اگر
اجرای آزمایشی شما در ۹۰ روز گذشته انجام شده است، بررسی کنید که نقشهای سطح پروژه (مالک پروژه، ویرایشگر پروژه، یا نظارهگر پروژه) را اختصاص داده باشید.
همچنین، لطفاً مطمئن شوید که Cloud Audit Logging برای پروژه یا سازمانتان فعال نباشد.
اگر اجرا بیشاز ۹۰ روز پیش انجام شده باشد، به احتمال زیاد مصنوعات آزمایشی بهطور خودکار حذف شدهاند. با کلیک کردن روی برگه نتایج آزمایش در داشبورد Test Lab میتوانید پیکربندی دسته نتایج را بررسی کنید. سطل نتیجه پیشفرض
پیکربندی شده است تا اشیاء را بهمدت ۹۰ روز حفظ کند.
برای نگهداری طولانیتر مصنوعات آزمایشی، فرمان
gcloud firebase test android run را با پرچم --results-bucket اجرا کنید و
نام دسته نتیجه را وارد کنید. برای اطلاعات بیشتر، به
اسناد مرجع gcloud firebase test android run مراجعه کنید.
چرا نتایج چارچوب تست ابزارگری را بهصورت ناقص یا با بخشهای مفقود دریافت میکنم؟
وقتی آزمایشهای ابزار دقیق را اجرا میکنید، ممکن است خطاهای آزمایشی را ببینید که نشاندهنده نتایج جزئی هستند و حاوی پیامهایی مانند Test run failed to complete. Expected
x tests, received y (که در آن y کمتر از x است) هستند. این خطا به این معنی است که Test Lab نتوانسته است logcat را برای نشانگرهای شروع یا پایان چارچوب تست که معمولاً توسط AndroidJUnitRunner تولید میشوند، تجزیه کند.
موارد زیر از دلایل رایج این مشکل است:
شرح مشکل
وضوح احتمالی
چارچوب تست بهدلیل اتمام مهلت اجرا نشد. اگر مدت کل آزمایشها بیشتر از زمان استراحتی باشد که مشخص کردهاید یا بیشتر از حداکثر زمان استراحت باشد، Test Lab بقیه چارچوبهای تست را لغو میکند.
زمان وقفه را برای ماتریس افزایش دهید تا مطمئن شوید همه آزمایشها میتوانند تکمیل شوند.
اگر قبلاً این کار را نکردهاید، آزمایشها را قطعهبندی کنید تا هر قطعه زیرمجموعهای از آزمایشها را اجرا کند و در مدت زمان کوتاهتری تکمیل شود.
اگر قبلاً قطعهبندی را فعال کردهاید، تعداد قطعهها را افزایش دهید.
چارچوب تست تکمیل نشد زیرا زودتر از موعد خارج شد یا گیر کرد.
ممکن است چارچوب تست بهدلیل استثنای گرفتهنشده یا خطای ادعا زودتر از موعد خارج شود. چارچوبهای تست ممکن است در حلقه بینهایت گیر کنند یا نتوانند ادامه دهند، برای مثال، اگر برنامه نمای صحیح را نشان ندهد و چارچوب تست نتواند کنش را در واسط کاربری انجام دهد.
ویدیو و logcat را بررسی کنید تا ببینید آزمایش کجا متوقف شده است.
یک اجراکننده آزمون سفارشی (ازجمله AndroidJUnitRunner توسعهیافته) بهطور غیرمنتظرهای ازکار افتاد یا نشانگرهای شروع یا پایان چارچوب تست غیرمنتظرهای را در logcat نوشت.
کد اجراکننده آزمایشیتان را بررسی کنید.
گزارشهای بیشازحدی در logcat نوشته شده است که میانگیر را تحتالشعاع قرار داده است
یا باعث ازکار افتادن فرایند logcat شده است.
نوشتنها را به logcat کاهش دهید.
برنامه تحت آزمایش ازکار افتاد.
برنامهتان را اشکالزدایی کنید.
پرسشگان
سهمیههای رایگان برای Test Lab چیست؟ اگر تمام شد چه کار کنم؟
Firebase Test Lab سهمیههای بدون هزینهای برای آزمایش روی دستگاهها و استفاده از
Cloud API ارائه میدهد. توجه داشته باشید که سهمیه آزمایش از طرح قیمتگذاری استاندارد Firebase استفاده میکند،
درحالیکه سهمیههای Cloud API اینگونه نیستند.
سهمیه آزمایشی
سهمیههای آزمایش براساس تعداد دستگاههای مورداستفاده برای اجرای آزمایشها تعیین میشود.
طرح Firebase Spark سهمیه آزمایش ثابتی دارد که برای کاربران رایگان است. برای
طرح Blaze، اگر استفاده شما از Google Cloud
درطول زمان افزایش یابد، ممکن است سهمیههایتان افزایش یابد. اگر به سهمیه آزمایشی خود رسیدید، تا روز بعد صبر کنید یا اگر درحالحاضر در طرح Spark هستید، به طرح Blaze ارتقا دهید.
اگر ازقبل در طرح Blaze هستید، میتوانید درخواست افزایش سهمیه کنید.
برای اطلاعات بیشتر، به
سهمیه آزمایش مراجعه کنید.
میتوانید مصرف سهمیه آزمایشیتان را در کنسول Google Cloud پایش کنید.
سهمیه Cloud Testing API
Cloud Testing API دو حد سهمیه دارد: درخواست در روز برای هر پروژه، و درخواست در هر ۱۰۰ ثانیه برای هر پروژه. میتوانید مصرفتان را در
کنسول Google Cloud
پایش کنید.
سهمیه Cloud Tool Results API
Cloud Tool Results API با دو حد سهمیه ارائه میشود: پُرسمان در روز برای هر پروژه، و پُرسمان در هر ۱۰۰ ثانیه برای هر پروژه. میتوانید مصرفتان را در
کنسول Google Cloud
پایش کنید.
برای کسب اطلاعات بیشتر درباره محدودیتهای API، به سهمیههای Cloud API برای Test Lab مراجعه کنید. اگر به سهمیه میانای برنامهسازی کاربردی رسیدهاید:
با
ویرایش سهمیههایتان
مستقیماً در کنسول Google Cloud، درخواستی برای سهمیههای بالاتر ارسال کنید (توجه داشته باشید که اکثر محدودیتها بهطور پیشفرض روی
حداکثر تنظیم شدهاند)، یا
با تکمیل فرم درخواست در کنسول Google Cloud یا تماس با پشتیبانی Firebase، سهمیه API بیشتری درخواست کنید.
چگونه میتوانم بفهمم که ترافیک رسیده به باطن من از Test Lab میآید؟
ازطریق پسزمینه خودتان، میتوانید با بررسی نشانی IP منبع دربرابر
محدودههای IP ما، تعیین کنید که آیا ترافیک از دستگاههای آزمایشی میزبانیشده در Firebase میآید یا نه.
آیا Test Lab با
VPC-SC کار میکند؟
Test Lab با VPC-SC کار نمیکند، که کپی کردن برنامهها و سایر مصنوعات آزمایشی را بین فضای ذخیرهسازی داخلی Test Lab و سطلهای نتایج کاربران مسدود میکند.
چگونه آزمایشهای ناپایدار را در
Test Lab شناسایی کنم؟
برای شناسایی رفتار ناپایدار در آزمایشهایتان، توصیه میکنیم از گزینه
--num-flaky-test-attempts
استفاده کنید. اجرای مجدد Deflake مانند اجرای آزمایشی عادی صورتحساب میشود یا در سهمیه روزانه شما محاسبه میشود.
موارد زیر را به یاد داشته باشید:
وقتی خرابی شناسایی میشود، کل اجرای آزمایشی دوباره اجرا میشود. از امتحان مجدد فقط چارچوبهای تست ناموفق پشتیبانی نمیشود.
اجراهای مجدد برای رفع ناپایداری بهطور همزمان زمانبندی میشوند، اما اجرای موازی آنها تضمین نمیشود، مثلاً وقتی ترافیک از تعداد دستگاههای دردسترس بیشتر باشد.
پرسشگان مختص iOS
آیا Test Lab از
Appium، Flutter/FlutterDriver، ReactNative/Jest، یا Cucumber پشتیبانی میکند؟
اگرچه برخیاز این موارد در نقشه راه ما قرار دارند، درحالحاضر نمیتوانیم
تعهدی برای پشتیبانی از این پلاتفرمهای آزمایش و توسعه برنامه ارائه دهیم.
جزئیات دستگاه، مثل وضوح و غیره را کجا میتوانم پیدا کنم؟
اطلاعات دقیق دستگاه ازطریق API دردسترس است و میتوان بااستفاده از
فرمان describe از سرویسگیرنده gcloud به آن دسترسی پیدا کرد:
gcloud firebase test ios models describe MODEL
آیا میتوانم از قطعهبندی در آزمایشهای iOS استفاده کنم؟
تکهبندی بهطور بومی در Test Lab برای iOS پشتیبانی نمیشود. بااینحال، میتوانید
از کارخواه Flank برای قطعهبندی کردن چارچوبهای تست iOS استفاده کنید.
این کار با تنظیم کلید و مقادیر OnlyTestIdentifiers در فایل .xctestrun انجام میشود.
برای جزئیات بیشتر، به صفحه man برای xcodebuild.xctestrun مراجعه کنید.
چرا ویدیوهای آزمایش iOS من در نتایج وجود ندارد؟
برای iOS 18 یا نسخههای جدیدتر، نمیتوانیم از ویدیوها در نتایج پشتیبانی کنیم.
پرسشگان مختص Android
آیا Test Lab از دستگاههای پوشیدنی پشتیبانی میکند؟
بله! Test Lab از Google Pixel Watch پشتیبانی میکند. اکنون میتوانید آزمایشها را در
برنامه Wear مستقل خود در Google Pixel Watch اجرا کنید. برای کسب اطلاعات بیشتر درباره دستگاههای
Test Lab، به آزمایش در
دستگاههای دردسترس مراجعه کنید.
آیا Test Lab از جدیدترین دستگاههای Google پشتیبانی میکند؟
بله! Test Lab از Google Pixel Tablet و Google Pixel Fold پشتیبانی میکند. میتوانید
آزمایشهایتان را در دستگاههای فیزیکی مستقل اجرا کنید.
برای کسب اطلاعات بیشتر درباره دستگاههای
Test Lab، به آزمایش در
دستگاههای دردسترس مراجعه کنید.
چگونه میتوانم آزمایشی را که درحال اجرا است
در Test Lab شناسایی کنم؟
اگر برنامهتان را در Firebase آزمایش میکنید یا آزمایشهایی را برای
گزارش پیشاز راهاندازی
در «کنسول Play» اجرا میکنید، میتوانید با بررسی ویژگی سیستم
firebase.test.lab در فایل MainActivity، تشخیص دهید که آیا آزمایشی در دستگاهی با میزبانی Firebase
درحال اجرا است یا نه. سپس میتوانید دستورهای بیشتری را براساس مقدار منطقی برای testLabSetting اجرا کنید. برای اطلاعات بیشتر،
رفتارهای آزمایشی اصلاحشده را ببینید.
آیا Test Lab
از Appium، Flutter/FlutterDriver، ReactNative/Jest، یا Cucumber پشتیبانی میکند؟
اگرچه برخیاز این موارد در نقشه راه ما قرار دارند، درحالحاضر نمیتوانیم
تعهدی برای پشتیبانی از این پلاتفرمهای آزمایش و توسعه برنامه ارائه دهیم. بااینحال،
اگر برنامهتان را با چارچوبی ساختهاید که از Espresso پشتیبانی میکند (برای مثال،
Flutter)، میتوانید بااستفاده از
Espresso
آزمایش ابزارسنجی بنویسید و سپس آزمایش را در Test Lab اجرا کنید.
آیا Test Lab
از آزمایش برنامههای مبهمسازیشده، مثلاً با ProGuard یا R8، پشتیبانی میکند؟
Test Lab بهطور صریح از مبهمسازی یا رفع ابهام پشتیبانی نمیکند. درحالیکه
برنامه احتمالاً اجرا خواهد شد، هرگونه دادههای برنامه مبهمسازیشده، مثل ردیابیهای پشته،
بهصورت مبهمسازیشده در گزارشها نشان داده خواهد شد.
آیا میتوانم از دستگاه تاشو خودم در
حالتها و وضعیتهای تاشو مختلف هنگام آزمایش در Test Lab استفاده کنم؟
دستگاههای تاشو میتوانند در حالتهای تاشده مختلفی باشند، مانند FLAT (کاملاً باز) یا HALF_OPENED (بین کاملاً باز و کاملاً بسته).
ازسویدیگر، وضعیتها شامل جهتیابی خاص دستگاه و حالت تاشو است. برای مثال، حالت رومیزی که وضعیت HALF_OPENED در جهت افقی است، یا حالت کتاب که وضعیت HALF_OPENED در جهت عمودی است.
اگر برنامه نداشته باشم، میتوانم Test Lab را امتحان کنم؟
برخلاف سایر محصولات Firebase، برای استفاده از Test Lab نیازی به افزودن کیت توسعه نرمافزار Firebase ندارید. اگر ازقبل برنامهای ندارید، میتوانید
یک APK را بهصورت آنلاین بارگیری کنید یا یک برنامه و یک APK آزمایشی از یکی از
نمونهها در مخزن AndroidX GitHub بسازید.
توجه داشته باشید که برای اجرای آزمایش Robo فقط به فایل APK برنامهتان نیاز دارید، درحالیکه آزمایش ابزار دقیق هم به برنامه و هم به APK آزمایشی که از کد منبع ساخته شده است نیاز دارد. برای اطلاعات بیشتر،
درباره آزمایشهای ابزاردار بخوانید.
کدام دستگاهها برای آزمایش تفاوت نماگرفت بهترین هستند؟
آزمایش تفاوت نماگرفت جایی است که ادعاهای آزمایش براساس مقایسه تصاویر صفحه بهدستآمده درحین اجرای آزمایش با تصاویر طلایی نشاندهنده رفتار موردانتظار است. این آزمایشها ممکن است در برخیاز انواع دستگاهها شکنندهتر از بقیه باشند. توصیه میکنیم برای این نوع آزمایشها، دستگاههای شبیهساز Arm (*.arm) را هدفیابی کنید. دستگاههای شبیهساز Arm از
تصاویری استفاده میکنند که بسیار شبیه یا یکسان با شبیهسازهای «عمومی» «استودیو Android» هستند.
همچنین توصیه میکنیم کتابخانههای آزمایشی را بررسی کنید که میتوانند به قویتر کردن آزمایشهای نماگرفت در حضور تغییرات موردانتظار کمک کنند.
آیا Test Lab دستگاههای مجازی را بهروز میکند؟
بله! دستگاههای مجازی وقتی بهروزرسانی میشوند که تغییرات زیر ایجاد شود:
بهروزرسانی تصاویر موجود
منسوخ شدن سطوح قدیمیتر میانای برنامهسازی کاربردی
سطوح جدید میانای برنامهسازی کاربردی Android اضافه شده است
چگونه گزارشهای پوشش را فعال کنم؟
برای فعال کردن گزارشهای پوشش، coverage=true را به
فیلد environmentVariables اضافه کنید.
اگر از «هماهنگکننده آزمایش Android» استفاده میکنید، باید دایرکتوریای برای
ذخیره نتایج پوشش ارائه دهید:
جزئیات دستگاه، مثل وضوح،
رابطهای دودویی برنامه پشتیبانیشده، و غیره را کجا میتوانم پیدا کنم؟
اطلاعات دقیق دستگاه ازطریق API دردسترس است و میتوان بااستفاده از
فرمان describe از سرویسگیرنده gcloud به آن دسترسی پیدا کرد:
gcloud firebase test android models describe MODEL
چگونه بدون تلفن به سیستم برنامه Wear وارد شوم؟
اگر برنامهتان از «ورود به سیستم با Google» پشتیبانی میکند، این ویژگی باید بهطور خودکار با حساب آزمایشی کار کند. درغیراینصورت، اگر برنامهتان معمولاً برای ورود به سیستم به تلفن نیاز دارد، میتوانید تنوع ساختی ایجاد کنید که از ورود به سیستم رد شود و از یک کد درجشده در ساخت آزمایشی شما استفاده کند، یا از فایلهای موجود در دیسک که معمولاً بااستفاده از --other-files option ارسال میشوند بخواند. برای کسب اطلاعات بیشتر، ورود به سیستم سفارشی و ورودی نوشتاری با آزمایشهای Robo را ببینید.
مشکلات شناخته شده
گذرتصویرهای Captcha ورود به سیستم
آزمایش Robo نمیتواند از صفحههای ورود به سیستم که به کنش کاربر اضافی فراتر از وارد کردن اعتبارنامه برای ورود به سیستم نیاز دارند (مثلاً تکمیل کردن CAPTCHA) عبور کند.
مشکلات شناختهشده مختص iOS
ورود خودکار به سیستم
ورود خودکار به سیستم با «حساب Google» در آزمایشهای Robo برای iOS+ (نسخه بتا) پشتیبانی نمیشود.
مشکلات شناختهشده مختص Android
پشتیبانی از چارچوب میانای کاربر
آزمایش Robo با برنامههایی که از عناصر میانای کاربر از چارچوب میانای کاربر Android (شامل اشیاء View، ViewGroup، و WebView) استفاده میکنند بهترین عملکرد را دارد. اگر از آزمایش Robo برای تمرین دادن برنامههایی استفاده میکنید که از چارچوبهای واسط کاربر دیگر استفاده میکنند، ازجمله برنامههایی که از موتور بازی Unity استفاده میکنند، ممکن است آزمایش بدون کاوش فراتر از صفحه اول خارج شود.