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:
- Kup lub zbuduj ITS-in-a-box WFoV lub RFoV .
- Skonfiguruj tablet za pomocą oprogramowania Camera ITS.
- Uruchom testy .
- 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Ł
- 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).
- Zaktualizuj tablet do Androida 7.0 lub nowszego. Android 6.x i starsze wersje nie obsługują Camera ITS.
- Włącz tryb programisty .
- 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
- Określ DUT i identyfikatory wykresów, uruchamiając
$ adb devices
aby wyświetlić listę dostępnych urządzeń. Aby określićdevice_id
ichart_id
, podłączaj i odłączaj urządzenia oraz obserwuj urządzenia, które łączą się i rozłączają. - Wykonaj trzy uruchomienia testowe, aby pominąć podpowiedzi i monity użytkownika, które mogą zasłaniać wykresy na ekranie tabletu.
- Połóż tablet ekranem do góry na stole (nie mocuj tabletu do tylnego panelu pudełka).
- 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. - 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.
- 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 uruchomadb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
- Jeden (1) piksel NOF26W do testowania tylnej kamery (0), numer seryjny: FA6BM0305016. Aby zainstalować aplikację CTS Verifier, rozpakuj
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:

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).

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:
- Naciśnij przycisk Pass i zapisz raport.
Rysunek 3. Raport ITS kamery - Pobierz raporty z urządzenia:
adb -s FA6BM0305016 pull /sdcard/verifierReports
- Rozpakuj plik raportu i wyświetl
test_result.xml
.
Rysunek 4. Raporty ITS kamery
- Naciśnij przycisk Pass i zapisz raport.
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ć parametrchart_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:
- Załaduj scenę, dodając flagę
scenes
wtools/run_all_tests.py
:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
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=#
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
istderr
.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:
Edytuj plik
config.yml
.edit config.yml camera: <camera-id> → camera: 0 scene: <scene-name> → scene: scene1_1
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?
Upewnij się, że jesteś w grupie
dialout
.groups | egrep ‘dialout'
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. …
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 folderachsensor_fusion_#
, gdzie#
to numer przebiegu. Najczęstsze przyczyny niepowodzenia to:- Telefon nie jest prawidłowo wyśrodkowany.
- Obraz nie zawiera wystarczającej liczby funkcji (często problem z polem widzenia lub oświetleniem).
- 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.
- Jeśli uruchomiłeś test przez
tools/run_all_tests.py
, dołącz do błędu skompresowany katalog/tmp/
. - 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=*