Aparat ITS-in-a-Box

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Android Camera Image Test Suite (ITS) jest częścią pakietu Android Compatibility Test Suite (CTS) Verifier i zawiera testy weryfikujące zawartość obrazu. CTS Verifier obsługuje automatyzację testów ITS z kamerą ITS-in-a-box; obsługa testów ręcznych obejmuje wszystkie typy urządzeń z systemem Android.

ITS-in-a-box zapewnia następujące korzyści:

  • Automatyzacja. Podczas testu nie jest potrzebna interwencja człowieka.
  • Łatwe rozwiązywanie problemów. Spójność środowiska testowego prowadzi do mniejszej liczby błędów konfiguracji i zwiększa powtarzalność.
  • Efektywność. Możliwość ponawiania próby dla pojedynczej kamery/sceny poprawia wydajność wykonywania testu.

Rozpoczęcie pracy

ITS-in-a-box składa się z plastikowego pudełka, które jest wycinane laserowo z rysunków komputerowego wspomagania projektowania (CAD), tabletu z wykresami i testowanego urządzenia (DUT). Możesz użyć szerokiego pola widzenia (WFoV) ITS-in-a-box, które jest w stanie przetestować zarówno kamery WFoV (FoV > 90 stopni), jak i RFoV (FoV < 90 stopni) lub zwykłe pole -widok (RFoV) ITS-in-a-box.

Aby rozpocząć korzystanie z aparatu ITS-in-a-box:

  1. Kup lub zbuduj ITS-in-a-box WFoV lub RFoV .
  2. Skonfiguruj tablet za pomocą oprogramowania Camera ITS.
  3. Uruchom testy .
  4. Uzyskaj wyniki z DUT.

Konfiguracja tabletu

Ta sekcja zawiera instrukcje krok po kroku dotyczące konfigurowania tabletu do użytku z testami Camera ITS znajdującymi się w katalogu CameraITS . W tych instrukcjach użyto tabletu Pixel C jako przykładowego tabletu. Aby uzyskać informacje na temat wymagań i zaleceń dotyczących tabletów, zobacz Wymagania dotyczące tabletów .

Uwaga: skrypty Camera ITS Python automatycznie ustawiają następujące opcje na tablecie:
Ustawienia > Wyświetlacz > Uśpienie > Po 30 minutach bezczynności
Adaptacyjna jasność > WYŁ

  1. Naładuj tablet i włącz go. Jeśli pojawi się monit o założenie konta, pomiń go (Camera ITS nie wymaga żadnego konta sparowanego z tabletem).
  2. Zaktualizuj tablet do Androida 7.0 lub nowszego. Android 6.x i starsze wersje nie obsługują Camera ITS.
  3. Włącz tryb programisty .
  4. Wróć do Ustawień i wybierz Opcje programisty.
    Włącz opcje
    • Na
    • Nie zasypiaj
    • Debugowanie USB (pozwala to hostowi na uruchomienie tabletu w trybie debugowania. Po pierwszym podłączeniu tabletu do hosta tablet wyświetla monit Zezwalać na debugowanie USB? Jeśli tablet nie wyświetla monitu o debugowanie, odłącz, a następnie ponownie podłącz tablet.)
    Wyłącz opcje
    • Automatyczne aktualizacje systemu
    • Zweryfikuj aplikacje przez USB
  5. Określ DUT i identyfikatory wykresów, uruchamiając $ adb devices aby wyświetlić listę dostępnych urządzeń. Aby określić device_id i chart_id , podłączaj i odłączaj urządzenia oraz obserwuj urządzenia, które łączą się i rozłączają.
  6. Wykonaj trzy uruchomienia testowe, aby pominąć podpowiedzi i monity użytkownika, które mogą zasłaniać wykresy na ekranie tabletu.
    1. Połóż tablet ekranem do góry na stole (nie mocuj tabletu do tylnego panelu pudełka).
    2. Uruchom następujące polecenie:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Sceny 2 i 3 wymagają, aby tablet wyświetlał obraz, więc tablet wyświetla monit Zezwól Dyskowi na dostęp do zdjęć, multimediów i plików na urządzeniu? . Wyczyść ten monit (i zapobiegaj przyszłym monitom), naciskając Zezwól.
    3. Uruchom ponownie polecenie. Pojawia się monit tabletu Zachować kopię tego pliku? i sugeruje Dysk Google. Wyczyść ten monit (i zapobiegaj przyszłym monitom), naciskając ikonę Dysku, a następnie Anuluj , aby przesłać na dysk.
    4. Na koniec uruchom tools/run_all_tests.py i potwierdź, że sceny zmieniają się automatycznie, gdy skrypt przechodzi przez różne sceny. Chociaż większość testów kończy się niepowodzeniem (ponieważ kamera nie jest skierowana na wykres), możesz sprawdzić, czy tablet prawidłowo przechodzi przez sceny bez wyświetlania na ekranie żadnych monitów ani innych wyskakujących okienek.

Uruchamianie testów

Przed uruchomieniem ITS-in-a-box upewnij się, że konfiguracja testowa obejmuje następujący sprzęt i oprogramowanie:

  • Jeden (1) ITS w pudełku
  • Jeden (1) tablet 10" o wysokiej rozdzielczości do wyświetlania scen, S/N: 5811000011
  • Jedno (1) testowane urządzenie z zainstalowaną aplikacją CTS Verifier 7.0_8+. Przykład DUT:
    • Jeden (1) piksel NOF26W do testowania tylnej kamery (0), numer seryjny: FA6BM0305016. Aby zainstalować aplikację CTS Verifier, rozpakuj android-cts-verifier.zip , a następnie uruchom
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Uruchamianie scen na tablecie

Aby uruchomić sceny od 0 do 4, 6 i scene_change na tylnej kamerze:

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

Przykład:

Numer seryjny kamery 0: FA6BM0305016
Rysunek 1. Kamera 0 S/N: FA6BM0305016

Ponawianie scen

Możesz ponowić próbę scen dla jednej kamery:

  • Aby ponowić próbę scen na jednej kamerze:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Scena biegania 5

Scena 5 wymaga specjalnej konfiguracji z określonym oświetleniem (szczegóły można znaleźć w CameraITS.pdf w CTS Verifier, który można pobrać z witryny Compatibility Test Suite Downloads ). Musisz uruchomić scenę 5 osobno (poza pudełkiem).

scena kamery 5
Rysunek 2. Scena kamery 5

Aby uruchomić scenę 5 dla przedniej i tylnej kamery na jednym urządzeniu:

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

Uzyskiwanie wyników

Możesz przeglądać wyniki podczas testowania i zapisywać ukończone wyniki jako raport.

  • Pokaż wyniki. Aby zapisać wyniki Camera ITS jako raport:
    1. Naciśnij przycisk Pass i zapisz raport.
      raport ITS kamery
      Rysunek 3. Raport ITS kamery
    2. Pobierz raporty z urządzenia:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Rozpakuj plik raportu i wyświetl test_result.xml .
      raporty ITS kamery
      Rysunek 4. Raporty ITS kamery

Wymagania dotyczące tabletu

Tablety muszą mieć wyświetlacz o przekątnej około 10 cali i rozdzielczości ekranu większej niż 1920 x 1200 pikseli. Wartość brightness należy ustawić w config.yml zgodnie z modelem tabletu. Poniższa tabela zawiera listę zalecanych tabletów do testowania ITS wraz z wersjami wydania Androida dla DUT, z którymi współpracują tablety.

Urządzenie Rozmiar wyświetlacza
(cale)
Rozmiar wyświetlacza
(piksele)
Wymiary tabletu
(cale)
Wyświetlacz
jasność
Obsługiwane DUT
OS
Samsung Galaxy Tab A8 10,5 1920 x 1200 9,72 x 6,37 x 0,27 192 Android 13+
Pad Xiaomi 5 11 2560 x 1600 10,03 x 6,55 x 0,27 192 Android 12+
Lenovo Tab M10 Plus 10.3 1920 x 1200 9,61 x 6,03 x 0,32 192 Android 12+
Samsung Galaxy Tab A7 10,4 2000 x 1200 9,75x6,2x0,28 192 Android 12+
Chuwi Hi9 Air 10.1 10.1 2560 x 1600 9,52 x 6,77 x 0,31 192 Android 7+
Asus ZenPad 3 9,7 2048 x 1536 9,47 x 6,44 x 0,28 192 Android 7+
Huawei MediaPad m5 10,8 2560 x 1600 10,18 × 6,76 × 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 2560 x 1600 10x6,57x0,24 192 Android 7+

Często zadawane pytania (FAQ)

P1: Jak określić, jakich zestawów testowych potrzebuję do mojego urządzenia?

Wersja 1 RFoV ITS-in-a-box testuje kamery RFoV pod kątem testów od sceny 0 do sceny 4 w katalogu CameraITS/tests . RFoV definiuje się jako 60° < FoV < 90° . W przypadku większych kamer FoV światła mogą pojawiać się na obrazach lub wykresy mogą zajmować zbyt mały obszar w polu widzenia, wpływając na wyniki testu.

Wersja 2 WFoV ITS-in-a-box testuje kamery WFoV dla testów od sceny 0 do sceny 4 w katalogu CameraITS/tests . WFoV jest zdefiniowane jako FoV >= 90° . Jest funkcjonalnie identyczny z wersją 1, ale większy. Platforma testowa w wersji 2 może testować zarówno kamery RFoV, jak i WFoV w systemie Android 9 i nowszych.

Skrzynka fuzji czujników testuje przesunięcie czasu kamery/żyroskopu i synchronizację klatek systemów wielokamerowych z testami w scenes=sensor_fusion . Dla flagi funkcji REALTIME i aplikacji VR/AR wymagane jest przesunięcie czasu kamery/żyroskopu mniejsze niż 1 ms.

Urządzenia z wieloma kamerami można testować za pomocą jednej platformy do statycznych testów ITS i platformy do fuzji czujników, jeśli kamera ma flagę funkcji REALTIME .

Zestaw przykładowych konfiguracji znajduje się w poniższej tabeli.

Przykład Pole widzenia kamery CZAS RZECZYWISTY? Polecane przypony Uwagi
1 75° Nie Rev 1 Android 7.0 lub nowszy
2 75° TAk Rev 1 + fuzja czujników Android 9 lub nowszy
3 75° + 95° TAk Rev 2 + fuzja czujników Android 9 lub nowszy

P2: Jak określić, które stanowisko testowe jest używane?

Aby wyznaczyć prawidłowe stanowisko testowe, upewnij się, że parametr odległości wykresu jest prawidłowy. Platforma testowa rev1 (RFoV) ma odległość mapy 31 cm, a platforma rev2 (WFoV) ma odległość mapy 22 cm. Domyślnie odległość mapy jest ustawiona na 31 cm.

Androida 10 na Androida 11

Aby zidentyfikować poprawną platformę testową w systemie Android 10 do 11, dodaj flagę dist w wierszu poleceń. Domyślna wartość dist to 31 . Uruchom następujące polecenie, aby zmienić parametr chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

Android 12

Aby zidentyfikować poprawną platformę testową w Androidzie 12, możesz edytować plik config.yml, aby zmienić parametr chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

P3: Jak kontrolować jasność tabletu?

Domyślnie jasność tabletu jest ustawiona na 96.

Aby zmienić jasność na tabletach z systemem Android 7.0 do Androida 9, uruchom:

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

Aby zmienić jasność na tabletach z systemem Android od 10 do 11, wartość można zmienić w wierszu poleceń, dodając flagę brightness :

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

Aby zmienić jasność na tabletach z systemem Android 12, uruchom:

edit config.yml
brightness: 96 → brightness: 192

P4: Jak debugować pojedynczy test?

Testy można uruchamiać pojedynczo w celu debugowania, ale wyniki nie są zgłaszane do CtsVerifier.apk , chyba że uruchomiona zostanie cała scena.

Aby uruchomić pojedynczą scenę w systemie Android 11 i niższym:

  1. Załaduj scenę, dodając flagę scenes w tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Naciśnij klawisze Control+C , aby zatrzymać testy po zarejestrowaniu sceny jako załadowanej na stdout .

    Jeśli właściwa scena jest już na ekranie, wybudź ekran:

    python tools/wake_up_screen.py screen=#
    
  3. Uruchom indywidualny test.

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

    Wykresy są następnie generowane w lokalnym katalogu, a na ekranie wyświetlane są stdout i stderr .

    Aby uzyskać więcej informacji na temat debugowania, dodaj do skryptu instrukcje print . Aby zwiększyć wynik testu do debugowania, dodaj flagę debug=True .

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

Wyniki są drukowane na lokalnym ekranie, a obrazy są zapisywane w lokalnym katalogu zamiast w wygenerowanym katalogu /tmp/tmp### podczas uruchamiania tools/run_all_tests.py .

Aby uruchomić pojedynczą scenę w systemie Android 12:

  1. Edytuj plik config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Uruchom test indywidualny.

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

Wyniki są drukowane w katalogu /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ posortowane według czasu wykonywania.

P5: Dlaczego muszę uruchamiać testy zakończone niepowodzeniem jako całą scenę, zamiast powtarzać testy pojedynczo?

Testy można uruchamiać pojedynczo w celu debugowania, ale wyniki nie są zgłaszane do CtsVerifier.apk , chyba że uruchomiona zostanie cała scena.

Camera ITS zapewnia, że ​​aplikacje innych firm mają zgodny interfejs aparatu. Podobnie jak w przypadku testu jednostkowego , każdy test podkreśla pojedynczą specyfikację w aparacie. Aby wykryć nierzetelne zachowanie, testy te powinny przejść jako grupa dla całej sceny. Na przykład, chociaż jeden niewiarygodny test może przejść powtórkę całej sceny, trudno jest przejść wiele niewiarygodnych testów.

Jako skrajny przykład rozważ przypadek, w którym w scenie występuje 10 testów, z których każdy ma 50% prawdopodobieństwa zwrócenia PASS . Uruchamiając każdy test indywidualnie, istnieje duża szansa, że ​​operator może sprawić, że kamera przejdzie pomyślnie Camera ITS. Jeśli jednak testy są przeprowadzane łącznie jako scena, istnieje tylko 0,1% szansy, że scena przejdzie pomyślnie.

P6: Jak uruchomić pojedynczą scenę lub zmienić kolejność scen biegu?

Domyślnie skrypt tools/run_all_tests.py uruchamia wszystkie sceny w kolejności. Sceny można jednak uruchamiać pojedynczo lub w określonej kolejności i zgłaszać do CtsVerifier.apk .

Aby uruchomić pojedynczą scenę (na przykład scenę 2) lub uruchomić więcej niż jedną scenę w określonej kolejności w systemie Android 11 lub niższym:

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

Aby uruchomić pojedynczą scenę lub uruchomić więcej niż jedną scenę w określonej kolejności w systemie Android 12:

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

Dodatkowe parametry są ustawiane w pliku config.yml .

P7: Wiele testów sceny 1 kończy się niepowodzeniem z konfiguracją tabletu, ale przechodzi z wykresem papierowym. Co jest nie tak?

Upewnij się, że tablet i środowisko testowe spełniają następujące specyfikacje.

Specyfikacja tabletu

Upewnij się, że tablet spełnia następujące specyfikacje:

  • Rozmiar wyświetlacza (cale): 10 cali
  • Rozmiar wyświetlacza (w pikselach): większy niż 1920 x 1200 pikseli

Aby uzyskać więcej informacji, zobacz Wymagania dotyczące tabletu .

Jasność tabletu

Testy mogą nie uzyskać poprawnych wyników, jeśli jasność wyświetlacza tabletu jest zbyt niska.

Aby uzyskać więcej informacji, zobacz Jak kontrolować jasność tabletu?

Poziom oświetlenia skrzynki (wymaga luksomierza)

Upewnij się, że docelowa wartość luksów przy otwieraniu tabletu wynosi od 100 do 300.

Jeśli poziom luksów jest zbyt wysoki, scene1/test_param_flash_mode.py zwraca FAIL . Jeśli poziom luksów jest zbyt niski, wiele testów kończy się niepowodzeniem.

P8: Jak debugować testy fuzji czujników?

  1. Upewnij się, że jesteś w grupie dialout .

    groups | egrep ‘dialout'
  2. Upewnij się, że kontroler fuzji czujników jest podłączony, określając, czy Microchip Technology jest podłączony do portu USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Uruchom test wiele razy, aby uzyskać rozkład prób testów za pomocą następujących poleceń.

    W systemie Android 11 lub starszym:

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

    W Androidzie 12:

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Dodatkowe parametry są ustawiane w pliku config.yml .

    Dane wyjściowe przebiegu znajdują się w folderze /tmp/tmp### utworzonym w folderach sensor_fusion_# , gdzie # to numer przebiegu. Najczęstsze przyczyny niepowodzenia to:

    1. Telefon nie jest prawidłowo wyśrodkowany.
    2. Obraz nie zawiera wystarczającej liczby funkcji (często problem z polem widzenia lub oświetleniem).
    3. Zwrócony FAIL jest prawidłowy, a przesunięcie czasowe między kamerą a żyroskopem musi zostać skorygowane.

P9: Jakie informacje powinienem podać, zgłaszając błąd testowy?

Zgłaszając błąd testowy, dołącz wygenerowane pliki i obrazy do testu.

  1. Jeśli uruchomiłeś test przez tools/run_all_tests.py , dołącz do błędu skompresowany katalog /tmp/ .
  2. Jeśli uruchomiłeś sam test, dołącz wszystkie wyjścia ekranu i wygenerowane obrazy do błędu.

Dołącz również raport o błędzie. Gdy dany test zakończy się niepowodzeniem, użyj następującego polecenia, aby wygenerować raport o błędzie i dołączyć wygenerowany plik zip do błędu.

adb -s device_id bugreport

P10: Jak usunąć paski nawigacyjne na tabletach 16:10, które zasłaniają scenę?

W przypadku tabletów o proporcjach 16:10 (lub większych) pasek nawigacyjny może zasłaniać część sceny. Aby ukryć pasek nawigacyjny, użyj następującego polecenia adb dla tabletu.

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