Kamera ITS-in-a-Box

Android Camera Image Test Suite (ITS) adalah bagian dari Android Compatibility Test Suite (CTS) Verifier dan mencakup pengujian yang memverifikasi konten gambar. CTS Verifier mendukung otomatisasi pengujian ITS dengan Kamera ITS-in-a-box; dukungan untuk pengujian manual mencakup semua faktor bentuk perangkat Android.

ITS-in-a-box mencakup manfaat berikut:

  • Otomatisasi. Tidak diperlukan campur tangan manusia selama pengujian.
  • Pemecahan masalah yang mudah. Konsistensi lingkungan pengujian menghasilkan lebih sedikit kesalahan penyiapan dan meningkatkan reproduktifitas.
  • Efisiensi. Kemampuan untuk mencoba lagi untuk masing-masing kamera/adegan meningkatkan efisiensi eksekusi pengujian.

Mulai

ITS-in-a-box terdiri dari kotak plastik yang dipotong laser dari gambar desain berbantuan komputer (CAD), tablet grafik, dan perangkat yang sedang diuji (DUT). Anda dapat menggunakan wide field-of-view (WFoV) ITS-in-a-box, yang mampu menguji kamera WFoV (FoV > 90 derajat) dan RFoV (FoV < 90 derajat), atau bidang biasa -view (RFoV) ITS-in-a-box.

Untuk memulai dengan Kamera ITS-in-a-box:

  1. Beli atau buat WFoV atau RFoV ITS-in-a-box.
  2. Konfigurasikan tablet dengan perangkat lunak Camera ITS.
  3. Jalankan tes .
  4. Dapatkan hasil dari DUT.

Mengonfigurasi tablet

Bagian ini memberikan petunjuk langkah demi langkah untuk menyiapkan tablet untuk digunakan dengan pengujian Camera ITS yang terletak di direktori CameraITS . Petunjuk ini menggunakan Pixel C sebagai contoh tablet. Untuk informasi tentang persyaratan dan rekomendasi tablet, lihat Persyaratan tablet .

Catatan: Skrip Python Camera ITS secara otomatis mengatur opsi berikut pada tablet untuk Anda:
Pengaturan > Tampilan > Tidur > Setelah 30 menit tidak aktif
Kecerahan adaptif > MATI

  1. Isi daya tablet dan nyalakan. Jika diminta untuk menyiapkan akun, lewati saja (Kamera ITS tidak memerlukan akun apa pun yang dipasangkan dengan tablet).
  2. Perbarui tablet ke Android 7.0 atau lebih tinggi. Android 6.x dan versi yang lebih rendah tidak mendukung Camera ITS.
  3. Aktifkan mode pengembang .
  4. Kembali ke Pengaturan dan pilih opsi Pengembang.
    Aktifkan opsi
    • Pada
    • Tetap terjaga
    • USB debugging (Ini memungkinkan host untuk menjalankan tablet dalam mode debug. Saat Anda menghubungkan tablet ke host untuk pertama kalinya, tablet meminta Izinkan debugging USB? Jika tablet tidak menampilkan permintaan debug, putuskan sambungan lalu sambungkan kembali tablet.)
    Nonaktifkan opsi
    • Pembaruan sistem otomatis
    • Verifikasi aplikasi melalui USB
  5. Tentukan DUT dan ID bagan dengan menjalankan $ adb devices untuk membuat daftar perangkat yang tersedia. Untuk menentukan device_id dan chart_id , pasang dan cabut perangkat dan amati perangkat yang terhubung dan terputus.
  6. Lakukan tiga uji coba untuk menekan petunjuk dan petunjuk pengguna yang dapat mengaburkan bagan di layar tablet.
    1. Posisikan tablet menghadap ke atas di atas meja (jangan pasang tablet ke panel belakang kotak).
    2. Jalankan perintah berikut:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Adegan 2 dan 3 memerlukan tablet untuk menampilkan gambar, sehingga tablet meminta Izinkan Drive untuk mengakses foto, media, dan file di perangkat Anda? . Hapus permintaan ini (dan cegah permintaan di masa mendatang) dengan menekan Izinkan.
    3. Jalankan perintah lagi. Tablet meminta Simpan salinan file ini? dan menyarankan Google Drive. Hapus permintaan ini (dan cegah permintaan di masa mendatang) dengan menekan ikon Drive lalu Batal untuk mengunggah ke drive.
    4. Terakhir, jalankan tools/run_all_tests.py dan konfirmasikan bahwa adegan berubah secara otomatis saat skrip berputar melalui adegan yang berbeda. Meskipun sebagian besar pengujian gagal (karena kamera tidak diarahkan ke grafik), Anda dapat memverifikasi bahwa tablet berputar dengan benar melalui adegan tanpa menampilkan petunjuk atau popup lain di layar.

