آزمایش پلاتفرم Android

«پروژه منبع باز Android»‏ (AOSP) چندین ابزار و مجموعه آزمایشی برای آزمایش بخش‌های مختلف پیاده‌سازی شما ارائه می‌دهد. پیش‌از استفاده از صفحه‌های این بخش، باید با اصطلاحات زیر آشنا باشید:

دستگاه سازگار با Android
دستگاهی که بتواند هر برنامه طرف سومی را که توسط توسعه‌دهندگان طرف سوم بااستفاده از کیت توسعه نرم‌افزار Android و NDK نوشته شده است اجرا کند. دستگاه‌های سازگار با Android باید از الزامات سند تعریف سازگاری (CDD) پیروی کنند و مجموعه آزمایش سازگاری (CTS) را باموفقیت بگذرانند. دستگاه‌های سازگار با Android واجدشرایط شرکت در اکوسیستم Android هستند که شامل امکان دریافت پروانه Google Play، امکان دریافت پروانه مجموعه خدمات تلفن همراه Google (GMS) از برنامه و میانای برنامه‌سازی کاربردی، و استفاده از علامت تجاری Android می‌شود. همه می‌توانند از کد منبع Android استفاده کنند، اما برای اینکه دستگاهی بخشی از بوم‌سازگان Android محسوب شود، باید با Android سازگار باشد.
آرتیفکت
گزارش مربوط به ساخت که عیب‌یابی محلی را ممکن می‌کند.
سند تعریف سازگاری (CDD)
سندی که الزامات نرم‌افزاری و سخت‌افزاری دستگاه سازگار با Android را فهرست می‌کند.
مجموعه آزمون سازگاری (CTS)

مجموعه آزمایشی رایگان و در سطح تجاری که برای بارگیری به‌صورت دودویی یا منبع در AOSP دردسترس است. ‫CTS مجموعه‌ای از آزمون‌های واحد است که برای ادغام در گردش کار روزانه شما طراحی شده است. هدف CTS آشکار کردن ناسازگاری‌ها و اطمینان از سازگار ماندن نرم‌افزار درطول فرایند توسعه است.

آزمایش‌های CTS و پلاتفرم به‌صورت متقابل انحصاری نیستند. در اینجا چند دستورالعمل کلی آمده است:

  • اگر آزمایشی صحت عملکردها یا رفتارهای چارچوب API را تأیید می‌کند، و این آزمایش باید در همه شرکای سازنده تجهیزات اصلی اجرا شود، باید در CTS باشد.
  • اگر آزمایشی برای شناسایی پسرفت‌ها درطول توسعه پلاتفرم درنظر گرفته شده است، و ممکن است برای انجام آن به اجازه ویژه نیاز باشد، و ممکن است به جزئیات پیاده‌سازی (همان‌طور که در AOSP منتشر شده است) وابسته باشد، باید آزمایشی پلاتفرمی باشد.
خدمات تلفن همراه Google (GMS)

مجموعه‌ای از برنامه‌ها و میاناهای برنامه‌سازی کاربردی Google که می‌توانند ازپیش در دستگاه‌ها نصب شوند.

‫GoogleTest (GTest)

چارچوب آزمایش و شبیه‌سازی C++‎. باینری‌های GTest معمولاً به لایه‌های انتزاعی سطح پایین‌تر دسترسی دارند یا IPC خام را دربرابر خدمات مختلف سیستم انجام می‌دهند. رویکرد آزمایشی برای GTest معمولاً با سرویسی که آزمایش می‌شود، ارتباط نزدیکی دارد. ‫CTS حاوی چارچوب GTest است.

آزمایش ابزارگری

محیط اجرای آزمایش ویژه‌ای که با فرمان am instrument راه‌اندازی می‌شود، که در آن فرایند برنامه هدف بازراه‌اندازی می‌شود و با زمینه برنامه پایه مقداردهی اولیه می‌شود، و رشته ابزار دقیق در ماشین مجازی فرایند برنامه شروع می‌شود. ‫CTS حاوی آزمایش‌های ابزار دقیق است.

Logcat

ابزار خط فرمانی که گزارشی از پیام‌های سیستم ایجاد می‌کند، ازجمله ردپای پشته زمانی که دستگاه خطایی را نشان می‌دهد و پیام‌هایی که از برنامه‌تان با کلاس Log نوشته‌اید.

گزارش

استفاده از گزارش برای پیگیری رویدادهای سیستم رایانه، مانند خطاها. ثبت گزارش در Android به‌دلیل ترکیب استانداردهای استفاده‌شده که در ابزار Logcat ترکیب شده‌اند، پیچیده است.

postsubmit test

آزمایش Android که وقتی وصله جدیدی در شاخه هسته مشترک انجام می‌شود. با وارد کردن aosp_kernel به‌عنوان نام جزئی شاخه، می‌توانید فهرستی از شاخه‌های هسته را با نتایج دردسترس ببینید. برای مثال، نتایج android-mainline را می‌توانید در https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid پیدا کنید.

آزمایش پیش‌ارسال

آزمایشی که برای جلوگیری از معرفی خرابی‌ها به هسته‌های مشترک استفاده می‌شود.

فدراسیون تجارت

Tradefed، چارچوب آزمایشی پیوسته‌ای که برای اجرای آزمایش‌ها در دستگاه‌های Android طراحی شده است. برای مثال، از Tradefed برای اجرای آزمایش‌های «مجموعه آزمایش سازگاری» و «مجموعه آزمایش فروشنده» استفاده می‌شود.

مجموعه آزمایش فروشنده (VTS)

مجموعه‌ای از قابلیت‌های گسترده برای آزمایش Android، ترویج فرایند توسعه آزمون‌محور، و خودکارسازی آزمایش لایه انتزاع سخت‌افزار (HAL) و هسته سیستم‌عامل.

انواع آزمایش پلاتفرم

آزمایش پلاتفرم معمولاً با یک یا چند سرویس سیستم Android یا لایه‌های HAL تعامل دارد، عملکردهای موضوع تحت آزمایش را اجرا می‌کند، و صحت نتیجه آزمایش را تأیید می‌کند. آزمایش پلاتفرم ممکن است:

  • (نوع ۱) میاناهای برنامه‌سازی کاربردی چارچوب تمرین بااستفاده از چارچوب Android. میاناهای برنامه‌سازی کاربردی خاصی که استفاده می‌شوند می‌توانند شامل این موارد باشند:
    • میاناهای برنامه‌سازی کاربردی عمومی که برای برنامه‌های شخص ثالث درنظر گرفته شده است
    • میاناهای برنامه‌سازی کاربردی پنهان که برای برنامه‌های ممتاز درنظر گرفته شده‌اند، یعنی میاناهای برنامه‌سازی کاربردی سیستم یا میاناهای برنامه‌سازی کاربردی خصوصی (@hide، یا protected، package private)
  • (نوع ۲) فراخوانی مستقیم سرویس‌های سیستم Android بااستفاده از binder خام یا پراکسی‌های IPC.
  • (نوع ۳) بااستفاده از میاناهای برنامه‌سازی کاربردی سطح پایین یا میاناهای IPC مستقیماً با HAL تعامل برقرار می‌کنند.

آزمایش‌های نوع ۱ و ۲ معمولاً آزمایش‌های ابزاربندی هستند، درحالی‌که آزمایش‌های نوع ۳ معمولاً GTest هستند.

حالا چه می‌شود؟

در اینجا فهرستی از اسنادی که می‌توانید برای کسب اطلاعات دقیق‌تر بخوانید ارائه شده است: