Android Camera Image Test Suite (ITS) fa parte di Android Compatibility Test Suite (CTS) Verifier e include test che verificano il contenuto dell'immagine. CTS Verifier supporta l'automazione dei test ITS con Camera ITS-in-a-box; il supporto per i test manuali copre tutti i fattori di forma dei dispositivi Android.
ITS-in-a-box include i seguenti vantaggi:
- Automazione. Non è necessario alcun intervento umano durante il test.
- Risoluzione dei problemi semplice. La coerenza dell'ambiente di test porta a meno errori di configurazione e aumenta la riproducibilità.
- Efficienza. La possibilità di riprovare per una singola telecamera/scena migliora l'efficienza di esecuzione del test.
Iniziare
ITS-in-a-box è costituito da una scatola di plastica tagliata al laser da disegni CAD (computer-aided design), una tavoletta cartografica e un dispositivo in prova (DUT). È possibile utilizzare l'ITS-in-a-box con ampio campo visivo (WFoV), in grado di testare sia le telecamere WFoV (FoV > 90 gradi) che RFoV (FoV < 90 gradi), oppure il normale campo di vista -view (RFoV) ITS-in-a-box.
Per iniziare con la fotocamera ITS-in-a-box:
- Acquista o costruisci un WFoV o RFoV ITS-in-a-box.
- Configura un tablet con il software Camera ITS.
- Esegui dei test .
- Ottieni risultati dal DUT.
Configura la tavoletta
Questa sezione fornisce istruzioni dettagliate per la configurazione di un tablet da utilizzare con i test Camera ITS situati nella directory CameraITS
. Queste istruzioni utilizzano un Pixel C come tablet di esempio. Per informazioni sui requisiti e sui consigli dei tablet, vedere Requisiti dei tablet .
Nota: gli script Python di Camera ITS impostano automaticamente le seguenti opzioni sul tablet:
Impostazioni > Display > Sospensione > Dopo 30 minuti di inattività
Luminosità adattiva > OFF
- Carica il tablet e accendilo. Se viene richiesto di configurare un account, saltalo (La fotocamera ITS non richiede alcun account associato al tablet).
- Aggiorna il tablet ad Android 7.0 o versioni successive. Android 6.x e versioni precedenti non supportano Camera ITS.
- Abilita la modalità sviluppatore .
- Torna alle Impostazioni e seleziona Opzioni sviluppatore.
Abilita opzioni - SU
- Stai sveglio
- Debug USB (consente all'host di eseguire il tablet in modalità debug. Quando si collega il tablet all'host per la prima volta, il tablet richiede Consenti debug USB? Se il tablet non visualizza la richiesta di debug, disconnettersi e ricollegare il tavoletta.)
Disabilita opzioni - Aggiornamenti automatici del sistema
- Verifica le app tramite USB
- Determina il DUT e gli ID della carta eseguendo
$ adb devices
per elencare i dispositivi disponibili. Per determinaredevice_id
echart_id
, collega e scollega i dispositivi e osserva i dispositivi che si connettono e si disconnettono. - Eseguire tre esecuzioni di prova per eliminare suggerimenti e richieste dell'utente che possono oscurare i grafici sullo schermo del tablet.
- Posiziona il tablet a faccia in su su un tavolo (non attaccare il tablet al pannello posteriore della scatola).
- Esegui il comando seguente:
python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
Le scene 2 e 3 richiedono che il tablet visualizzi un'immagine, quindi il tablet richiede Consenti a Drive di accedere a foto, contenuti multimediali e file sul tuo dispositivo? . Cancellare questo messaggio (e impedire messaggi futuri) premendo Consenti. - Esegui nuovamente il comando. Il tablet richiede Conservare una copia di questo file? e suggerisce Google Drive. Cancella questo messaggio (e impedisci messaggi futuri) premendo l'icona Drive, quindi Annulla per caricare su Drive.
- Infine, esegui
tools/run_all_tests.py
e conferma che le scene cambiano automaticamente mentre lo script scorre attraverso scene diverse. Sebbene la maggior parte dei test fallisca (poiché la fotocamera non è puntata verso la carta), è possibile verificare che il tablet scorra correttamente tra le scene senza visualizzare alcun messaggio o altri popup sullo schermo.
Esegui dei test
Prima di eseguire ITS-in-a-box, assicurati che la configurazione del test includa i seguenti hardware e software:
- Un (1) ITS-in-a-box
- Un (1) tablet da 10" ad alta risoluzione per la visualizzazione delle scene, S/N: 5811000011
- Un (1) DUT su cui è installata l'app CTS Verifier 7.0_8+. Esempio DUT:
- Un (1) Pixel NOF26W per il test della fotocamera posteriore(0), S/N: FA6BM0305016. Per installare l'app CTS Verifier, decomprimi
android-cts-verifier.zip
quindi eseguiadb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
- Un (1) Pixel NOF26W per il test della fotocamera posteriore(0), S/N: FA6BM0305016. Per installare l'app CTS Verifier, decomprimi
Esegui scene basate su tablet
Per eseguire le scene da 0 a 4, 6 e scene_change sulla fotocamera posteriore:
cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0
Esempio:
Riprovare le scene
Puoi riprovare le scene per una singola telecamera:
- Per riprovare le scene su una singola telecamera:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
Esegui la scena 5
La scena 5 richiede una configurazione speciale con illuminazione specifica (per i dettagli, fare riferimento a CameraITS.pdf
in CTS Verifier, che è possibile scaricare da Download di Compatibility Test Suite ). È necessario eseguire la scena 5 separatamente (fuori dalla scatola).
Per eseguire la scena 5 per le fotocamere anteriore e posteriore su un singolo dispositivo:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5
Ottieni risultati
È possibile visualizzare i risultati durante il test e salvare i risultati completati come report.
- Vedi i risultati. Per salvare i risultati ITS della fotocamera come rapporto:
- Premi Pass e salva il report.
Figura 3. Rapporto ITS della telecamera - Estrai report dal dispositivo:
adb -s FA6BM0305016 pull /sdcard/verifierReports
- Decomprimere il file del report e visualizzare
test_result.xml
.
Figura 4. Rapporti ITS della telecamera
- Premi Pass e salva il report.
Requisiti del tablet
I tablet devono avere una dimensione del display di circa 10 pollici con una risoluzione dello schermo superiore a 1920 x 1200 pixel. Il tablet non deve utilizzare la modulazione di larghezza di impulso (PWM) per impostare il livello di luminosità. Il valore brightness
deve essere impostato in config.yml
in base al modello di tablet. La tabella seguente elenca i tablet consigliati per i test ITS insieme alle versioni di rilascio Android per il DUT con cui funzionano i tablet.
Dispositivo | Dimensioni dello schermo (pollici) | Dimensioni dello schermo (pixel) | Dimensioni della tavoletta (pollici) | Schermo luminosità | Schermo bit | Supportato Sistema operativo DUT | Supportato sistema operativo del tablet |
---|---|---|---|---|---|---|---|
SAMSUNG Galaxy Tab A8 | 10.5 | 1920 x 1200 | 9,72x6,37x0,27 | 192 | 8 | Android 13+ | Android 11+ |
Xiaomi Pad 5 | 11 | 2560 x 1600 | 10,03x6,55x0,27 | 1024 | 11 | Android 12+ | Solo Android 11 |
Lenovo Scheda M10 Plus | 10.3 | 1920 x 1200 | 9,61x6,03x0,32 | 192 | 8 | Android 12+ | Android 9+ |
SAMSUNG Galaxy Tab A7 | 10.4 | 2000 x 1200 | 9,75x6,2x0,28 | 192 | 8 | Android 12+ | Android 10+ |
Chuwi Hi9 Aria 10.1 | 10.1 | 2560 x 1600 | 9,52x6,77x0,31 | 192 | 8 | Android 7+ | Android 8+ |
Asus ZenPad3 | 9.7 | 2048 x 1536 | 9,47x6,44x0,28 | 192 | 8 | Android 7+ | Android 6+ |
Huawei MediaPad m5 | 10.8 | 2560 x 1600 | 10,18x6,76x0,29 | 192 | 8 | Android 7+ | Android 8+ |
Google PixelC | 10.2 | 2560 x 1800 | 9,53x7,05x0,28 | 96 | 8 | Android 7+ | Android 6+ |
Sony XperiaZ4 | 10.1 | 2560 x 1600 | 10×6,57×0,24 | 192 | 8 | Android 7+ | Android 5+ |
Domande frequenti
Q1: Come posso determinare di quali banchi prova ho bisogno per il mio dispositivo?
RFoV ITS-in-a-box revisione 1 testa le telecamere RFoV per i test dalla scena 0 alla scena 4 nella directory CameraITS/tests
. RFoV è definito come 60° < FoV < 90° . Per le telecamere FoV più grandi, le luci potrebbero apparire nelle immagini oppure i grafici potrebbero coprire un'area troppo piccola nel FoV, influenzando i risultati dei test.
La revisione 2 di WFoV ITS-in-a-box testa le telecamere WFoV per i test dalla scena 0 alla scena 4 nella directory CameraITS/tests
. Il WFoV è definito come FoV >= 90° . Funzionalmente è identico alla revisione 1, ma più grande. Il banco di prova revisione 2 può testare sia le telecamere RFoV che WFoV in Android 9 e versioni successive.
La scatola di fusione dei sensori testa l'offset temporale della fotocamera/giroscopio e la sincronizzazione dei fotogrammi dei sistemi multi-camera con test in scenes=sensor_fusion
. Per il flag di funzione REALTIME
è richiesto un offset temporale della telecamera/giroscopio inferiore a 1 ms.
I dispositivi multi-camera possono essere testati con un singolo impianto per test ITS statici e un impianto di fusione dei sensori se la fotocamera ha il flag della funzione REALTIME
.
Nella tabella seguente è fornita una serie di configurazioni di esempio.
Esempio | FoV della telecamera | TEMPO REALE? | Impianti consigliati | Appunti |
---|---|---|---|---|
1 | 75° | NO | Rev 1 o 2 | Android 7.0 o versione successiva |
2 | 75° | SÌ | Rev 1 o 2 + fusione del sensore | Android 9 o versioni successive |
3 | 75° + 95° | SÌ | Rev 2 + fusione dei sensori | Android 9 o versioni successive |
Q2: Come posso indicare quale banco di prova è in uso?
Per designare il banco di prova corretto, assicurarsi che il parametro della distanza sulla carta sia corretto. Il banco di prova rev1 (RFoV) ha una distanza della carta di 31 cm, mentre il banco di prova rev2 (WFoV) ha una distanza della carta di 22 cm. Per impostazione predefinita, la distanza della carta è impostata su 31 cm.
Da Android 10 ad Android 11
Per identificare il banco di prova corretto in Android da 10 a 11, aggiungi il flagdist
alla riga di comando. Il valore predefinito per dist
è 31
. Esegui il comando seguente per modificare il parametro chart_distance
.python tools/run_all_tests.py ... chart=# dist=22
Androide 12
Per identificare il banco di prova corretto in Android 12 puoi modificare il file config.yml per cambiare il parametrochart_distance
.edit config.yml chart_distance: 31.0 → chart_distance: 22.0
Q3: Come posso controllare la luminosità del tablet?
Per impostazione predefinita, la luminosità del tablet è impostata su 96.
Per modificare la luminosità sui tablet con Android 7.0 fino ad Android 9, esegui:
edit tools/wake_up_screen.py DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192
Per modificare la luminosità sui tablet con Android da 10 a 11, il valore può essere modificato dalla riga di comando aggiungendo il flag brightness
:
python tools/run_all_tests.py device=# camera=# chart=# brightness=192
Per modificare la luminosità sui tablet con Android 12, esegui:
edit config.yml brightness: 96 → brightness: 192
Q4: Come posso eseguire il debug di un singolo test?
I test possono essere eseguiti singolarmente a scopo di debug, ma i risultati non vengono segnalati a CtsVerifier.apk
a meno che non venga eseguita l'intera scena.
Per eseguire una scena individuale in Android 11 e versioni precedenti:
- Carica una scena aggiungendo il flag
scenes
intools/run_all_tests.py
:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
Premi Control+C per interrompere i test dopo che la scena è stata registrata come caricata su
stdout
.Se la scena corretta è già sullo schermo, riattiva lo schermo:
python tools/wake_up_screen.py screen=#
Esegui un test individuale.
python tests/scene#/test_*.py device=# camera=#
I grafici vengono quindi generati nella directory locale e
stdout
estderr
vengono stampati sullo schermo.Per ottenere maggiori informazioni per il debug, aggiungere istruzioni
print
allo script. Per aumentare l'output del test per il debug, aggiungere il flagdebug=True
.python tests/scene#/test_*.py device=# camera=# debug=True
I risultati vengono stampati sullo schermo locale e le immagini vengono salvate nella directory locale anziché nella directory /tmp/tmp###
generata durante l'esecuzione tools/run_all_tests.py
.
Per eseguire una scena individuale in Android 12:
Modifica il file
config.yml
.edit config.yml camera: <camera-id> → camera: 0 scene: <scene-name> → scene: scene1_1
Esegui il test individuale.
python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
I risultati vengono stampati nella directory /tmp/logs/mobly/TEST_BED_TABLET_SCENES/
ordinati in base al tempo di esecuzione.
D5: Perché è necessario eseguire i test non riusciti come un'intera scena invece di rieseguire i test singolarmente?
I test possono essere eseguiti individualmente a scopo di debug, ma i risultati non vengono segnalati a CtsVerifier.apk
a meno che non venga eseguita l'intera scena.
Camera ITS garantisce che le app di terze parti dispongano di un'interfaccia fotocamera compatibile. Similmente a un test unitario , ogni test sottolinea una singola specifica nella fotocamera. Per individuare comportamenti inaffidabili, è previsto che questi test vengano superati in gruppo per un'intera scena. Ad esempio, sebbene un singolo test inaffidabile possa superare la ripetizione di un'intera scena, è difficile che più test inaffidabili superino.
Come esempio estremo, si consideri il caso in cui sono presenti 10 test in una scena, ciascuno dei quali ha una probabilità del 50% di restituire PASS
. Eseguendo ciascun test individualmente, c'è un'alta probabilità che un operatore riesca a far sì che la telecamera superi Camera ITS. Tuttavia, se i test vengono eseguiti complessivamente come una scena, c'è solo una probabilità dello 0,1% che la scena venga superata.
Q6: Come posso eseguire una singola scena o riordinare le scene eseguite?
Per impostazione predefinita, lo script tools/run_all_tests.py
esegue tutte le scene in ordine. Tuttavia, le scene possono essere eseguite individualmente o in un ordine specifico ed essere segnalate a CtsVerifier.apk
.
Per eseguire una singola scena (ad esempio, scena 2) o eseguire più di una scena in un ordine specifico in Android 11 o versioni precedenti:
python tools/run_all_tests.py device=# camera=# chart=# scenes=2
python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2
Per eseguire una singola scena o eseguire più di una scena in un ordine specifico in Android 12:
python tools/run_all_tests.py scenes=2
python tools/run_all_tests.py scenes=3,2
I parametri aggiuntivi sono impostati nel file config.yml
.
D7: Numerosi test della scena 1 falliscono con la configurazione del tablet ma passano con una carta nautica cartacea. Cosa c'è che non va?
Assicurarsi che il tablet e l'ambiente di test soddisfino le seguenti specifiche.
Specifiche della tavoletta
Assicurati che il tablet soddisfi le seguenti specifiche:
- Dimensioni del display (pollici): 10 pollici
- Dimensioni del display (pixel): maggiore di 1920 x 1200 pixel
Per ulteriori dettagli, vedere Requisiti del tablet .
Luminosità della tavoletta
I test potrebbero non ottenere risultati corretti se la luminosità del display del tablet è troppo bassa.
Per ulteriori dettagli, vedere Come si controlla la luminosità del tablet?
Livello di illuminazione della scatola (richiede luxmetro)
Assicurati che il valore lux target all'apertura del tablet sia compreso tra 100 e 300.
Se il livello di lux è troppo alto, scene1/test_param_flash_mode.py
restituisce FAIL
. Se il livello di lux è troppo basso, più test falliscono.
D8: Come si esegue il debug dei test di fusione dei sensori?
Assicurati di far parte di un gruppo
dialout
.groups | egrep ‘dialout'
Assicurarsi che il controller di fusione dei sensori sia collegato determinando se Microchip Technology è collegata alla porta USB.
lsusb … Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc. …
Esegui il test più volte per ottenere una distribuzione dei tentativi di test con i seguenti comandi.
In Android 11 o versioni precedenti:
python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
Nell'Android 12:
python tools/run_sensor_fusion_box.py num_runs=10
I parametri aggiuntivi sono impostati nel file
config.yml
.Gli output della corsa si trovano nella cartella
/tmp/tmp###
creata nelle cartellesensor_fusion_#
, dove#
è il numero della corsa. Le ragioni comuni del fallimento sono:- Il telefono non è centrato correttamente.
- Nell'immagine non vengono trovate abbastanza funzionalità (spesso un problema di campo visivo o di illuminazione).
- Il
FAIL
restituito è valido e l'offset temporale tra la fotocamera e il giroscopio deve essere corretto.
Q9: Quali informazioni dovrei includere quando riporto un bug di test?
Quando segnali un bug di test, includi i file e le immagini generati per il test.
- Se hai eseguito il test tramite
tools/run_all_tests.py
, allega una directory/tmp/
compressa al bug. - Se hai eseguito il test da solo, allega al bug tutti gli output dello schermo e le immagini generate.
Includere anche una segnalazione di bug. Dopo che il test in questione fallisce, utilizza il comando seguente per generare una segnalazione di bug e allegare il file zip generato al bug.
adb -s device_id bugreport
Q10: Come posso eseguire una scena di test sensor_fusion con una fotocamera che ha una distanza minima di messa a fuoco che crea immagini sfocate a una distanza sulla carta di 25 cm?
Se la fotocamera non riesce a mettere a fuoco a una distanza di 25 cm, rimuovi il pannello di montaggio della tabella della scatola di fusione dei sensori. Posiziona la carta a una distanza in cui il DUT può concentrarsi e modifica chart_distance
in config.yml
sulla distanza misurata tra il DUT e la carta. La Figura 5 mostra un esempio di come misurare la distanza della carta in questa situazione.
edit config.yml chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART
Q11: Come posso eseguire scene di test su tablet per una fotocamera con una distanza di messa a fuoco minima che crea immagini sfocate a una distanza sulla carta di 31 cm?
Se la tua fotocamera non è in grado di produrre immagini sufficientemente nitide testando a 31 cm (la profondità del banco di prova RFoV), monta la fotocamera davanti al banco di prova a una distanza tale da consentire alla scena cartografica di riempire circa il 60% del campo della fotocamera. vista (FoV) con immagini più nitide. Questa distanza può essere inferiore alla distanza minima di messa a fuoco della fotocamera. Lasciare chart_distance
in config.yml
a 31 cm. Il ridimensionamento del grafico sul tablet è determinato dal FoV della fotocamera, come mostrato nella tabella seguente:
Campo visivo della telecamera | Fattore di scala del grafico |
---|---|
60 > Campo visivo > 40 | 0,67x |
40 > FoV > 25 | 0,5x |
FoV < 25 | 0,33x |
D12: Con l'API logica multi-camera, quali test vengono eseguiti su quali fotocamere?
Se la tua fotocamera utilizza REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
, tutti i test ITS supportati vengono eseguiti sulla fotocamera logica di livello superiore. Un sottoinsieme dei test ITS viene eseguito sulle fotocamere secondarie fisiche e questi test sono elencati in tools/run_all_tests.py
sotto la costante SUB_CAMERA_TESTS
.