Pakiet 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 za pomocą kamery ITS-in-a-box; obsługa testów ręcznych obejmuje wszystkie urządzenia z systemem Android.
Rozwiązanie ITS-in-a-box obejmuje następujące korzyści:
- Automatyzacja. Podczas testu nie jest wymagana żadna 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ób dla poszczególnych kamer/sceny poprawia efektywność wykonywania testów.
Zaczynaj
Zestaw ITS-in-a-box składa się z plastikowego pudełka wyciętego laserowo z rysunków wspomaganych komputerowo (CAD), tabletu z wykresami i testowanego urządzenia (DUT). Można użyć kamery ITS-in-a-box o szerokim polu widzenia (WFoV), która umożliwia testowanie zarówno kamer WFoV (FoV > 90 stopni), jak i RFoV (FoV < 90 stopni), lub zwykłego -view (RFoV) ITS-in-a-box.
Aby rozpocząć pracę z kamerą ITS-in-a-box:
- Kup lub zbuduj moduł ITS WFoV lub RFoV .
- Skonfiguruj tablet za pomocą oprogramowania Camera ITS.
- Uruchom testy .
- Uzyskaj wyniki z DUT.
Skonfiguruj tablet
W tej sekcji znajdują się instrukcje krok po kroku dotyczące konfigurowania tabletu do użytku z testami Camera ITS znajdującymi się w katalogu CameraITS
. W tych instrukcjach wykorzystano Pixel C jako przykładowy tablet. Informacje na temat wymagań i zaleceń dotyczących tabletów można znaleźć w artykule Wymagania dotyczące tabletów .
Uwaga: skrypty Pythona Camera ITS automatycznie ustawiają na tablecie następujące opcje:
Ustawienia > Wyświetlacz > Uśpienie > Po 30 minutach bezczynności
Jasność adaptacyjna > 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 (umożliwia to hostowi uruchomienie tabletu w trybie debugowania. Po podłączeniu tabletu do hosta po raz pierwszy na tablecie zostanie wyświetlony monit Zezwól na debugowanie USB? Jeśli na tablecie nie zostanie wyświetlony monit debugowania, odłącz, a następnie podłącz ponownie tablet.)
Wyłącz opcje - Automatyczne aktualizacje systemu
- Sprawdź aplikacje przez USB
- Określ identyfikatory DUT i wykresów, uruchamiając
$ adb devices
w celu wyświetlenia listy dostępnych urządzeń. Aby określićdevice_id
ichart_id
, podłącz i odłącz urządzenia i obserwuj, które urządzenia się łączą i odłączają. - Wykonaj trzy przebiegi testowe, aby ukryć wskazówki 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świetli monit Zezwolić Dyskowi na dostęp do zdjęć, multimediów i plików na Twoim urządzeniu? . Wyczyść ten monit (i zapobiegnij pojawianiu się kolejnych monitów), naciskając Zezwalaj. - Uruchom polecenie ponownie. Na tablecie zostanie wyświetlony monit Zachować kopię tego pliku? i sugeruje Dysk Google. Usuń ten monit (i zapobiegnij pojawianiu się w przyszłości), 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 w miarę przełączania się skryptu pomiędzy różnymi scenami. Chociaż większość testów kończy się niepowodzeniem (ponieważ aparat nie jest skierowany na wykres), możesz sprawdzić, czy tablet prawidłowo przełącza sceny, nie wyświetlając żadnych podpowiedzi ani innych wyskakujących okienek na ekranie.
Uruchom testy
Przed uruchomieniem rozwiązania ITS-in-a-box upewnij się, że konfiguracja testowa obejmuje następujący sprzęt i oprogramowanie:
- Jeden (1) zestaw ITS w pudełku
- Jeden (1) tablet 10" o wysokiej rozdzielczości do wyświetlania scen, nr seryjny: 5811000011
- Jeden (1) testowany tester z zainstalowaną aplikacją CTS Verifier 7.0_8+. Przykład DUT:
- Jeden (1) piksel NOF26W do testowania tylnej kamery (0), S/N: 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), S/N: FA6BM0305016. Aby zainstalować aplikację CTS Verifier, rozpakuj
Uruchamiaj sceny na tablecie
Aby uruchomić sceny od 0 do 4, 6 i zmianę sceny w tylnej kamerze:
cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0
Przykład:
Spróbuj ponownie scen
Możesz ponowić próbę scen dla pojedynczej kamery:
- Aby ponowić próbę scen w pojedynczej kamerze:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
Uruchom scenę 5
Scena 5 wymaga specjalnej konfiguracji z określonym oświetleniem (więcej szczegółów można znaleźć w CameraITS.pdf
w CTS Verifier, który można pobrać ze strony Compatibility Test Suite Downloads ). Scenę 5 należy uruchomić osobno (poza pudełkiem).
Aby uruchomić scenę 5 dla kamery przedniej i tylnej 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
Uzyskać rezultaty
Możesz przeglądać wyniki podczas testowania i zapisywać ukończone wyniki w postaci raportu.
- Pokaż wyniki. Aby zapisać wyniki Camera ITS jako raport:
- Naciśnij opcję Pass i zapisz raport.
Rysunek 3. Raport ITS z 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 z kamery
- Naciśnij opcję 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. Tablet nie może używać modulacji szerokości impulsu (PWM) do ustawiania poziomu jasności. 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 systemu Android dla testowanego urządzenia, z którym współpracują tablety.
Urządzenie | Rozmiar wyświetlacza (cale) | Rozmiar wyświetlacza (piksele) | Wymiary tabletu (cale) | Wyświetlacz jasność | Wyświetlacz bity | Utrzymany DUT OS | Utrzymany system operacyjny tabletu |
---|---|---|---|---|---|---|---|
SAMSUNG Karta Galaxy A8 | 10,5 | 1920x1200 | 9,72 x 6,37 x 0,27 | 192 | 8 | Androida 13+ | Androida 11+ |
Xiaomi Podkładka 5 | 11 | 2560 x 1600 | 10,03 x 6,55 x 0,27 | 1024 | 11 | Androida 12+ | Tylko Android 11 |
Lenovo Zakładka M10 Plus | 10.3 | 1920x1200 | 9,61 x 6,03 x 0,32 | 192 | 8 | Androida 12+ | Androida 9+ |
SAMSUNG Galaxy Tab A7 | 10.4 | 2000 x 1200 | 9,75 x 6,2 x 0,28 | 192 | 8 | Androida 12+ | Androida 10+ |
Chuwi Cześć9 Powietrze 10.1 | 10.1 | 2560 x 1600 | 9,52 x 6,77 x 0,31 | 192 | 8 | Androida 7+ | Androida 8+ |
Asusa ZenPad 3 | 9.7 | 2048 x 1536 | 9,47 x 6,44 x 0,28 | 192 | 8 | Androida 7+ | Androida 6+ |
Huaweia MediaPad m5 | 10.8 | 2560 x 1600 | 10,18 x 6,76 x 0,29 | 192 | 8 | Androida 7+ | Androida 8+ |
Google Piksel C | 10.2 | 2560 x 1800 | 9,53 x 7,05 x 0,28 | 96 | 8 | Androida 7+ | Androida 6+ |
Sony Xperii Z4 | 10.1 | 2560 x 1600 | 10x6,57x0,24 | 192 | 8 | Androida 7+ | Androida 5+ |
Często Zadawane Pytania
P1: Jak określić, jakich stanowisk testowych potrzebuję do mojego urządzenia?
RFoV ITS-in-a-box w wersji 1 testuje kamery RFoV pod kątem testów od scen 0 do scen 4 w katalogu CameraITS/tests
. RFoV definiuje się jako 60° < FoV < 90° . W przypadku większych kamer FoV światła mogą pojawić się na obrazach lub wykresy mogą obejmować zbyt mały obszar pola widzenia, co będzie miało wpływ na wyniki testu.
WFoV ITS-in-a-box wersja 2 testuje kamery WFoV pod kątem testów od scen 0 do scen 4 w katalogu CameraITS/tests
. WFoV definiuje się jako FoV >= 90° . Jest funkcjonalnie identyczny z wersją 1, ale większy. Stanowisko testowe w wersji 2 może testować zarówno kamery RFoV, jak i WFoV w systemie Android 9 i nowszych wersjach.
Skrzynka łączenia czujników testuje przesunięcie taktowania kamery/żyroskopu i synchronizację klatek w systemach z wieloma kamerami za pomocą testów w scenes=sensor_fusion
. Dla flagi funkcji REALTIME
wymagane jest przesunięcie taktowania kamery/żyroskopu mniejsze niż 1 ms.
Urządzenia wyposażone w wiele kamer można testować za pomocą jednego urządzenia do testów statycznych ITS oraz zestawu do fuzji czujników, jeśli kamera ma flagę funkcji REALTIME
.
Zestaw przykładowych konfiguracji przedstawiono w poniższej tabeli.
Przykład | FoV z kamery | CZAS RZECZYWISTY? | Polecane sprzęty | Notatki |
---|---|---|---|---|
1 | 75° | NIE | Wersja 1 lub 2 | Android 7.0 lub nowszy |
2 | 75° | Tak | Wersja 1 lub 2 + fuzja czujnika | Android 9 lub nowszy |
3 | 75° + 95° | Tak | Wersja 2 + fuzja czujników | Android 9 lub nowszy |
P2: Jak określić, które stanowisko testowe jest używane?
Aby wyznaczyć właściwe stanowisko badawcze, należy upewnić się, że parametr odległości mapy jest prawidłowy. Urządzenie testowe Rev1 (RFoV) ma odległość od mapy 31 cm, a urządzenie Rev2 (WFoV) ma odległość od mapy 22 cm. Domyślnie odległość między wykresami jest ustawiona na 31 cm.
Androida 10 na Androida 11
Aby zidentyfikować prawidłowe urządzenie testowe w Androidzie od 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
Androida 12
Aby zidentyfikować właściwą platformę testową w systemie Android 12, możesz edytować plik config.yml, zmieniając 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 Android 9, uruchom:
edit tools/wake_up_screen.py DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192
Aby zmienić jasność na tabletach z systemem Android 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ć indywidualnie w celu debugowania, ale wyniki nie są raportowane do CtsVerifier.apk
chyba że zostanie uruchomiona cała scena.
Aby uruchomić pojedynczą scenę w systemie Android 11 i starszym:
- Załaduj scenę, dodając flagę
scenes
wtools/run_all_tests.py
:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
Naciśnij 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=#
Przeprowadź indywidualny test.
python tests/scene#/test_*.py device=# camera=#
Następnie w katalogu lokalnym generowane są wykresy, 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 dla debugowania, dodaj flagędebug=True
.python tests/scene#/test_*.py device=# camera=# debug=True
Wyniki są drukowane na ekranie lokalnym, a obrazy zapisywane są w katalogu lokalnym 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 indywidualny test.
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 wykonania.
P5: Dlaczego muszę uruchamiać testy zakończone niepowodzeniem jako całą scenę, zamiast ponownie uruchamiać testy indywidualnie?
Testy można uruchamiać indywidualnie w celu debugowania, ale wyniki nie są raportowane do CtsVerifier.apk
chyba że zostanie uruchomiona cała scena.
Camera ITS zapewnia, że aplikacje innych firm mają kompatybilny interfejs aparatu. Podobnie jak w przypadku testu jednostkowego , każdy test obciąża pojedynczą specyfikację kamery. Aby wychwycić niewiarygodne zachowanie, oczekuje się, że testy te przejdą jako grupa dla całej sceny. Na przykład, chociaż pojedynczy zawodny test może przejść pomyślnie powtórkę całej sceny, wiele niewiarygodnych testów może przejść pomyślnie.
Jako skrajny przykład rozważmy przypadek, w którym w scenie znajduje się 10 testów, z których każdy ma 50% prawdopodobieństwa zwrotu PASS
. Uruchamiając każdy test indywidualnie, istnieje duża szansa, że operator uda się przekonać kamerę do pozytywnego wyniku testu Camera ITS. Jeśli jednak testy zostaną przeprowadzone łącznie jako scena, prawdopodobieństwo, że scena przejdzie pomyślnie, wynosi tylko 0,1%.
P6: Jak uruchomić pojedynczą scenę lub zmienić kolejność odtwarzanych scen?
Domyślnie skrypt tools/run_all_tests.py
uruchamia wszystkie sceny w odpowiedniej kolejności. Jednakże sceny można uruchamiać pojedynczo lub w określonej kolejności i raportować 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 starszym:
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 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 ustawiane są w pliku config.yml
.
Pytanie 7: Wiele testów sceny 1 kończy się niepowodzeniem przy konfiguracji tabletu, ale przechodzi pomyślnie przy użyciu karty papierowej. Co jest nie tak?
Upewnij się, że tablet i środowisko testowe spełniają poniższe specyfikacje.
Specyfikacje 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 dać prawidłowych 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 mieści się w przedziale 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 czujnika?
Upewnij się, że należysz do grupy
dialout
.groups | egrep ‘dialout'
Upewnij się, że kontroler fuzji czujnika jest podłączony, sprawdzając, czy technologia Microchip jest podłączona 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 ustawiane są w pliku
config.yml
.Wyniki przebiegu znajdują się w folderze
/tmp/tmp###
utworzonym w folderachsensor_fusion_#
, gdzie#
jest numerem przebiegu. Najczęstsze przyczyny niepowodzeń to:- Telefon nie jest prawidłowo wyśrodkowany.
- Na obrazie nie widać wystarczającej liczby funkcji (często jest to problem z FoV lub oświetleniem).
- Zwrócony
FAIL
jest prawidłowy i należy skorygować przesunięcie czasowe między kamerą a żyroskopem.
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 przeprowadziłeś test za pomocą
tools/run_all_tests.py
, dołącz spakowany katalog/tmp/
do błędu. - Jeśli przeprowadziłeś test samodzielnie, dołącz do błędu wszystkie wyniki ekranu i wygenerowane obrazy.
Dołącz także raport o błędzie. Jeśli dany test zakończy się niepowodzeniem, użyj następującego polecenia, aby wygenerować raport o błędzie i załączyć wygenerowany plik ZIP do błędu.
adb -s device_id bugreport
P10: Jak uruchomić scenę testową sensor_fusion za pomocą aparatu, który ma minimalną odległość ostrzenia, która tworzy rozmyte obrazy przy odległości mapy wynoszącej 25 cm?
Jeśli aparat nie może ustawić ostrości z odległości 25 cm, zdejmij panel montażowy mapy ze skrzynki zgrzewającej czujnik. Umieść wykres w odległości, w której urządzenie DUT może się skupić, i zmień chart_distance
w config.yml
na zmierzoną odległość pomiędzy testowanym urządzeniem a wykresem. Rysunek 5 pokazuje przykład pomiaru odległości mapy w tej sytuacji.
edit config.yml chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART
P11: Jak uruchomić sceny testowe na tablecie dla aparatu z minimalną odległością ostrzenia, która powoduje rozmycie obrazu przy odległości mapy wynoszącej 31 cm?
Jeśli Twoja kamera nie jest w stanie uzyskać wystarczająco ostrych obrazów, testując na głębokości 31 cm (głębokość stanowiska testowego RFoV), zamontuj kamerę przed platformą w takiej odległości, aby scena mapy wypełniła około 60% pola kamery widok (FoV) z ostrzejszymi obrazami. Odległość ta może być mniejsza niż minimalna odległość ogniskowania aparatu. Pozostaw chart_distance
w config.yml
na 31 cm. Skalowanie mapy na tablecie zależy od pola widzenia kamery, jak pokazano w poniższej tabeli:
FoV kamery | Współczynnik skalowania wykresu |
---|---|
60 > FoV > 40 | 0,67x |
40 > FoV > 25 | 0,5x |
FoV < 25 | 0,33x |
Pytanie 12: Jakie testy przeprowadzane są w przypadku logicznego interfejsu API obsługującego wiele kamer?
Jeśli Twoja kamera korzysta z REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
, wszystkie obsługiwane testy ITS są uruchamiane na kamerze logicznej najwyższego poziomu. Podzbiór testów ITS jest przeprowadzany na fizycznych kamerach podrzędnych, a testy te są wymienione w tools/run_all_tests.py
pod stałą SUB_CAMERA_TESTS
.