Menjalankan tes

Sebelum menjalankan ITS-in-a-box, pastikan bahwa pengaturan pengujian Anda mencakup perangkat keras dan perangkat lunak berikut:

  • Satu (1) ITS-dalam-kotak
  • Satu (1) tablet resolusi tinggi 10" untuk menampilkan pemandangan, S/N: 5811000011
  • Satu (1) DUT yang menginstal aplikasi CTS Verifier 7.0_8+. Contoh DUT:
    • Satu (1) Pixel NOF26W untuk pengujian kamera belakang(0), S/N: FA6BM0305016. Untuk menginstal aplikasi CTS Verifier, unzip android-cts-verifier.zip lalu jalankan
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Menjalankan adegan berbasis tablet

Untuk menjalankan adegan 0 hingga 4, 6, dan adegan_perubahan di kamera belakang:

cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0

Contoh:

Kamera 0 S/N: FA6BM0305016
Gambar 1. Kamera 0 S/N: FA6BM0305016

Mencoba kembali adegan

Anda dapat mencoba kembali adegan untuk satu kamera:

  • Untuk mencoba kembali adegan pada satu kamera:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Adegan lari 5

Scene 5 memerlukan pengaturan khusus dengan pencahayaan tertentu (untuk detailnya, lihat CameraITS.pdf di CTS Verifier, yang dapat Anda unduh di Compatibility Test Suite Downloads ). Anda harus menjalankan adegan 5 secara terpisah (di luar kotak).

adegan kamera 5
Gambar 2. Adegan kamera 5

Untuk menjalankan adegan 5 untuk kamera depan dan belakang pada satu perangkat:

python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5

Mendapatkan hasil

Anda dapat melihat hasil selama pengujian dan menyimpan hasil yang telah diselesaikan sebagai laporan.

  • Lihat hasil. Untuk menyimpan hasil Camera ITS sebagai laporan:
    1. Tekan Pass dan simpan laporannya.
      laporan kamera ITS
      Gambar 3. Laporan Kamera ITS
    2. Tarik laporan dari perangkat:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Buka zip file laporan dan lihat test_result.xml .
      laporan kamera ITS
      Gambar 4. Laporan Kamera ITS

Persyaratan tablet

Tablet harus memiliki ukuran layar sekitar 10 inci dengan resolusi layar lebih besar dari 1920 x 1200 piksel. Nilai brightness harus diatur di config.yml sesuai dengan model tablet. Tabel di bawah mencantumkan tablet yang direkomendasikan untuk pengujian ITS bersama dengan versi rilis Android untuk DUT yang digunakan oleh tablet.

Perangkat Ukuran layar
(inci)
Ukuran layar
(piksel)
Dimensi tablet
(inci)
Menampilkan
kecerahan
DUT yang didukung
OS
Xiaomi Pad 5 11 2560x1600 10,03 x 6,55 x 0,27 192 Android 12+
Lenovo Tab M10 Plus 10.3 1920x1200 9,61 x 6,03 x 0,32 192 Android 12+
Samsung Galaxy Tab A7 10.4 2000x1200 9,75 x 6,2 x 0,28 192 Android 12+
Chuwi Hi9 Air 10.1 10.1 2560x1600 9,52 x 6,77 x 0,31 192 Android 7+
Asus ZenPad 3 9.7 2048x1536 9,47 x 6,44 x 0,28 192 Android 7+
Huawei MediaPad m5 10.8 2560x1600 10,18 x 6,76 x 0,29 192 Android 7+
Piksel C 10.2 2560 x 1800 9,53 x 7,05 x 0,28 96 Android 7+
Sony Xperia Z4 10.1 2560x1600 10x6,57x0,24 192 Android 7+

Pertanyaan yang sering diajukan (FAQ)

Q1: Bagaimana cara menentukan rig pengujian mana yang saya perlukan untuk perangkat saya?

RFoV ITS-in-a-box revisi 1 menguji kamera RFoV untuk pengujian adegan 0 hingga adegan 4 di direktori CameraITS/tests . RFoV didefinisikan sebagai 60° < FoV < 90° . Untuk kamera FoV yang lebih besar, lampu mungkin muncul di gambar atau bagan mungkin menutupi area yang terlalu kecil di FoV, yang memengaruhi hasil pengujian.

WFoV ITS-in-a-box revisi 2 menguji kamera WFoV untuk pengujian adegan 0 hingga adegan 4 di direktori CameraITS/tests . WFoV didefinisikan sebagai FoV >= 90° . Secara fungsional identik dengan revisi 1, tetapi lebih besar. Rig pengujian revisi 2 dapat menguji kamera RFoV dan WFoV di Android 9 dan yang lebih tinggi.

Kotak fusi sensor menguji offset pengaturan waktu kamera/giroskop dan sinkronisasi bingkai sistem multi-kamera dengan pengujian dalam scenes=sensor_fusion . Offset pengaturan waktu kamera/giroskop kurang dari 1 ms diperlukan untuk tanda fitur REALTIME dan aplikasi VR/AR.

Perangkat multi-kamera dapat diuji dengan satu rig untuk pengujian ITS statis dan rig fusi sensor jika kamera memiliki flag fitur REALTIME .

Satu set contoh konfigurasi disediakan dalam tabel di bawah ini.

Contoh Kamera FoVs WAKTU SEBENARNYA? Rig yang direkomendasikan Catatan
1 75 ° Tidak Wahyu 1 Android 7.0 atau lebih tinggi
2 75 ° Ya Rev 1 + sensor fusi Android 9 atau lebih tinggi
3 75 ° + 95 ° Ya Rev 2 + sensor fusi Android 9 atau lebih tinggi

Q2: Bagaimana cara menentukan rig uji mana yang digunakan?

Untuk menentukan alat uji yang benar, pastikan bahwa parameter jarak grafik sudah benar. Rig uji rev1 (RFoV) memiliki jarak grafik 31 cm, dan rig rev2 (WFoV) memiliki jarak grafik 22 cm. Secara default jarak grafik diatur ke 31 cm.

Android 10 ke Android 11

Untuk mengidentifikasi rig pengujian yang benar di Android 10 hingga 11, tambahkan flag dist di baris perintah. Nilai default untuk dist adalah 31 . Jalankan perintah berikut untuk mengubah parameter chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

Android 12

Untuk mengidentifikasi rig pengujian yang benar di Android 12, Anda dapat mengedit file config.yml untuk mengubah parameter chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

Q3: Bagaimana cara mengontrol kecerahan tablet?

Secara default, kecerahan tablet diatur ke 96.

Untuk mengubah kecerahan pada tablet yang menjalankan Android 7.0 hingga Android 9, jalankan:

edit tools/wake_up_screen.py
DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192

Untuk mengubah kecerahan pada tablet yang menjalankan Android 10 hingga 11, nilainya dapat diubah di baris perintah dengan menambahkan bendera brightness :

python tools/run_all_tests.py device=# camera=# chart=# brightness=192

Untuk mengubah kecerahan pada tablet yang menjalankan Android 12, jalankan:

edit config.yml
brightness: 96 → brightness: 192

Q4: Bagaimana cara men-debug satu tes?

Pengujian dapat dijalankan secara individual untuk tujuan debugging, tetapi hasilnya tidak dilaporkan ke CtsVerifier.apk kecuali seluruh adegan dijalankan.

Untuk menjalankan adegan individual di Android 11 dan yang lebih rendah:

  1. Muat adegan dengan menambahkan bendera scenes di tools/run_all_tests.py : l10n
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Tekan Control+C untuk menghentikan tes setelah adegan dicatat sebagai dimuat ke stdout .

    Jika adegan yang benar sudah ada di layar, bangunkan layar:

    python tools/wake_up_screen.py screen=#
    
  3. Jalankan tes individu.

    python tests/scene#/test_*.py device=# camera=#

    Plot kemudian dibuat di direktori lokal dan stdout dan stderr dicetak ke layar.

    Untuk mendapatkan informasi lebih lanjut untuk debugging, tambahkan pernyataan print ke skrip. Untuk meningkatkan hasil pengujian untuk debugging, tambahkan tanda debug=True .

    python tests/scene#/test_*.py device=# camera=# debug=True

Hasil dicetak ke layar lokal dan gambar disimpan di direktori lokal alih-alih direktori /tmp/tmp### yang dihasilkan saat menjalankan tools/run_all_tests.py .

Untuk menjalankan adegan individual di Android 12:

  1. Edit file config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Jalankan tes individu.

    python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
    

Hasil dicetak di /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ diurutkan berdasarkan waktu proses.

T5: Mengapa saya harus menjalankan tes yang gagal sebagai keseluruhan adegan daripada menjalankan ulang tes satu per satu?

Pengujian dapat dijalankan secara individual untuk tujuan debugging, tetapi hasilnya tidak dilaporkan ke CtsVerifier.apk kecuali seluruh adegan dijalankan.

Camera ITS memastikan bahwa aplikasi pihak ketiga memiliki antarmuka kamera yang kompatibel. Mirip dengan tes unit , setiap tes menekankan satu spesifikasi di kamera. Untuk menangkap perilaku yang tidak dapat diandalkan, tes ini diharapkan lulus sebagai grup untuk seluruh adegan. Misalnya, meskipun satu tes yang tidak dapat diandalkan dapat lulus tayangan ulang seluruh adegan, sulit untuk melewati beberapa tes yang tidak dapat diandalkan.

Sebagai contoh ekstrim, pertimbangkan kasus di mana ada 10 tes dalam adegan yang masing-masing memiliki kemungkinan 50% untuk mengembalikan PASS . Dengan menjalankan setiap tes satu per satu, ada kemungkinan besar operator bisa mendapatkan kamera untuk lulus Kamera ITS. Namun, jika tes dijalankan secara agregat sebagai adegan, hanya ada kemungkinan 0,1% adegan itu akan berlalu.

Q6: Bagaimana cara menjalankan satu adegan atau menyusun ulang adegan yang dijalankan?

Secara default, tools/run_all_tests.py menjalankan semua adegan secara berurutan. Namun, adegan dapat dijalankan secara individual atau dalam urutan tertentu dan dilaporkan ke CtsVerifier.apk .

Untuk menjalankan satu adegan (misalnya, adegan 2) atau menjalankan lebih dari satu adegan dalam urutan tertentu di Android 11 atau lebih rendah:

python tools/run_all_tests.py device=# camera=# chart=# scenes=2
python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2

Untuk menjalankan satu adegan atau menjalankan lebih dari satu adegan dalam urutan tertentu di Android 12:

python tools/run_all_tests.py scenes=2
python tools/run_all_tests.py scenes=3,2

Parameter tambahan diatur dalam file config.yml .

Q7: Sejumlah tes adegan 1 gagal dengan pengaturan tablet tetapi lulus dengan bagan kertas. Apa yang salah?

Pastikan tablet dan lingkungan pengujian memenuhi spesifikasi berikut.

Spesifikasi tablet

Pastikan tablet memenuhi spesifikasi berikut:

  • Ukuran layar (inci): 10 inci
  • Ukuran tampilan (piksel): lebih besar dari 1920 x 1200 piksel

Untuk detail selengkapnya, lihat Persyaratan tablet .

Kecerahan tablet

Pengujian mungkin tidak mendapatkan hasil yang benar jika kecerahan layar tablet terlalu rendah.

Untuk detail selengkapnya, lihat Bagaimana cara mengontrol kecerahan tablet?

Tingkat pencahayaan kotak (memerlukan lux meter)

Pastikan nilai lux target pada pembukaan tablet antara 100 dan 300.

Jika tingkat lux terlalu tinggi, scene1/test_param_flash_mode.py mengembalikan FAIL . Jika tingkat lux terlalu rendah, beberapa tes gagal.

Q8: Bagaimana cara men-debug tes fusi sensor?

  1. Pastikan Anda berada dalam grup dialout .

    groups | egrep ‘dialout'
  2. Pastikan pengontrol fusi sensor terhubung dengan menentukan apakah Teknologi Microchip terhubung ke port USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Jalankan pengujian beberapa kali untuk mendapatkan distribusi percobaan pengujian dengan perintah berikut.

    Di Android 11 atau lebih rendah:

    python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
    

    Di Android 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Parameter tambahan diatur dalam file config.yml .

    Output run ada di folder /tmp/tmp### yang dibuat di bawah folder sensor_fusion_# , di mana # adalah nomor run. Alasan umum untuk kegagalan adalah:

    1. Telepon tidak terpusat dengan benar.
    2. Tidak cukup fitur yang ditemukan dalam gambar (seringkali masalah FoV atau pencahayaan).
    3. FAIL yang dikembalikan valid, dan offset waktu antara kamera dan giroskop harus dikoreksi.

T9: Informasi apa yang harus saya sertakan saat melaporkan bug pengujian?

Saat melaporkan bug pengujian, sertakan file dan gambar yang dihasilkan untuk pengujian.

  1. Jika Anda menjalankan pengujian melalui tools/run_all_tests.py , lampirkan /tmp/ zip ke bug.
  2. Jika Anda menjalankan pengujian sendiri, lampirkan semua output layar dan gambar yang dihasilkan ke bug.

Sertakan juga laporan bug. Setelah pengujian yang dimaksud gagal, gunakan perintah berikut untuk membuat laporan bug dan melampirkan file zip yang dihasilkan ke bug.

adb -s device_id bugreport

T10: Bagaimana cara menghapus bilah navigasi pada tablet 16:10 yang mengaburkan pemandangan?

Untuk tablet dengan rasio aspek 16:10 (atau lebih besar), bilah navigasi dapat mengaburkan sebagian pemandangan. Untuk menyembunyikan bilah navigasi, gunakan perintah adb berikut untuk tablet.

adb -s device_id shell settings put global policy_control immersive.full=*