مجموعه تست تصویر دوربین (ITS) چارچوبی برای اجرای تستها روی تصاویر تولید شده توسط دوربین اندروید است. هدف کلی هر تست در ITS پیکربندی دوربین به روشی خاص، گرفتن یک یا چند عکس و بررسی عکسها برای بررسی وجود دادههای تصویری مورد انتظار است. بسیاری از تستها نیاز دارند که دوربین به سمت یک نمودار هدف خاص نشانه گرفته شود یا با شدت خاصی روشن شود.
ITS در بخش تست CTS Verifier در مسیر cts/apps/CameraITS قرار دارد. دستگاهها باید تستهای ITS مربوط به ویژگیهای پشتیبانیشده توسط چارچوب دوربین برای برنامههای شخص ثالث به عنوان زیرمجموعهای از CTS را با موفقیت پشت سر بگذارند.
راهاندازی
برای اجرای تستهای ITS، موارد زیر باید تنظیم شوند:
- دستگاه تحت آزمایش (DUT)
- یک دستگاه میزبان (مثلاً یک کامپیوتر رومیزی یا لپتاپ لینوکس)
- صحنهای که دوربین از آن عکس میگیرد
تنظیمات دستگاه تحت آزمایش (DUT)
برای تنظیم DUT، مراحل زیر را دنبال کنید:
- DUT را از طریق USB به یک دستگاه میزبان وصل کنید.
- مجوزهای لازم برای دسترسی میزبان به DUT از طریق ADB را اعطا کنید.
برنامه CTS Verifier (
CtsVerifier.apk) را روی دستگاه نصب کنید. برای اطلاعات بیشتر، به بخش «استفاده از CTS Verifier» مراجعه کنید.extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zipcd android-cts-verifieradb install -r -g CtsVerifier.apkدر DUT، برنامه دوربین پیشفرض را اجرا کنید و تمام پنجرههایی که هنگام اجرا ظاهر میشوند را پاک کنید تا از تداخل در حین آزمایش جلوگیری شود.
تنظیم میزبان
ITS مستلزم آن است که دستگاه میزبان از طریق USB به DUT متصل باشد، بتواند از ADB برای کنترل و ارتباط دستگاه استفاده کند و نرمافزار مورد نیاز را نصب کرده باشد.
برای راهاندازی دستگاه میزبان خود، مطمئن شوید که نرمافزار زیر نصب شده است.
ابزارهای پلتفرم SDK اندروید
ابزارهای پلتفرم SDK اندروید باید نصب شده باشند و ADB باید در مسیر اجرایی پوسته یا ترمینالی که روی دستگاه میزبان در حال اجرا است، قرار داشته باشد. برای نسخه عمومی منتشر شده از ابزارهای پلتفرم SDK اندروید، به یادداشتهای انتشار ابزارهای پلتفرم SDK مراجعه کنید.
پایتون
پایتون باید روی دستگاه میزبان نصب شود. برای اطمینان از پشتیبانی از نسخههای سازگار، توصیه میکنیم از یک توزیع پایتون همراه استفاده کنید. برای جزئیات بیشتر در مورد اینکه کدام نسخههای پایتون و بسته را برای یک نسخه خاص نصب کنید، به یادداشتهای انتشار Camera ITS برای نسخه مربوطه مراجعه کنید.
موبلی
برای اندروید ۱۲ و بالاتر، چارچوب تست Mobly را نصب کنید. Mobly به شما امکان میدهد یک DUT و تبلت نمودار را در کلاس its_base_test تنظیم کنید. برای نصب چارچوب تست Mobly، دستور زیر را اجرا کنید:
pip install moblyتنظیمات محیط
برای تنظیم محیط آزمایش، دستور زیر را اجرا کنید:
cd CameraITSsource build/envsetup.sh
این دستور نصب پایتون را بررسی میکند، متغیر محیطی PYTHONPATH را تنظیم میکند و تستهای واحد را روی ماژولهای utils/*.py اجرا میکند. اگر هیچ خطایی در ترمینال چاپ نشود، محیط برای اجرای تستهای ITS آماده است.
چیدمان صحنه
برای تنظیم صحنهها، توصیه میکنیم از تنظیمات دوربین ITS-in-a-box برای سهولت در اتوماسیون، قابلیت اطمینان و کارایی در آزمایش استفاده کنید. تجهیزات تست ITS-in-a-box از تمام الزامات روشنایی، مرکزبندی و تغییر نمودار برای ITS پشتیبانی میکنند. همچنین، ITS-in-a-box برای آزمایش افزونههای دوربین مورد نیاز است.
برای تست دستی، موارد زیر را بررسی کنید:
- دستگاه تست نفوذ (DUT) روی سه پایه قرار دارد
- DUT برای هر آزمایش به صحنه صحیح اشاره میکند. (اسکریپت آزمایش ITS قبل از شروع آزمایشها در یک صحنه جدید، دستورالعملهایی را برای تغییر تنظیمات صحنه ارائه میدهد.)
- DUT از طریق USB به دستگاه میزبان متصل میشود.
- دستگاه تست (DUT) در طول اجرای آزمایش حرکت نمیکند.
- صحنه با یک منبع نور ثابت و بدون نوسان روشن میشود. (از نور فلورسنت استفاده نکنید زیرا باعث سوسو زدن میشود.)
اسکریپت تست ITS پیامی را نمایش میدهد که از کاربر میخواهد قبل از شروع تستها در یک صحنه جدید، تنظیمات صحنه را تغییر دهد.
جهت گوشی باید طوری تنظیم شود که دوربین بدون چرخش عکس بگیرد. سادهترین راه برای بررسی این موضوع، استفاده از صحنههای چهره در scene2 است. اکثر گوشیها گوشی را در جهت افقی قرار میدهند، به این صورت که برای دوربین عقب، گوشی در خلاف جهت عقربههای ساعت و برای دوربین جلو، در جهت عقربههای ساعت میچرخد.
فایلهای پیکربندی
با استفاده از چارچوب Mobly، باید یک فایل پیکربندی config.yml برای تعریف بستر آزمایشی Mobly ایجاد کنید. در ادامه مثالهایی برای موارد استفاده مختلف ارائه شده است.
فایل config.yml صحنههای مبتنی بر تبلت
در ادامه یک نمونه فایل config.yml برای صحنههای مبتنی بر تبلت آمده است. برای تست مبتنی بر تبلت، کلمه کلیدی TABLET باید در نام testbed باشد. در طول مقداردهی اولیه، اجراکننده تست Mobly پارامترهای موجود در فایل را مقداردهی اولیه کرده و آنها را به تستهای منفرد ارسال میکند.
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
برای فراخوانی بستر تست، tools/run_all_tests.py را اجرا کنید. اگر هیچ مقدار خط فرمانی برای مشخص کردن دوربینها یا صحنهها وجود نداشته باشد، تست با مقادیر فایل config.yml اجرا میشود. اگر مقادیر خط فرمانی برای دوربینها یا صحنهها وجود داشته باشد، این مقادیر، مقادیر موجود در بخش TestParams از فایل config.yml را نادیده میگیرند. برای مثال:
python tools/run_all_tests.pypython tools/run_all_tests.py camera=1python tools/run_all_tests.py scenes=2,1,0python tools/run_all_tests.py camera=0 scenes=scene_telepython tools/run_all_tests.py camera=0.4 scenes=4,scene6_tele
پارامتر مقیاسبندی نمودار
در اندروید ۱۷ و بالاتر، پارامتر chart_scaling در config.yml برای TEST_BED_TABLET_SCENES گنجانده شده است. این پارامتر مشکلات مقیاسبندی نمودار را برای دستگاههای دوربین تلهفوتو با میدان دید (FoV) وسیعتر برطرف میکند، از برش صحنه جلوگیری میکند و فوکوس مناسب دستگاه را در حین آزمایش اعمال میکند.
مقادیر پشتیبانیشده برای chart_scaling عبارتند از 1 ، 0.33 ، 0.5 یا 0.67 ، و None به عنوان پیشفرض. این رویکرد به دستگاهها اجازه میدهد از یک ضریب مقیاسبندی بهینه متناسب با نیازهای خاص خود استفاده کنند و تست عملکردی را در تمام دستگاهها حفظ کنند.
اگر chart_scaling روی None تنظیم شده باشد، تستها به طور خودکار ضریب مقیاسبندی را با استفاده از chart_scaling_logic تعیین میکنند. در غیر این صورت، از مقدار مشخص شده در config.yml استفاده میشود، یا اگر مقیاسبندی در دسترس نباشد، خطایی علامتگذاری میشود.
در ادامه یک نمونه فایل config.yml با پارامتر chart_scaling آمده است.
TestBeds:
- Name: TEST_BED_TABLET_SCENES # Need 'tablet' in name for tablet scenes
# Use TEST_BED_MANUAL for manual testing and remove below lines:
# - serial <tablet_id>
# label: tablet
# Test configuration for scenes[0:4, 6]
Controllers:
AndroidDevice:
- serial: <device-id> # quotes needed if serial id entirely numeric
label: dut
- serial: <tablet-id> # quotes needed if serial id entirely numeric
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # quotes needed
lighting_cntl: <controller-type> # can be arduino or "None"
lighting_ch: <controller-channel>
camera: <camera-id>
scene: <scene-name> # if <scene-name> runs all scenes
foldable_device: "False" # "True" if testing foldable device
chart_scaling: "None" # use the values available for scene to be tested
resultstore_upload: "False" # "True" if results should be uploaded to ResultStore
برای فعال کردن قابلیتهای مقیاسبندی نمودار دوربین ITS، تنظیمات سمت تست لازم است. اگر تستی که استفاده میکنید از این پشتیبانی نمیکند، یک اشکال (bug) ثبت کنید.
در ادامه یک نمونه تغییر سمت آزمایشی با پارامتر chart_scaling آمده است.
# load chart for scene
its_session_utils.load_scene(
cam, props, self.scene, self.tablet, self.chart_distance,
chart_scaling=self.chart_scaling)
فایل پیکربندی صحنه sensor_fusion.yml
در ادامه یک نمونه فایل config_yml برای تستهای sensor_fusion آمده است. برای تست sensor_fusion ، کلمه کلیدی SENSOR_FUSION باید در نام testbed باشد. اندروید ۱۳ و بالاتر به دلیل پیشنمایش و تست تثبیت ویدیو، فقط از کنترلر آردوینو برای sensor fusion پشتیبانی میکند. اندروید ۱۲ از کنترلرهای آردوینو و Canakit پشتیبانی میکند.
Testbeds
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino
rotator_ch: 1
camera: 0
برای اجرای تستهای sensor_fusion با جعبه فیوژن سنسور ، دستور زیر را اجرا کنید:
python tools/run_all_tests.py scenes=sensor_fusionpython tools/run_all_tests.py scenes=sensor_fusion camera=0python tools/run_all_tests.py scenes=scene_flash,feature_combinationpython tools/run_all_tests.py scenes=checkerboard camera=1
فایل config.yml مربوط به چندین بستر آزمایشی
در ادامه یک نمونه فایل config.yml با چندین بستر آزمایشی، یک بستر آزمایشی تبلت و یک بستر آزمایشی sensor_fusion آمده است. بستر آزمایشی صحیح توسط صحنههای آزمایش شده تعیین میشود.
Testbeds
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
تست دستی فایل config.yml
در ادامه یک نمونه فایل config.yml برای تست دستی آمده است. اندروید ۱۴ و بالاتر از تست دستی برای همه تستها به جز تستهای scene_extensions پشتیبانی میکند. برای تست دستی، کلمه کلیدی MANUAL باید در نام testbed باشد. همچنین، بخش AndroidDevice نمیتواند شامل بخش سریال یا برچسب برای تبلت باشد.
TestBeds:
- Name: TEST_BED_MANUAL
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
debug_mode: "False"
camera: 0
scene: 1
فایل config.yml تست دکل Gen2
در ادامه یک نمونه فایل config.yml از یک بستر آزمایشی TEST_BED_GEN2 آمده است. این بستر آزمایشی برای آزمایشهای scene_ip استفاده میشود که از یک Gen2 rig](/docs/compatibility/cts/camera-its-box-gen2) استفاده میکند. مثال زیر پارامترهای بستر آزمایشی را در زمانی که Gen2 rig در دسترس است و آزمایشهای scene_ip نادیده گرفته نمیشوند، نشان میدهد.
Testbeds
- Name: TEST_BED_GEN2
# Test configuration for scene_ip/test_default_jca_ip.py
Controllers:
AndroidDevice:
- serial: <device-id> # quotes needed if serial id entirely numeric
label: dut
TestParams:
debug_mode: "False" # quotes are needed here
chart_distance: 30
rotator_cntl: gen2_rotator # gen2 rig specific. "None" if gen2 rig not available
rotator_ch: 0
camera: <camera-id>
foldable_device: "False" # "True" if testing foldable device
tablet_device: "False" # "True" if testing tablet device
lighting_cntl: gen2_lights # gen2 rig specific. "None" if gen2 rig not available
lighting_ch: 1
scene: scene_ip
مثال زیر پارامترهای بستر آزمایش را در زمانی که دستگاه Gen2 در دسترس نیست و تستهای scene_ip نادیده گرفته میشوند، نشان میدهد.
Testbeds
- Name: TEST_BED_GEN2
# Test configuration for scene_ip/test_default_jca_ip.py
Controllers:
AndroidDevice:
- serial: <device-id> # quotes needed if serial id entirely numeric
label: dut
TestParams:
debug_mode: "False" # quotes are needed here
chart_distance: 30
rotator_cntl: "None" # gen2 rig specific. "None" if gen2 rig not available
rotator_ch: <controller-channel>
camera: <camera-id>
foldable_device: "False" # "True" if testing foldable device
tablet_device: "False" # "True" if testing tablet device
lighting_cntl: "None" # gen2 rig specific. "None" if gen2 rig not available
lighting_ch: <controller-channel>
scene: scene_ip
برای اجرای تست scene_ip، از یکی از دستورات زیر استفاده کنید:
python tests/scene_ip/test_default_jca_ip.py -c config.ymlpython tools/run_all_tests.py camera=<camera-id> scenes=scene_ip
اجرای تستهای ITS
این بخش نحوه اجرای تستهای ITS را شرح میدهد.
فراخوانی تستها
پس از راهاندازی دستگاه، ماشین میزبان (شامل محیط) و صحنه فیزیکی، تستهای ITS را با استفاده از فرآیند زیر اجرا کنید.
برنامه CTS Verifier را باز کنید. در منوی تستها، Camera ITS Test را انتخاب کنید. برای اندروید ۱۷ و بالاتر، تستهای
sensor_fusionوfeature_combinationدر یک activity اضافی به نام Camera ITS Sensor Fusion Rig Test قرار دارند.از دستگاه میزبان، تستهای ITS را از دایرکتوری
CameraITS/اجرا کنید. به عنوان مثال، برای دستگاهی با دوربینهای جلو و عقب، دستور زیر را اجرا کنید:python tools/run_all_tests.pyاین اسکریپت بر اساس فایل
config.ymlدوربینها و صحنههای آزمایشی را بررسی میکند. برای اشکالزدایی تنظیمات، توصیه میکنیم برای سرعت بیشتر، یکی از صحنههایscene2را با یک تست واحد اجرا کنید.برای تست دستی، قبل از شروع اجرای مجموعه تستهای ITS روی هر صحنه، اسکریپت از صحنه فعلی عکس میگیرد، آن را به صورت JPEG ذخیره میکند، مسیر JPEG را در کنسول چاپ میکند و از کاربر میخواهد که تأیید کند که آیا تصویر سالم است یا خیر. این چرخه ضبط و تأیید تا زمانی که کاربر تأیید کند که تصویر سالم است، ادامه مییابد. پیامهای این چرخه در ادامه آمده است.
Preparing to run ITS on camera 0 Start running ITS on camera: 0 Press Enter after placing camera 0 to frame the test scene: scene1_1 The scene setup should be: A grey card covering at least the middle 30% of the scene Running vendor 3A on device Capture an image to check the test scene Capturing 1 frame with 1 format [yuv] Please check scene setup in /tmp/tmpwBOA7g/0/scene1_1.jpg Is the image okay for ITS scene1_1? (Y/N)هر بار اجرای اسکریپت، یک گزارش (log) چاپ میکند که برای هر تست ITS، گزینههای
PASS،FAIL،FAIL*یاSKIPرا نشان میدهد.FAIL*نشان میدهد که تست ناموفق بوده است، اما از آنجایی که تست هنوز اجباری نشده است، تست به عنوانPASSبه CtsVerifier گزارش میشود.SKIPنشان میدهد که تست با موفقیت انجام شده است، زیرا دستگاه قابلیت اصلی مورد آزمایش را اعلام نکرده است. به عنوان مثال، اگر دستگاهی از طریق رابطهای دوربین اعلام نکند که از DNG پشتیبانی میکند، تستهای مربوط به ضبط فایل DNG رد شده و به عنوانPASSشمارش میشوند.برای تأیید اینکه آزمایشها الزامات آزمایش را برآورده کردهاند، روی دکمه علامت سبز ضربه بزنید. سپس ورودی Camera ITS Test در منوی آزمایشهای CTS Verifier سبز میشود و نشان میدهد که تلفن از Camera ITS عبور کرده است.
آزمایش موازی DUT
دستگاههایی که اندروید ۱۴ یا بالاتر دارند، از تست DUT موازی پشتیبانی میکنند. این به شما امکان میدهد DUTها را به صورت موازی با چندین دستگاه تست کنید تا سرعت تست کلی افزایش یابد. به عنوان مثال، تست موازی به شما امکان میدهد دوربین ۰ را در یک دستگاه تست و دوربین ۱ را در دستگاه تست دیگر به طور همزمان تست کنید. برای اندروید ۱۷ و بالاتر، از آنجا که تستهای Camera ITS به دو فعالیت تقسیم میشوند، میتوانید تستهای sensor_fusion و feature_combination را روی یک DUT و سایر تستها را روی DUT دیگر به صورت موازی اجرا کنید. تمام تستهای مربوط به جلسات تست موازی در جلسه CTS Verifier روی DUT مرجع تجمیع میشوند. شما باید تست موازی را با کنترل روشنایی آردوینو انجام دهید، زیرا کنترل روشنایی دستی با تست موازی پشتیبانی نمیشود. مطمئن شوید که یک کانال متفاوت در همان کنترلر آردوینو، روشنایی هر دستگاه را کنترل میکند.
در ادامه یک نمونه فایل config.yml آمده است که سه بستر آزمایشی را برای اجرای موازی تعریف میکند.
TestBeds:
- Name: TEST_BED_TABLET_SCENES_INDEX_0
Controllers:
AndroidDevice:
- serial: <device-id-0>
label: dut
- serial: <tablet-id-0>
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
lighting_cntl: "arduino"
lighting_ch: <controller-channel-0>
camera: 0
scene: <scene-name> # if <scene-name> left as-is runs all scenes
foldable_device: "False"
- Name: TEST_BED_TABLET_SCENES_INDEX_1
Controllers:
AndroidDevice:
- serial: <device-id-1>
label: dut
- serial: <tablet-id-1>
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
lighting_cntl: "arduino"
lighting_ch: <controller-channel-1>
camera: 1
scene: <scene-name> # if <scene-name> left as-is runs all scenes
foldable_device: "False"
# TEST_BED_SENSOR_FUSION represents testbed index 2
# Parallel sensor_fusion is currently unsupported due to Arduino requirements
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion
Controllers:
AndroidDevice:
- serial: <device-id>
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: "arduino"
rotator_ch: <controller-channel-2>
camera: <camera-id>
foldable_device: "False"
tablet_device: "False"
lighting_cntl: "None"
lighting_ch: <controller-channel>
scene: "sensor_fusion"
برای اجرای موازی تستبدها، از دستور زیر استفاده کنید:
for i in 0 1 2; do python3 tools/run_all_tests.py testbed_index=$i num_testbeds=3 & done; waitنتایج کلی آزمایش را ارسال کنید
در اندروید ۱۷ و بالاتر، میتوانید نتایج تست دوربین ITS را برای تأیید ساخت ارسال کنید. CTS Verifier به شما امکان میدهد چندین صحنه را به طور همزمان در چندین دستگاه آزمایش کنید و نتایج تست را از چندین گزارش CTS Verifier (از آزمایشها یا دستگاههای مختلف) در یک ارسال واحد و یکپارچه جمع کنید.
فرآیند ارسال
برای ارسال نتایج تجمیعشدهی Camera ITS برای تأیید ساخت، این مراحل را دنبال کنید:
- آمادهسازی دستگاهها: دو تا سه دستگاه تحت آزمایش (DUT) را که همگی اثر انگشت ساخت یکسانی دارند، جمعآوری کنید.
- نصب CTS Verifier: آخرین نسخه APK CTS Verifier را که میتوانید از build explorer ارائه شده دریافت کنید، نصب کنید.
اجرای تستها به صورت موازی:
- DUT ها را در سکوهای جداگانه نصب کنید.
- صحنههای مختلف Camera ITS را به طور همزمان روی هر دستگاه اجرا کنید.
- جمعآوری گزارش: گزارش تأییدکننده CTS را پس از هر اجرا دریافت کنید. این شامل گزارشهایی میشود که صحنهها با شکست مواجه شدهاند. فقط صحنههای ناموفق را در اجراهای بعدی دوباره اجرا کنید.
ارسال گزارشها: چندین گزارش CTS Verifier جمعآوریشده از همه دستگاهها را بارگذاری کنید.
بررسی نتایج: پس از آپلود گزارشها، نتایج جمعآوریشده را بررسی کنید:
- بخش تحلیل تست ، لیست کاملی از تمام صحنههای اجرا شده را نشان میدهد.
صحنههای اجرا نشده یا ناموفق در بخش «مفقود» فهرست شدهاند.

شکل ۱. مستندسازی صحنههایی که اجرا نشدند یا شکست خوردند.
صحنههای عبور در بخش عبور تجمیعی فهرست شدهاند.

شکل ۲. صحنههای طبقهبندیشده به عنوان گذرگاه تجمیعی
وضعیت تأیید ساخت
تأیید ساخت زمانی اعطا میشود که تمام صحنههای مورد نیاز در گزارشهای تجمیعشده با موفقیت تکمیل شده باشند.
مدل نویز DNG
دستگاههایی که توانایی ضبط RAW یا DNG را تبلیغ میکنند، باید یک مدل نویز در فراداده نتیجه ضبط هر عکس خام ارائه دهند. این مدل نویز باید برای هر دوربین (به عنوان مثال، دوربینهای جلو و عقب) روی دستگاهی که ادعای پشتیبانی دارد، در HAL دوربین تعبیه شود.
پیادهسازی مدل نویز
برای پیادهسازی یک مدل نویز، این مراحل را دنبال کنید تا یک مدل نویز تولید کنید و مدل را در HAL دوربین جاسازی کنید.
برای تولید مدل نویز برای هر دوربین، اسکریپت
dng_noise_model.pyرا در دایرکتوریtoolsاجرا کنید. این یک قطعه کد C را خروجی میدهد. برای اطلاعات بیشتر در مورد نحوه تنظیم دوربین و محیط ضبط، به سندDngNoiseModel.pdfدر دایرکتوریtoolsمراجعه کنید.برای پیادهسازی مدل نویز برای دستگاه، قطعه کد C را کپی کرده و در HAL دوربین قرار دهید.
اعتبارسنجی مدل نویز
تست خودکار ITS در tests/scene1_1/test_dng_noise_model.py با تأیید صحت مقادیر نویز برای نوردهی و بهره شات ارائه شده در دادههای دوربین، مدل نویز را اعتبارسنجی میکند.
قبولی نسبی در آزمونها (وضعیت آزمون PASS*)
در اندروید ۱۷ و بالاتر، یک قبولی نهایی ( PASS* ) نشان میدهد که یک تست با موفقیت انجام شده است، اما معیارهای عملکرد آن بسیار نزدیک به آستانه قبولی از پیش تعریف شده است. در حالی که تست از نظر فنی معیارهای قبولی را برآورده میکند، نزدیکی به مرز شکست، نیاز به بررسی دقیقتر را نشان میدهد.
مزایای عبور حاشیهای
وضعیت PASS* مزایای متعددی را ارائه میدهد:
سیستم هشدار اولیه: تستهایی را که در آستانه شکست هستند شناسایی میکند و به تیمها اجازه میدهد تا قبل از اینکه مشکلات منجر به شکستهای آشکار شوند، آنها را برطرف کنند.
بهینهسازی پیشگیرانه: تیمها را تشویق میکند تا تستها و کدهایی را که در انتهای پایین محدوده قابل قبول عملکرد دارند، بهینهسازی کنند و پایداری کلی را بهبود بخشند.
کیفیت بهبود یافته: با علامتگذاری حوزههایی که ممکن است با تغییرات جزئی کد، مستعد رگرسیونهای آینده باشند، به حفظ استاندارد بالاتر کیفیت کمک میکند.
کاهش زمان اشکالزدایی: با تشخیص زودهنگام تستهای
PASS*، زمان و تلاش لازم برای اشکالزدایی کامل شکستها در آینده میتواند به طور قابل توجهی کاهش یابد.
جزئیات قبولی*
وضعیت PASS* شامل موارد زیر است:
تعریف آستانهها: آستانههای مرزی مشخصی برای هر آزمایش مربوطه در Camera ITS تعریف شدهاند.
تشخیص خودکار: سیستم اتوماسیون تست، تستها را بر اساس آستانههای تعریفشده
PASS*شناسایی و دستهبندی میکند.مکانیزم هشدار: تیمها برای هر تستی که به عنوان
PASS*علامتگذاری شود، هشدارهای خودکار دریافت میکنند و آنها را برای بررسی تست خاص و معیارهای آن راهنمایی میکنند.گزارشدهی: وضعیتهای قبولی حاشیهای به وضوح در گزارشهای تست و داشبوردها برای مشاهده بهتر به عنوان
PASS*در گزارشItsTestSummaryنشان داده میشوند، مشابهFail*برای تستهایnot_yet_mandated. تست وضعیت سبز را حفظ میکند، زیرا همچنان در آستانههای تعیین شده قبول میشود تا از سردرگمی بیشتر جلوگیری شود. وضعیتPASS*فقط برای یک کلاس تست اعمال میشود، نه کل صحنه. به عنوان مثال، Scene_0 میتواندPASSدر نظر گرفته شود، حتی اگر test_jitter و test_metadataPASS*باشند.نظارت: دادههای عملکرد از آزمایشهایی که روی یک دستگاه با موفقیت نسبی همراه هستند، جمعآوری میشوند. این امر امکان نظارت بر بهبودهای آینده دوربین که توسط تولیدکنندگان اصلی تجهیزات (OEM) انجام میشود را در صورت انتقال این آزمایشها به وضعیت
PASSفراهم میکند.
در زیر نمونهای از نتایج آزمون با PASS* آمده است:
INFO:root:Reporting camera 1 ITS results to CtsVerifier
INFO:root:ITS results to CtsVerifier: {'scene0': {'result': 'PASS', 'TEST_STATUS': [{'test': 'test_jitter', 'status': 'PASS*'}, {'test': 'test_metadata', **'status': 'PASS*'**}, {'test': 'test_request_capture_match', 'status': 'PASS'}, {'test': 'test_sensor_events', 'status': 'PASS'}, {'test': 'test_solid_color_test_pattern', 'status': 'PASS'}, {'test': 'test_test_patterns', 'status': 'SKIP'}, {'test': 'test_tonemap_curve', 'status': 'SKIP'}, {'test': 'test_unified_timestamps', 'status': 'PASS'}, {'test': 'test_vibration_restriction', 'status': 'PASS'}], 'mpc_metrics': [], 'performance_metrics': [], 'feature_query_proto': [], 'feature_query_proto_path': [], 'summary': '/tmp/CameraITS_zojk4sdr/cam_id_1/scene0/scene_test_summary.txt', 'start': 1754330630345, 'end': 1754330764534}, 'scene1_1': {'result': 'NOT_EXECUTED'}, 'scene1_2': {'result': 'NOT_EXECUTED'}, 'scene1_3': {'result': 'NOT_EXECUTED'}, 'scene2_a': {'result': 'NOT_EXECUTED'}, 'scene2_b': {'result': 'NOT_EXECUTED'}, 'scene2_c': {'result': 'NOT_EXECUTED'}, 'scene2_d': {'result': 'NOT_EXECUTED'}, 'scene2_e': {'result': 'NOT_EXECUTED'}, 'scene2_f': {'result': 'NOT_EXECUTED'}, 'scene2_g': {'result': 'NOT_EXECUTED'}, 'scene3': {'result': 'NOT_EXECUTED'}, 'scene4': {'result': 'NOT_EXECUTED'}, 'scene6': {'result': 'NOT_EXECUTED'}, 'scene7': {'result': 'NOT_EXECUTED'}, 'scene8': {'result': 'NOT_EXECUTED'}, 'scene9': {'result': 'NOT_EXECUTED'}, 'scene_extensions/scene_hdr': {'result': 'NOT_EXECUTED'}, 'scene_extensions/scene_low_light': {'result': 'NOT_EXECUTED'}, 'scene_tele/scene6_tele': {'result': 'NOT_EXECUTED'}, 'scene_tele/scene7_tele': {'result': 'NOT_EXECUTED'}, 'scene_video': {'result': 'NOT_EXECUTED'}, 'scene5': {'result': 'NOT_EXECUTED'}, 'sensor_fusion': {'result': 'NOT_EXECUTED'}, 'feature_combination': {'result': 'NOT_EXECUTED'}, 'scene_flash': {'result': 'NOT_EXECUTED'}, 'scene_ip': {'result': 'NOT_EXECUTED'}}
شرکا تشویق میشوند که:
- هشدارهای
PASS*را رصد کنید - علت اصلی آزمونهای
PASS*را بررسی کنید - بهینهسازی پیشگیرانه تستها و کدهایی که به عنوان
PASS*شناسایی شدهاند
وضعیت PASS* با هدف افزایش استحکام و قابلیت اطمینان آزمایش دوربین ITS و در نتیجه تولید محصولی پایدار و با کیفیت بالا ارائه میشود.