این صفحه شامل دستورالعملهایی برای تنظیم و اجرای تستهای سمت میزبان CTS Verifier (CTS-V) برای اندروید ۱۶ QPR2 و اندروید ۱۷ است. دو نوع تست سمت میزبان وجود دارد: تستهای چند دستگاهی (که قبل از اندروید ۱۷ معرفی شده بودند) و تستهای تعاملی (که برای اندروید ۱۷ جدید هستند):
- تستهای چند دستگاهی، تستهای کاملاً خودکار هستند.
- تستهای تعاملی ، تستهای نیمهخودکار هستند که شما را ملزم به انجام برخی مراحل دستی روی دستگاه تحت آزمایش (DUT) میکنند.
علاوه بر تستهای تعاملی جدید، ما تستهای دقت مسافتیابی دستی و مخابراتی را به تستهای چند دستگاهی سمت میزبان تبدیل کردیم و اکنون تستهای اتصال Wi-Fi الزامی است.
تستهای سمت میزبان را تنظیم کنید
برای تنظیم تستهای سمت میزبان، این مراحل را دنبال کنید (تستهای چند دستگاهی نیاز به تنظیمات اضافی دارند):
- تأیید کنید که دستگاه رومیزی شما الزامات سیستم عامل برای CTS را برآورده میکند.
- برای نصب و تأیید صحت نصب adb، AAPT2 و Python روی دسکتاپ خود، مراحل ۲ و ۵ نصب نرمافزار دسکتاپ را دنبال کنید.
- نسخه پایتون شما باید ۳.۱۱ یا بالاتر باشد. برای تعیین نسخه پایتون خود،
python3 --versionاجرا کنید. اگر نسخه پایینتر از ۳.۱۱ است، آخرین نسخه رسمی پایتون را نصب کنید. برای اطلاعات بیشتر، به بخش دانلودها درpython.orgمراجعه کنید. - برخی از تستها نیاز دارند که میزبان ماژول پایتون
venvرا داشته باشد. در سیستمهای دبیان و اوبونتو، ممکن است این ماژول به طور پیشفرض نصب نشده باشد. برای تعیین اینکه آیا نسخه پایتون شما ماژولvenvرا دارد یا خیر، دستورpython3 -m venv venvرا اجرا کنید. اگر این دستور با شکست مواجه شود، یک پیام خطا نمایش داده میشود. برای نصب بستهpython3.x-venv، دستورالعمل را دنبال کنید.
- نسخه پایتون شما باید ۳.۱۱ یا بالاتر باشد. برای تعیین نسخه پایتون خود،
اگر فقط تستهای تعاملی سمت میزبان را اجرا میکنید، به بخش اجرای تستهای سمت میزبان بروید. با این حال، اگر میخواهید تستهای چند دستگاهی را اجرا کنید، به بخش راهاندازی تستهای چند دستگاهی سمت میزبان بروید.
تستهای چند دستگاهی سمت میزبان را تنظیم کنید
برای تنظیم تستهای چند دستگاهی سمت میزبان، این مراحل را دنبال کنید:
- تأیید کنید که دستگاه رومیزی شما الزامات سیستم عامل برای CTS را برآورده میکند.
برای نصب و تأیید صحت نصب adb، AAPT2 و Python روی دسکتاپ خود، مراحل ۲ و ۵ نصب نرمافزار دسکتاپ را دنبال کنید.
- نسخه پایتون شما باید ۳.۱۱ یا بالاتر باشد. برای تعیین نسخه پایتون خود،
python3 --versionاجرا کنید. اگر نسخه پایینتر از ۳.۱۱ است، آخرین نسخه رسمی پایتون را نصب کنید. برای اطلاعات بیشتر، به بخش دانلودها درpython.orgمراجعه کنید. - برخی از تستها نیاز دارند که میزبان ماژول پایتون
venvرا داشته باشد. در سیستمهای دبیان و اوبونتو، ممکن است این ماژول به طور پیشفرض نصب نشده باشد. برای تعیین اینکه آیا نسخه پایتون شما ماژولvenvرا دارد یا خیر، دستورpython3 -m venv venvرا اجرا کنید. اگر این دستور با شکست مواجه شود، یک پیام خطا نمایش داده میشود. برای نصب بستهpython3.x-venv، دستورالعمل را دنبال کنید.
- نسخه پایتون شما باید ۳.۱۱ یا بالاتر باشد. برای تعیین نسخه پایتون خود،
دو DUT منطبق را آماده کنید که هر کدام CTS-V را تنظیم کرده باشند.
- برای اطلاعات بیشتر در مورد راهاندازی DUT، به «راهاندازی DUT» مراجعه کنید.
- برای دستورالعملهای مربوط به راهاندازی CTS-V، به بخش تنظیمات مراجعه کنید.
برای نوع آزمون خود به بخش تنظیمات بروید:
- برای آزمایشهای NFC، به «تنظیم آزمایشهای NFC» بروید.
- برای آزمایشهای اتصال Wi-Fi AP، به «تنظیم آزمایشهای اتصال Wi-Fi AP» بروید.
- برای آزمونهای دقت مسافتیابی، به «تنظیم آزمونهای دقت مسافتیابی» بروید.
- برای آزمایش ماژول CDM، به «تنظیم تستهای استاندارد دو دستگاه» و سپس به «تنظیم تستهای CDM» بروید.
اگر تست شما در این لیست نیست، به بخش «تنظیم تستهای استاندارد دو دستگاه» بروید.
تستهای NFC را تنظیم کنید
تستهای NFC از یک DUT و یک تراشه PN532 NFC استفاده میکنند.
برای تنظیم آزمایشهای NFC:
- یک تراشه NFC مدل PN532 خریداری کنید. ما مدل همه کاره PN532 را توصیه میکنیم.
- در DUT، به برنامه تنظیمات بروید.
- NFC را فعال کنید.
تراشه NFC را در جای خود قرار دهید:
برای تلفنها، دستگاه خواننده NFC دستگاه DUT را مطابق شکل ۱ قرار دهید:

شکل ۱. موقعیتیابی تراشه NFC.
برای انواع دیگر دستگاهها، تراشه را در کنار آنتن NFC دستگاه قرار دهید.
تراشه NFC مدل PN532 را با استفاده از کابل USB به ایستگاه کاری خود وصل کنید.
آزمایشهای اتصال نقطه دسترسی Wi-Fi را تنظیم کنید
تستهای اتصال نقطه دسترسی وایفای (AP) ( CtsWifiConnectionTests ) اتصال بین یک دستگاه DUT و یک نقطه دسترسی را آزمایش میکنند. میتوانید این تستها را به دو روش زیر تنظیم کنید:
- گزینه ۱: از یک شبکه Wi-Fi موجود که برای CTS-V تنظیم کردهاید استفاده کنید.
- گزینه ۲: یک نقطه دسترسی (AP) قابل برنامهریزی راهاندازی کنید.
برای اندروید ۱۷، ما اکیداً گزینه ۲ را توصیه میکنیم، اما الزامی نیست. دو بخش زیر هر گزینه را توضیح میدهند.
گزینه ۱: از یک شبکه Wi-Fi موجود که برای CTS-V تنظیم کردهاید استفاده کنید
گزینه ۱ به یک دستگاه DUT اندروید در محدوده پوشش شبکه وایفای نیاز دارد. اگر دستگاه DUT در یک جعبه محافظ قرار دارد و نمیتواند به شبکه وایفای متصل شود، آن را از جعبه محافظ خارج کنید.
گزینه ۲: راهاندازی یک نقطه دسترسی قابل برنامهریزی
برای تنظیم یک نقطه دسترسی قابل برنامهریزی برای آزمایش اتصال Wi-Fi:
AP بنانا پای R3 را خریداری و آن را راهاندازی کنید. برای اطلاعات بیشتر در مورد خرید و راهاندازی AP بنانا پای R3، به بخش راهاندازی AP بنانا پای BPI-R3 مراجعه کنید.
اختیاری: اگر جعبه محافظ ندارید، جعبه محافظ JTP-SR101 را توصیه میکنیم. این جعبه را با استفاده از اطلاعات زیر خریداری کنید:
شرکت فناوری الکترونیک دونگ گوان ژنگ شنگ، با مسئولیت محدود
شهرک صنعتی بوهویی، جاده پانلونگ، شهرک لیائوبو، شهر دونگوان، استان گوانگدونگ، چین
تماس: فارست پن
ایمیل: forest.pan@jtpmak.cn
تلفن (چین): +86 18676993556دستگاه DUT و AP را به میزبان وصل کنید و در یک جعبه محافظ RF قرار دهید. دستگاه DUT و AP باید حداقل 10 سانتیمتر از هم فاصله داشته باشند. شکل 2 این پیکربندی را نشان میدهد:

شکل ۲. دستگاه DUT و AP در جعبه محافظ.
از SSH برای تأیید دسترسی به AP از میزبان استفاده کنید.
تنظیم تستهای دقت مسافتیابی
برای تنظیم تستهای دقت مسافتیابی:
دو دستگاه DUT اندروید همسان را در فاصله ۱ متری از هم، در ارتفاع یکسان، با خط دید مستقیم و به گونهای قرار دهید که پشت هر دستگاه رو به روی یکدیگر باشد. شکل ۳ این جهتگیری را نشان میدهد:

شکل ۳. جهت دستگاه.
هر دو دستگاه را از طریق کابلهای USB به دستگاه رومیزی متصل کنید.
تستهای استاندارد دو دستگاهی را تنظیم کنید
برای تنظیمات پیشفرض دو دستگاه:
- دو DUT مشابه اندروید را تقریباً 20 سانتیمتر از هم فاصله دهید.
اکیداً توصیه میشود: هر دو دستگاه را در یک جعبه محافظ قرار دهید. جعبه محافظ، پایداری تست را بهبود میبخشد و اشکالزدایی از خطاهای تست را آسانتر میکند.
برای آزمایشهای مخابراتی، هر DUT باید دارای یک سیمکارت و سیگنال تلفن همراه باشد. اگر DUTها در جعبه محافظ قرار دارند، سیگنال تلفن همراه باید به داخل جعبه متصل شود. در غیر این صورت، دستگاهها را از جعبه محافظ خارج کنید.
اختیاری: یک ردیاب OTA برای اشکالزدایی وایفای راهاندازی کنید.
تنظیم تستهای CDM
مورد آزمایشی test_permissions_sync() بسته به نوع ساخت دستگاههایی که تست روی آنها اجرا میشود، رفتار متفاوتی دارد. بسیار مهم است که هر دو نسخه قابل اشکالزدایی (userdebug یا eng) و غیر قابل اشکالزدایی (user) توسط OEMها آزمایش شوند و تستها برای هر دو با موفقیت انجام شوند.
معافیت
بند CDD برای پیادهسازی API همگامسازی مجوزها، تنها مستلزم آن است که بتواند دادهها را با موفقیت بین دستگاهها از طریق یک کانال امن منتقل کند. از آنجایی که پیادهسازی کانال امن، الزام انطباق با CDD نیست، میتوان از این تست در نسخههای غیر قابل اشکالزدایی (کاربر) صرف نظر کرد، اما تنها در صورتی که بخواهید از پشتیبانی از ویژگی همگامسازی مجوزهای CDM انصراف دهید.
این تستها باید بدون استثنا روی نسخههای قابل اشکالزدایی با موفقیت انجام شوند.
پیشنیازهای آزمایش روی نسخههای غیرقابل اشکالزدایی
اگر معاف نیستید، تأیید کنید که پیشنیازهای زیر را دارید.
کانال امن از AVF ( AttestationVerificationFramework ) برای تأیید اعتبار سختافزار استفاده میکند. گواهیهای تولید شده توسط هر دو طرف شامل چندین قطعه اطلاعات در مورد خودشان است تا تأیید کند که هیچ تغییر غیرمجازی در سیستم آنها رخ نداده است. AVF در طول فرآیند تأیید، موارد زیر را بررسی میکند:
- دستگاه به اینترنت دسترسی دارد
- دستگاه از بوت تأیید شده استفاده میکند و ساخت باید با کلید انتشار امضا شود، نه با کلید توسعه
- دستگاه قفل بوت لودر دارد. برای دستورالعملهای دقیق، به قفل کردن بوت لودر مراجعه کنید.
- سیستمعامل، بوت کلید و سطوح وصله فروشنده کلیدی ظرف ۱۲ ماه قابل استفاده هستند. از نسخهای که بیش از یک سال از ساخت آن میگذرد استفاده نکنید.
- گواهی دستگاه توسط یکی از گواهیهای ریشه مورد تأیید فروشنده پشتیبانی میشود. گواهیهای ریشه مورد اعتماد خود را در پوشش منبع
vendor_required_attestation_certificates.xmlمشخص کنید.
اجرای تستهای سمت میزبان
برخی از تستهای چند دستگاهی، مانند تستهای NFC، نیاز به تنظیمات اضافی دارند. برای تستهایی که نیاز به تنظیمات اضافی دارند، هر تست جداگانه اجرا میشود. برای تستهایی که نیاز به تنظیمات اضافی ندارند، میتوانید تستها را به صورت گروهی اجرا کنید.
در ایستگاه کاری آزمایشی خود، کنسول
cts-v-hostرا از دایرکتوری که بسته زیپ CTS-V از آن خارج شده است، اجرا کنید:./android-cts-verifier/android-cts-v-host/tools/cts-v-host-tradefedاز داخل برنامه CTS-V در DUT، روی تستهای سمت میزبان کلیک کنید. شکل 4 تستهای سمت میزبان را در برنامه CTS-V نشان میدهد:

شکل ۴. تستهای سمت میزبان در برنامه CTS-V.
فهرستی از ماژولهای تست چند دستگاهی سمت میزبان نمایش داده میشود.
در کنسول میزبان CTS-V، از دستور زیر برای اجرای تستهای چند دستگاهی که از تنظیمات استاندارد دو دستگاهی استفاده میکنند، استفاده کنید:
run cts-v-host-multidevice-defaultنتایج در زیر هر ماژول تست در برنامه CTS-V روی DUT ظاهر میشوند. تستهای با رنگ سبز پذیرفته شدهاند، تستهای با رنگ قرمز ناموفق بودهاند.
شکل 5 نتایج نمونه برای آزمایشهای CtsCompanionDeviceManager را نشان میدهد:

شکل 5. نتایج آزمایش چند دستگاهی سمت میزبان در برنامه CTS-V.
در کنسول میزبان CTS-V، از دستور زیر برای اجرای تستهای تعاملی استفاده کنید:
run cts-v-host-interactiveنتایج در زیر هر ماژول تست در برنامه CTS-V روی DUT ظاهر میشوند. تستهای با رنگ سبز پذیرفته شدهاند، تستهای با رنگ قرمز ناموفق بودهاند.
برای هر تستی که نیاز به تنظیمات اضافی داشت، تست را جداگانه با استفاده از دستور زیر اجرا کنید:
run cts-v-host -m test_module_nameبرای مثال، برای اجرای تستهای NFC، از این دستور استفاده کنید:
run cts-v-host -m CtsNfcHceMultiDeviceTestCasesنتایج در زیر هر ماژول تست در برنامه CTS-V روی DUT ظاهر میشوند. تستهای با رنگ سبز پذیرفته شدهاند، تستهای با رنگ قرمز ناموفق بودهاند.
تستهای اتصال نقطه دسترسی Wi-Fi را اجرا کنید
شما میتوانید تستهای اتصال Wi-Fi AP را به دو روش زیر اجرا کنید:
- گزینه ۱: از یک شبکه Wi-Fi موجود که برای CTS-V تنظیم کردهاید استفاده کنید.
- گزینه ۲: یک نقطه دسترسی قابل برنامهریزی راهاندازی کنید.
گزینه ۱: از یک شبکه Wi-Fi موجود که برای CTS-V تنظیم کردهاید استفاده کنید
برای اجرای تستهای اتصال Wi-Fi AP روی یک شبکه Wi-Fi موجود:
فایل پیکربندی بستر آزمایش (
WifiConnectionTestbed.yaml) را ویرایش کنید. این فایل در دایرکتوری است که CTS-Verifier از حالت فشرده خارج شده است. برای مثال:./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yamlمقدار فیلدهای
wifi_ssidوwifi_passwordرا به SSID و رمز عبور شبکه وایفای تغییر دهید. مثال زیر محل قرارگیری این تنظیمات را نشان میدهد:TestBeds: - Name: WifiConnectionTestbed Controllers: AndroidDevice: '*' TestParams: use_programmable_ap: False wifi_ssid: WIFI-SSID wifi_password: WIFI-PASSWORDدر کنسول میزبان CTS-V، دستور زیر را اجرا کنید:
run cts-v-host -m CtsWifiConnectionTests
گزینه ۲: اجرا با یک نقطه دسترسی قابل برنامهریزی
برای اجرای تستهای اتصال Wi-Fi AP روی یک AP قابل برنامهریزی:
فایل پیکربندی بستر آزمایش (
WifiConnectionTestbed.yaml) را ویرایش کنید. این فایل در دایرکتوری است که CTS-Verifier از حالت فشرده خارج شده است. برای مثال:./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yamlمقدار
hostnameرا بر اساس تنظیمات SSH محلی خود به آدرس IP نقطه دسترسی (AP) تغییر دهید. برای شناسایی آدرس IP، به بخش «یافتن آدرس IP نقطه دسترسی» مراجعه کنید. مثال زیر محل تنظیمhostnameرا نشان میدهد:TestBeds: - Name: WifiConnectionTestbed Controllers: AndroidDevice: '*' # Specify settings for the AP. OpenWrtDevice: - hostname: AP-IP skip_init_reboot: True TestParams: use_programmable_ap: Trueدر کنسول میزبان CTS-V، دستور زیر را اجرا کنید:
run cts-v-host -m CtsWifiConnectionTests
اجرای تستهای سمت میزبان USB
اندروید ۱۷ شامل تستهای سمت میزبان USB CTS-V است که برای اجرا به adb از طریق وایفای نیاز دارند.
برخی از تستهای USB برای دسترسی به SystemAPIهایی که مجوزهایی دارند که برنامه معمولی CTS-V نمیتواند به آنها دسترسی داشته باشد، نیاز به استفاده از میزبان CTS-V دارند. این تستها بدون اتصال به شبکه هستند و نیاز به استفاده از adb از طریق Wi-Fi دارند.
اگر دستگاه DUT از گزارش نوع پورت BC 1.2 یا پروفایلهای توان USB در UsbPort.java پشتیبانی کند، لوازم جانبی Type-C زیر مورد نیاز است:
- یک شارژر USB Type-C برای انتقال برق (PD)
- یک پورت استاندارد پاییندستی (SDP) برای شارژ باتری USB 1.2 (BC 1.2). این پورتها محدود به ارائه 500 میلیآمپر یا 900 میلیآمپر به DUT هستند و معمولاً در پورتهای USB هابهای خارجی یافت میشوند.
- یک پورت شارژ USB BC 1.2 downstream (CDP). این پورتها میتوانند ۱.۵ آمپر جریان برای DUT و داده فراهم کنند. پورت Type-C در لپتاپ یا کامپیوتر احتمالاً یک CDP است.
- یک پورت شارژ اختصاصی USB BC 1.2 (DCP). این پورتها میتوانند جریان ۱.۵ آمپر را بدون داده برای DUT فراهم کنند. شارژر USB Type-C PD در این لیست احتمالاً یک DCP است.
DUT را با استفاده از
adbاز طریق Wi-Fi متصل کنید. برای جزئیات تنظیمات، به «اتصال به دستگاه از طریق Wi-Fi» مراجعه کنید.دستگاه را به صورت فیزیکی از تمام اتصالات USB جدا کنید. اگر دستگاه هنگام اجرای دستور تست به هر میزبان USB یا لوازم جانبی متصل باشد، تست با شکست مواجه میشود.
دستور تست زیر را اجرا کنید:
run cts-v-host -m CtsUsbTypecTestCases
پس از آزمایشها، نتایج در برنامه CTS-V تحت آزمایشهای سمت میزبان ، همانطور که در شکلهای زیر نشان داده شده است، ظاهر میشوند:

شکل 6. تستهای USB سمت میزبان در برنامه CTS-V.

شکل 7. مجموعه CtsUsbTypecTestCases در برنامه USB CTS-V سمت میزبان.
عیبیابی تستهای چند دستگاهی
این بخش به شما کمک میکند تا مشکلات رایج را برطرف کنید.
عدم دریافت شماره تلفن در طول CtsTelecomTest
اگر پیام خطای Failed to get phone number for <serial> دریافت کردید، این مراحل را دنبال کنید:
بررسی کنید که هر DUT دارای سیم کارت باشد.
اگر خطا همچنان ادامه داشت، ممکن است سیمکارتها از بازیابی خودکار شماره پشتیبانی نکنند، در این صورت باید شماره تلفنها را به طور صریح در دستور وارد کنید.
برای مثال، برای DUT 1 (سریال
17011FDEE0002N، شماره تلفن555-0000) و DUT 2 (سریالR3CN90YNAR، شماره تلفن555-1111)، آرگومانهای زیر را به دستورrun cts-v-hostاضافه کنید:--module-arg CtsTelecomTest:dut_serial:17011FDEE0002N \ --module-arg CtsTelecomTest:dut_phone_number:555-0000 \ --module-arg CtsTelecomTest:ref_phone_number:555-1111
در طول CtsMultiDeviceGenericRangingAccuracyTests هیچ پاسخی از سرور دریافت نشد.
اگر پیام خطای زیر را دریافت کردید، برنامه آزمایشی میتواند توسط مدیریت فرآیند پسزمینه مخصوص OEM در دستگاههای خاص، مسدود یا از کار بیفتد:
mobly.snippet.errors.ProtocolError: <AndroidDevice|Initiator> No response from server. Check the device logcat for crashes.
برای حل این مشکل، محدودیتهای پسزمینه را غیرفعال کنید یا بستههای زیر را به لیست مجاز اضافه کنید:
| بسته | نام نمایشی |
|---|---|
com.google.snippet.uwb | CtsUwbSnippetApp |
com.google.snippet.ranging | CtsRangingSnippetApp |
com.google.snippet.bluetooth | CtsBluetoothMultiDeviceSnippetApp |
com.google.android.mobly.snippet.bundled | androidx.multidex.MultDexApplication |
رفع مشکل عدم پاسخگویی GetFirmwareVersion در طول تستهای NFC
اگر هنگام اجرای تستهای چند دستگاهی، پیام verify_firmware_version RuntimeError: No response for GetFirmwareVersion دریافت کردید، تستها نمیتوانند به برد NFC PN532 دسترسی پیدا کنند.
برای رفع این مشکل، مسیر سریال مورد استفاده توسط برد NFC PN532 روی میزبان خود، مانند dev/ttyUSB1 را شناسایی کنید، سپس آن را به صورت دستی با استفاده از آرگومان --module-arg در کنسول مشخص کنید:
run cts-v-host -m CtsNfcHceMultiDeviceTestCases --module-arg CtsNfcHceMultiDeviceTestCases:pn532_serial_path:/dev/ttyUSB1
رفع مشکل پیام خطای تراکنش ناموفق در طول آزمایشهای NFC
اگر پیام Transaction failed, check device logs for more information. در تمام موارد آزمایش NFC، احتمالاً به این دلیل است که تراشه NFC دستگاه DUT نمیتواند PN532 را شناسایی کند.
اگر چندین دستگاه به میزبان متصل دارید و برخی از آنها PN532 را روی خود ندارند، ممکن است DUT اشتباه انتخاب شده باشد. برای اطلاعات بیشتر، به بخش «تنظیم تستهای NFC» مراجعه کنید.
برای رفع این مشکل، یکی از کارهای زیر را انجام دهید:
سریال صحیح DUT را در دستور تست سمت میزبان خود با استفاده از آپشن
-sتنظیم کنید.تمام دستگاههای غیر DUT را از میزبان جدا کنید.
مورد آزمایشی CDM، test_permissions_sync نادیده گرفته میشود.
اگر آزمایش روی دستگاههای غیرقابل اشکالزدایی اجرا میشود، بررسی کنید که آیا از این امر معاف هستید یا خیر. در غیر این صورت، تأیید کنید که هر دو دستگاه پیشنیازها را برآورده میکنند.