Firebase Test Lab یک سرویس ابری گوگل برای تست خودکار اپلیکیشنهای موبایل روی دستگاههای واقعی مستقر در مراکز داده گوگل است. Test Lab امکان اجرای تستهای ابزاری، تستهای اسکرینشات و تستهای ربات را روی صدها پیکربندی دستگاه با نسخههای مختلف Android و iOS بدون نیاز به داشتن مزرعه دستگاه اختصاصی فراهم میکند. طبق Firebase Documentation, 2026، تست ربات Firebase به طور خودکار از تمام صفحههای اپلیکیشن عبور میکند و crash، ANR و مشکلات UI را بدون نوشتن حتی یک خط کد تست شناسایی میکند. این سرویس از یکپارچگی با سیستمهای CI/CD پشتیبانی میکند و گزارشهای دقیق با ویدیو و لاگ ارائه میدهد.
نکات کلیدی
Firebase Test Lab زیرساخت ابری گوگل برای تست خودکار اپلیکیشنهای موبایل روی دستگاههای فیزیکی واقع در مراکز داده جهانی گوگل است. برخلاف شبیهسازهای روی ماشین محلی، Test Lab تستها را روی دستگاههای واقعی Android و iOS با نسخههای مختلف سیستمعامل، رزولوشن صفحه، میزان RAM و سطوح API اجرا میکند. سرویس به طور خودکار نتایج تست را پردازش میکند و ویدیوی اجرا، اسکرینشات مراحل و لاگهای دقیق ارائه میدهد.
داشتن مزرعه دستگاه اختصاصی نیازمند سرمایهگذاری قابل توجه برای خرید و نگهداری دستگاههای فیزیکی است. Firebase Test Lab دسترسی به هزاران دستگاه را به صورت پرداخت به ازای استفاده (pay-per-use) با محدودیت رایگان در طرح Spark فراهم میکند. Test Lab به طور خودکار مجموعه دستگاهها را به مدلهای جدید بهروز میکند، از جمله جدیدترین پرچمداران Google Pixel، Samsung Galaxy، Xiaomi و iPhone. تستها به صورت موازی روی چندین دستگاه اجرا میشوند که زمان کلی بررسی اپلیکیشن را کاهش میدهد.
برای Android، Test Lab از تست روی دستگاههای با سطح API از 21 تا آخرین نسخه پایدار Android پشتیبانی میکند. پشتیبانی iOS شامل دستگاههای واقعی iPhone و iPad با نسخههای iOS از 15 تا آخرین نسخه پایدار است. برای iOS، تست ربات و XCTest در دسترس است. هر تست میتواند روی دستگاههای فیزیکی یا شبیهسازها اجرا شود — برای دریافت دقیقترین نتایج، گوگل استفاده از دستگاههای فیزیکی را توصیه میکند، زیرا مشکلات مربوط به سنسورها، دوربین و رابطهای شبکه را آشکار میکنند.
Firebase Test Lab از چندین نوع تست پشتیبانی میکند که هر کدام وظیفه خود را در چرخه توسعه حل میکنند: تستهای ربات برای بررسی سریع پایداری، تستهای ابزاری برای تأیید عملکردی و تستهای اسکرینشات برای تشخیص رگرسیونهای بصری. انتخاب نوع تست به مرحله توسعه و اهداف اجرای خاص بستگی دارد.
تستهای ربات یک قابلیت منحصر به فرد Firebase Test Lab هستند که نیاز به نوشتن کد تست ندارند. Firebase Crawler به طور خودکار اپلیکیشن را کاوش میکند: همه عناصر تعاملی UI را پیدا میکند، روی آنها کلیک میکند، فرمها را با دادههای تست پر میکند، بین صفحهها جابجا میشود و هرگونه خرابی (crash، ANR، استثنا) را ثبت میکند. تستهای ربات تا 80% از باگهای بحرانی را بدون حتی یک خط کد تست تشخیص میدهند که آنها را به ابزاری ایدهآل برای ارزیابی پایداری پایه اپلیکیشن در مراحل اولیه توسعه تبدیل میکند.
تستهای ابزاری تستهایی هستند که توسط برنامهنویس با استفاده از فریمورکهای Espresso (Android) یا XCTest (iOS) نوشته میشوند. Test Lab APK همراه با تستها را روی دستگاه هدف اجرا میکند و نتایج اجرا را جمعآوری میکند. تستها میتوانند ساده (بررسی نمایش عناصر) یا پیچیده (سناریوهای end-to-end: ورود، افزودن به سبد خرید، ثبت سفارش) باشند. Firebase Test Lab از Android Test Orchestrator برای جداسازی تستها از یکدیگر پشتیبانی میکند که از تأثیر یک تست ناموفق روی بقیه جلوگیری میکند.
تستهای اسکرینشات برای تشخیص رگرسیونهای بصری در اپلیکیشن استفاده میشوند. Game loop نوع خاصی از تست است که لیستی از سناریوها را از طریق intent به اپلیکیشن ارسال میکند و اپلیکیشن باید این سناریوها را اجرا کرده و از صفحههای کلیدی اسکرینشات بگیرد. Test Lab اسکرینشاتها را از همه دستگاههای ماتریس جمعآوری میکند و امکان مقایسه آنها با نمونههای مرجع برای تشخیص تفاوتها را فراهم میکند. این نوع تست به ویژه در اپلیکیشنهای بازی برای بررسی رندر روی GPUهای مختلف محبوب است.
| نوع تست | کد | چه چیزی را بررسی میکند | کی استفاده کنیم |
|---|---|---|---|
| تست ربات | نیاز ندارد | Crash، ANR، استثنا | بررسی سریع پایداری |
| ابزاری | Espresso / XCTest | عملکرد سناریوها | تست رگرسیون |
| اسکرینشات | Game loop | رگرسیونهای بصری | بررسی UI روی دستگاههای مختلف |
ماتریس تست در Firebase Test Lab مجموعهای از پیکربندیهای دستگاه است که تست انتخاب شده روی آنها اجرا میشود. هر پیکربندی شامل مدل دستگاه، نسخه سیستم عامل، جهت صفحه (عمودی/افقی) و تنظیمات منطقهای (محلی، زبان) است. تست به صورت موازی روی همه پیکربندیهای انتخاب شده اجرا میشود که زمان کلی اجرا را نسبت به اجرای متوالی روی هر دستگاه به طور قابل توجهی کاهش میدهد.
گوگل توصیه میکند دستگاههایی با ویژگیهای مختلف را در ماتریس قرار دهید: مدل پرچمدار (Google Pixel، Samsung Galaxy S)، دستگاه اقتصادی (Moto G، Xiaomi Redmi)، دستگاهی با حداقل نسخه API پشتیبانی شده توسط اپلیکیشن. ماتریس بهینه شامل 5–10 پیکربندی است که تمام نسخههای سیستم عاملی که اپلیکیشن پشتیبانی میکند را پوشش میدهد. برای iOS، iPhone و iPad نسلهای مختلف (مثلاً iPhone SE، iPhone 14، iPad Air) با نسخههای مختلف iOS انتخاب میشوند.
Test Lab به طور خودکار تستها را بین دستگاههای انتخاب شده توزیع میکند و هر تست را روی هر پیکربندی اجرا میکند. زمان اجرا کل ماتریس برابر با زمان اجرای کندترین تست روی کندترین دستگاه است — بقیه به صورت موازی اجرا میشوند. اگر یک تست روی همه دستگاهها ناموفق باشد، Test Lab اجرای آن را روی بقیه پیکربندیها برای صرفهجویی در منابع متوقف میکند. نتایج بر اساس تست و دستگاه گروهبندی میشوند که امکان تشخیص سریع اینکه آیا خطا مختص یک پیکربندی خاص است را فراهم میکند.
تست ربات یک قابلیت پرچمدار Firebase Test Lab است که امکان کاوش خودکار اپلیکیشن را بدون نوشتن حتی یک تست فراهم میکند. Firebase Crawler (ربات) سلسلهمراتب UI اپلیکیشن را تحلیل میکند، همه عناصر تعاملی (دکمهها، فیلدهای متنی، لیستها، منو) را پیدا میکند و با آنها تعامل میکند و رفتار کاربر واقعی را شبیهسازی میکند. تست ربات به ویژه در مراحل اولیه توسعه، زمانی که تستها هنوز نوشته نشدهاند، یا برای بررسی کد legacy مؤثر است.
برای اجرای تست ربات کافی است APK یا IPA را در Firebase Console آپلود کرده و گزینه Robo test را انتخاب کنید. ربات میتواند به طور خودکار از طریق اعتبارنامههای از پیش پیکربندی شده (ورود/رمز عبور) وارد اپلیکیشن شود تا به صفحههای پشت احراز هویت دسترسی پیدا کند. همچنین میتوان عمق کاوش (max depth) را برای محدود کردن تعداد مراحل ربات تنظیم کرد یا عناصر خاصی را که ربات باید به صورت اولویتدار کلیک کند مشخص نمود.
<!-- res/xml/robo_directives.xml -->
<!-- ربات فیلدهای ورود و رمز عبور را پر میکند -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
تستهای ربات جایگزین تست دستی و تستهای ابزاری نوشته شده برای سناریوهای پیچیده نمیشوند. ربات قادر به بررسی منطق تجاری نیست: او روی همه عناصر پشت سر هم کلیک میکند اما نمیداند که آیا نتیجه صحیح است یا خیر. همچنین ربات نمیتواند با viewهای سفارشی که از ViewGroup استاندارد ارثبری نمیکنند تعامل داشته باشد و WebView را پردازش نمیکند. برای این موارد باید از تستهای ابزاری یا Game loop استفاده کرد.
یکپارچگی Firebase Test Lab با سیستمهای CI/CD امکان اجرای خودکار تستها را در هر بار push به مخزن فراهم میکند. Test Lab از وظایف Gradle برای Android و Fastlane برای هر دو پلتفرم پشتیبانی میکند. پیکربندی خط لوله CI/CD شامل ساخت اپلیکیشن، آپلود APK/IPA در Google Cloud Storage، اجرای تستها از طریق Firebase CLI و دریافت گزارشها به سیستم CI برای نمایش وضعیت ساخت است.
گوگل افزونه gcloud-test-lab را برای Gradle فراهم میکند که آپلود و اجرای تستها را خودکار میکند. وظیفه assembleAndroidTest APK همراه با تستها را میسازد و وظایف gcloud آن را در Test Lab آپلود کرده و ماتریس را اجرا میکنند. نتایج تست به صورت pass/fail به Gradle بازگردانده میشود که امکان یکپارچگی Test Lab با هر خط لوله CI پشتیبانیکننده از Gradle را فراهم میکند. برای احراز هویت از حساب سرویس Firebase با مجوزهای Test Lab استفاده میشود.
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
Fastlane افزونه firebase_test_lab را برای یکپارچگی با تستهای iOS و Android ارائه میدهد. Fastlane lane ساخت را انجام میدهد، تستها را اجرا میکند و نتایج را پردازش میکند. برای iOS XCTest، Test Lab به فایل xctestrun نیاز دارد که هنگام ساخت هدف تست به طور خودکار ایجاد میشود. Fastlane همچنین میتواند نتایج تست را برای اطلاعرسانی به تیم در مورد وضعیت تست پس از هر اجرا در Slack یا سایر پیامرسانها آپلود کند.
پس از اتمام تستها Firebase Test Lab یک گزارش جامع ارائه میدهد که در Firebase Console و از طریق gcloud CLI در دسترس است. گزارش شامل خلاصه سریع (تعداد تستهای قبول، ناموفق و skipped)، اطلاعات دقیق درباره هر تست روی هر دستگاه، ویدیوی اجرا، اسکرینشات مراحل کلیدی و لاگهای دستگاه (logcat برای Android، system log برای iOS) است. برای تستهای ناموفق، stack trace با نشان دادن مکان دقیق خطا در دسترس است.
برای تست ربات، گزارش با تست ابزاری متفاوت است: به جای pass/fail بر اساس موارد تست، گزارش آمار کاوش را نشان میدهد. معیارهای کلیدی — تعداد صفحههای یافت شده و بازدید شده، تعداد تعاملات ربات (کلیکها، سوایپها، ورود متن)، crash و ANRهای شناسایی شده و مسیر طی شده در اپلیکیشن. ویدیوی اجرای ربات امکان ارزیابی بصری اینکه کدام صفحهها تست شدهاند و کدامها پوشش داده نشدهاند را فراهم میکند.
نتایج تستها در Google Cloud Storage در bucket متصل به پروژه ذخیره میشوند. دادهها برای خروجی و یکپارچگی با سیستمهای تحلیلی خارجی در دسترس هستند. برای ذخیرهسازی طولانیمدت و مقایسه نتایج بین اجراها، توصیه میشود خروجی BigQuery را پیکربندی کنید یا از Firebase Test Lab API برای دریافت برنامهای نتایج استفاده کنید. گوگل امکان دانلود آرشیو ZIP با مجموعه کامل نتایج برای هر اجرای تست را فراهم میکند.
سوالات متداول
طرح Spark شامل 10 تست Robo در روز و 5 ساعت تست ابزاری در ماه به صورت رایگان است. طرح Blaze بر اساس زمان تعرفهگذاری میشود: ~1 USD به ازای هر دستگاه-ساعت برای تستهای Robo و ~5 USD برای تستهای ابزاری. قیمت دقیق به منطقه و نوع دستگاه بستگی دارد.
دستگاههای فیزیکی نتایج دقیقتری از جمله مشکلات مربوط به سنسورها، دوربین، GPS، Bluetooth و عملکرد واقعی ارائه میدهند. شبیهسازها سریعتر راهاندازی میشوند و ارزانتر هستند اما مشکلات مربوط به ویژگیهای سختافزاری را آشکار نمیکنند. گوگل برای تست پیش از انتشار، دستگاههای فیزیکی را توصیه میکند.
یک فایل XML به نام robo_directives.xml با فیلدهای ورودی (ورود، رمز عبور) و دکمههای کلیک ایجاد کنید. فایل را همراه با APK هنگام اجرای تست از طریق Firebase Console یا CLI آپلود کنید. ربات قبل از شروع کاوش، اقدامات مشخص شده را انجام خواهد داد.
بله، Firebase Test Lab از سال 2024 از iOS پشتیبانی میکند. تستهای Robo (کاوش خودکار) و XCTest (تستهای ابزاری) روی دستگاههای واقعی iPhone و iPad در دسترس هستند. برای آپلود، فایل IPA با هدف تست مورد نیاز است.
از Firebase CLI در GitHub Actions استفاده کنید: احراز هویت را از طریق Service Account JSON پیکربندی کنید، gcloud SDK را نصب کنید، دستور firebase test android run را با مشخص کردن APK و پیکربندیها اجرا کنید. نتایج تست از طریق Firebase Console یا gcloud CLI در دسترس هستند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید