O Android Camera Image Test Suite (ITS) faz parte do Android Compatibility Test Suite (CTS) Verifier e inclui testes que verificam o conteúdo da imagem. CTS Verifier suporta automação de teste ITS com Camera ITS-in-a-box; o suporte para testes manuais abrange todos os fatores de forma do dispositivo Android.
ITS-in-a-box inclui os seguintes benefícios:
- Automação. Nenhuma intervenção humana é necessária durante o teste.
- Fácil solução de problemas. A consistência do ambiente de teste leva a menos erros de configuração e aumenta a reprodutibilidade.
- Eficiência. A capacidade de repetir a câmera/cena individual melhora a eficiência da execução do teste.
iniciar
O ITS-in-a-box consiste em uma caixa de plástico cortada a laser de desenhos de projeto auxiliado por computador (CAD), um tablet gráfico e um dispositivo em teste (DUT). Você pode usar o amplo campo de visão (WFoV) ITS-in-a-box, que é capaz de testar câmeras WFoV (FoV > 90 graus) e RFoV (FoV < 90 graus), ou o campo regular de -view (RFoV) ITS-in-a-box.
Para começar a usar a câmera ITS-in-a-box:
- Compre ou construa um WFoV ou RFoV ITS-in-a-box.
- Configure um tablet com o software Camera ITS.
- Executar testes .
- Obter resultados do DUT.
Configurar o tablet
Esta seção fornece instruções passo a passo para configurar um tablet para uso com os testes Camera ITS localizados no diretório CameraITS
. Estas instruções usam um Pixel C como exemplo de tablet. Para obter informações sobre os requisitos e recomendações do tablet, consulte Requisitos do tablet .
Nota: Os scripts Camera ITS Python definem automaticamente as seguintes opções no tablet para você:
Configurações > Tela > Suspensão > Após 30 minutos de inatividade
Brilho adaptável > DESLIGADO
- Carregue o tablet e ligue-o. Se solicitado a configurar uma conta, ignore-a (o Camera ITS não requer nenhuma conta emparelhada com o tablet).
- Atualize o tablet para o Android 7.0 ou superior. Android 6.xe versões anteriores não suportam Camera ITS.
- Ative o modo de desenvolvedor .
- Volte para Configurações e selecione Opções do desenvolvedor.
Habilitar opções - Sobre
- Fique acordado
- Depuração USB (isso permite que o host execute o tablet no modo de depuração. Quando você conecta o tablet ao host pela primeira vez, o tablet solicita Permitir depuração USB? Se o tablet não exibir o prompt de depuração, desconecte e reconecte o tábua.)
Desativar opções - Atualizações automáticas do sistema
- Verificar aplicativos por USB
- Determine os IDs do DUT e do gráfico executando
$ adb devices
para listar os dispositivos disponíveis. Para determinardevice_id
echart_id
, conecte e desconecte dispositivos e observe os dispositivos que se conectam e desconectam. - Realize três execuções de teste para suprimir dicas e solicitações do usuário que podem obscurecer os gráficos na tela do tablet.
- Posicione o tablet virado para cima em uma mesa (não prenda o tablet no painel traseiro da caixa).
- Execute o seguinte comando:
python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
As cenas 2 e 3 exigem que o tablet exiba uma imagem, então o tablet solicita Permitir que o Drive acesse fotos, mídia e arquivos em seu dispositivo? . Limpe este prompt (e evite prompts futuros) pressionando Permitir. - Execute o comando novamente. O tablet solicita Manter uma cópia deste arquivo? e sugere o Google Drive. Limpe este prompt (e evite futuros prompts) pressionando o ícone do Drive e, em seguida, Cancelar para carregar no drive.
- Por fim, execute
tools/run_all_tests.py
e confirme se as cenas mudam automaticamente à medida que o script passa por diferentes cenas. Embora a maioria dos testes falhe (já que a câmera não está apontada para o gráfico), você pode verificar se o tablet percorre corretamente as cenas sem exibir nenhum prompt ou outro pop-up na tela.
Executar testes
Antes de executar o ITS-in-a-box, certifique-se de que sua configuração de teste inclua o seguinte hardware e software:
- Um (1) ITS-in-a-box
- Um (1) tablet de 10" de alta resolução para exibição de cenas, S/N: 5811000011
- Um (1) DUT com o aplicativo CTS Verifier 7.0_8+ instalado. Exemplo DUT:
- Um (1) Pixel NOF26W para o teste da câmera traseira (0), S/N: FA6BM0305016. Para instalar o aplicativo CTS Verifier, descompacte
android-cts-verifier.zip
e executeadb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
- Um (1) Pixel NOF26W para o teste da câmera traseira (0), S/N: FA6BM0305016. Para instalar o aplicativo CTS Verifier, descompacte
Executar cenas baseadas em tablet
Para executar as cenas 0 a 4, 6 e mudança de cena na câmera traseira:
cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0
Exemplo:
Repetir cenas
Você pode repetir as cenas para uma única câmera:
- Para repetir as cenas em uma única câmera:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
Executar cena 5
A cena 5 requer configuração especial com iluminação específica (para obter detalhes, consulte CameraITS.pdf
no CTS Verifier, que pode ser baixado em Compatibility Test Suite Downloads ). Você deve executar a cena 5 separadamente (fora da caixa).
Para executar a cena 5 para câmeras frontal e traseira em um único 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
Obter resultados
Você pode visualizar os resultados durante o teste e salvar os resultados concluídos como um relatório.
- Ver resultados. Para salvar os resultados ITS da câmera como um relatório:
- Pressione Aprovar e salve o relatório.
Figura 3. Relatório ITS da câmera - Puxe relatórios do dispositivo:
adb -s FA6BM0305016 pull /sdcard/verifierReports
- Descompacte o arquivo de relatório e visualize
test_result.xml
.
Figura 4. Relatórios ITS da câmera
- Pressione Aprovar e salve o relatório.
Requisitos do tablet
Os tablets devem ter um tamanho de tela de cerca de 10 polegadas com uma resolução de tela superior a 1920 x 1200 pixels. O valor brightness
deve ser definido em config.yml
de acordo com o modelo do tablet. A tabela abaixo lista os tablets recomendados para teste de ITS junto com as versões de lançamento do Android para o DUT com os quais os tablets funcionam.
Dispositivo | Tamanho de exibição (polegadas) | Tamanho de exibição (píxeis) | Dimensões do tablet (polegadas) | Mostrar brilho | Mostrar bits | Suportado DUT OS |
---|---|---|---|---|---|---|
Samsung Galaxy Tab A8 | 10.5 | 1920 x 1200 | 9,72 x 6,37 x 0,27 | 192 | 8 | Android 13+ |
Xiaomi Bloco 5 | 11 | 2560 x 1600 | 10,03 x 6,55 x 0,27 | 1024 | 11 | Android 12+ |
lenovo Guia M10 Plus | 10.3 | 1920 x 1200 | 9,61 x 6,03 x 0,32 | 192 | 8 | Android 12+ |
Samsung Galaxy Tab A7 | 10.4 | 2000 x 1200 | 9,75 x 6,2 x 0,28 | 192 | 8 | Android 12+ |
chuwi Hi9 Air 10.1 | 10.1 | 2560 x 1600 | 9,52 x 6,77 x 0,31 | 192 | 8 | Android 7+ |
Asus ZenPad 3 | 9.7 | 2048 x 1536 | 9,47 x 6,44 x 0,28 | 192 | 8 | Android 7+ |
Huawei MediaPad m5 | 10.8 | 2560 x 1600 | 10,18 x 6,76 x 0,29 | 192 | 8 | Android 7+ |
Google Pixel C | 10.2 | 2560 x 1800 | 9,53 x 7,05 x 0,28 | 96 | 8 | Android 7+ |
sony Xperia Z4 | 10.1 | 2560 x 1600 | 10 x 6,57 x 0,24 | 192 | 8 | Android 7+ |
Perguntas frequentes
P1: Como determino quais equipamentos de teste preciso para o meu dispositivo?
O RFoV ITS-in-a-box revisão 1 testa as câmeras RFoV para testes de cena 0 a cena 4 no diretório CameraITS/tests
. RFoV é definido como 60° < FoV < 90° . Para câmeras FoV maiores, as luzes podem aparecer nas imagens ou os gráficos podem cobrir uma área muito pequena no FoV, afetando os resultados do teste.
O WFoV ITS-in-a-box revisão 2 testa câmeras WFoV para testes de cena 0 a cena 4 no diretório CameraITS/tests
. WFoV é definido como FoV >= 90° . É funcionalmente idêntico à revisão 1, mas maior. O equipamento de teste da revisão 2 pode testar câmeras RFoV e WFoV no Android 9 e superior.
A caixa de fusão de sensores testa o deslocamento de tempo da câmera/giroscópio e a sincronização de quadros de sistemas multicâmera com testes em scenes=sensor_fusion
. Um deslocamento de tempo da câmera/giroscópio de menos de 1 ms é necessário para o sinalizador de recurso REALTIME
.
Os dispositivos com várias câmeras podem ser testados com um único equipamento para testes de ITS estáticos e um equipamento de fusão de sensores se a câmera tiver o sinalizador de recurso REALTIME
.
Um conjunto de configurações de exemplo é fornecido na tabela abaixo.
Exemplo | FoVs da câmera | TEMPO REAL? | Equipamentos recomendados | Notas |
---|---|---|---|---|
1 | 75° | Não | Rev 1 ou 2 | Android 7.0 ou superior |
2 | 75° | Sim | Rev 1 ou 2 + fusão de sensores | Android 9 ou superior |
3 | 75° + 95° | Sim | Rev 2 + fusão de sensores | Android 9 ou superior |
P2: Como faço para designar qual equipamento de teste está em uso?
Para designar o equipamento de teste correto, certifique-se de que o parâmetro de distância do gráfico esteja correto. O equipamento de teste rev1 (RFoV) tem distância do gráfico de 31 cm e o equipamento rev2 (WFoV) tem distância do gráfico de 22 cm. Por padrão, a distância do gráfico é definida como 31 cm.
Android 10 para Android 11
Para identificar o equipamento de teste correto no Android 10 a 11, adicione o sinalizadordist
na linha de comando. O valor padrão para dist
é 31
. Execute o seguinte comando para alterar o parâmetro chart_distance
.python tools/run_all_tests.py ... chart=# dist=22
Androide 12
Para identificar o equipamento de teste correto no Android 12, você pode editar o arquivo config.yml para alterar o parâmetrochart_distance
.edit config.yml chart_distance: 31.0 → chart_distance: 22.0
Q3: Como faço para controlar o brilho do tablet?
Por padrão, o brilho do tablet é definido como 96.
Para alterar o brilho em tablets com Android 7.0 a Android 9, execute:
edit tools/wake_up_screen.py DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192
Para alterar o brilho em tablets com Android 10 a 11, o valor pode ser alterado na linha de comando adicionando o sinalizador brightness
:
python tools/run_all_tests.py device=# camera=# chart=# brightness=192
Para alterar o brilho em tablets com Android 12, execute:
edit config.yml brightness: 96 → brightness: 192
Q4: Como faço para depurar um único teste?
Os testes podem ser executados individualmente para fins de depuração, mas os resultados não são relatados ao CtsVerifier.apk
, a menos que toda a cena seja executada.
Para executar uma cena individual no Android 11 e inferior:
- Carregue uma cena adicionando o sinalizador
scenes
emtools/run_all_tests.py
:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
Pressione Control+C para interromper os testes depois que a cena for registrada como carregada em
stdout
.Se a cena correta já estiver na tela, ative a tela:
python tools/wake_up_screen.py screen=#
Faça um teste individual.
python tests/scene#/test_*.py device=# camera=#
Os gráficos são então gerados no diretório local e
stdout
estderr
são impressos na tela.Para obter mais informações para depuração, adicione instruções
print
ao script. Para aumentar a saída de teste para depuração, adicione o sinalizadordebug=True
.python tests/scene#/test_*.py device=# camera=# debug=True
Os resultados são impressos na tela local e as imagens são salvas no diretório local em vez do diretório /tmp/tmp###
gerado ao executar tools/run_all_tests.py
.
Para executar uma cena individual no Android 12:
Edite o arquivo
config.yml
.edit config.yml camera: <camera-id> → camera: 0 scene: <scene-name> → scene: scene1_1
Execute o teste individual.
python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
Os resultados são impressos no diretório /tmp/logs/mobly/TEST_BED_TABLET_SCENES/
classificados por tempo de execução.
P5: Por que preciso executar testes com falha como uma cena inteira em vez de executar novamente os testes individualmente?
Os testes podem ser executados individualmente para fins de depuração, mas os resultados não são relatados ao CtsVerifier.apk
, a menos que toda a cena seja executada.
O Camera ITS garante que aplicativos de terceiros tenham uma interface de câmera compatível. Semelhante a um teste de unidade , cada teste enfatiza uma única especificação na câmera. Para detectar comportamento não confiável, espera-se que esses testes sejam aprovados como um grupo para uma cena inteira. Por exemplo, embora um único teste não confiável possa ser aprovado na repetição de uma cena inteira, é difícil que vários testes não confiáveis sejam aprovados.
Como exemplo extremo, considere o caso em que há 10 testes em uma cena, cada um com 50% de probabilidade de retornar PASS
. Ao executar cada teste individualmente, há uma grande chance de um operador conseguir que a câmera passe no Camera ITS. No entanto, se os testes forem executados de forma agregada como uma cena, haverá apenas 0,1% de chance de que a cena seja aprovada.
Q6: Como executar uma única cena ou reordenar as cenas de execução?
Por padrão, o script tools/run_all_tests.py
executa todas as cenas em ordem. No entanto, as cenas podem ser executadas individualmente ou em uma ordem especificada e relatadas ao CtsVerifier.apk
.
Para executar uma cena individual (por exemplo, cena 2) ou executar mais de uma cena em uma ordem específica no Android 11 ou inferior:
python tools/run_all_tests.py device=# camera=# chart=# scenes=2
python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2
Para executar uma cena individual ou executar mais de uma cena em uma ordem específica no Android 12:
python tools/run_all_tests.py scenes=2
python tools/run_all_tests.py scenes=3,2
Os parâmetros adicionais são definidos no arquivo config.yml
.
P7: Vários testes da cena 1 falham com a configuração do tablet, mas são aprovados com um gráfico em papel. O que está errado?
Certifique-se de que o tablet e o ambiente de teste atendam às seguintes especificações.
Especificações do tablet
Certifique-se de que o tablet atende às seguintes especificações:
- Tamanho da tela (polegadas): 10 polegadas
- Tamanho da tela (pixels): maior que 1920 x 1200 pixels
Para obter mais detalhes, consulte Requisitos do tablet .
Brilho do tablet
Os testes podem não obter resultados corretos se o brilho da tela do tablet estiver muito baixo.
Para obter mais detalhes, consulte Como faço para controlar o brilho do tablet?
Nível de iluminação da caixa (requer medidor de lux)
Certifique-se de que o valor de lux desejado na abertura do comprimido esteja entre 100 e 300.
Se o nível de lux for muito alto, scene1/test_param_flash_mode.py
retornará FAIL
. Se o nível de lux for muito baixo, vários testes falharão.
P8: Como faço para depurar testes de fusão de sensores?
Verifique se você está em um grupo
dialout
.groups | egrep ‘dialout'
Certifique-se de que o controlador de fusão do sensor esteja conectado determinando se a Microchip Technology está conectada à porta USB.
lsusb … Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc. …
Execute o teste várias vezes para obter uma distribuição das tentativas de teste com os comandos a seguir.
No Android 11 ou inferior:
python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
No Android 12:
python tools/run_sensor_fusion_box.py num_runs=10
Os parâmetros adicionais são definidos no arquivo
config.yml
.As saídas de execução estão na pasta
/tmp/tmp###
criada nas pastassensor_fusion_#
, onde#
é o número da execução. Os motivos comuns de falha são:- O telefone não está centralizado corretamente.
- Recursos insuficientes são encontrados na imagem (geralmente um FoV ou problema de iluminação).
- O
FAIL
retornado é válido e o deslocamento de tempo entre a câmera e o giroscópio deve ser corrigido.
P9: Quais informações devo incluir ao relatar um bug de teste?
Ao relatar um bug de teste, inclua os arquivos e imagens gerados para o teste.
- Se você executou o teste por meio
tools/run_all_tests.py
, anexe um diretório/tmp/
compactado ao bug. - Se você executou o teste sozinho, anexe todas as saídas de tela e imagens geradas ao bug.
Inclua também um relatório de bug. Depois que o teste em questão falhar, use o seguinte comando para gerar um relatório de bug e anexe o arquivo zip gerado ao bug.
adb -s device_id bugreport
Q10: Como executo uma cena de teste sensor_fusion com uma câmera que tem uma distância mínima de foco que cria imagens borradas a 25 cm de distância do gráfico?
Se sua câmera não conseguir focalizar a uma distância de 25 cm, remova o painel de montagem do gráfico da caixa de fusão do sensor. Coloque o gráfico a uma distância em que o DUT possa focar e altere chart_distance
em config.yml
para a distância medida entre o DUT e o gráfico. A Figura 5 mostra um exemplo de como medir a distância do gráfico nesta situação.
edit config.yml chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART
Q11: Como executo cenas de teste de tablet para uma câmera com uma distância de foco mínima que cria imagens borradas a 31 cm de distância do gráfico?
Se sua câmera não conseguir produzir imagens nítidas o suficiente testando a 31 cm (a profundidade do equipamento de teste RFoV), monte sua câmera na frente do equipamento a uma distância para permitir que a cena do gráfico preencha aproximadamente 60% do campo da câmera de vista (FoV) com imagens mais nítidas. Essa distância pode ser menor que a distância mínima de foco da câmera. Deixe o chart_distance
em config.yml
em 31 cm. A escala do gráfico no tablet é determinada pelo FoV da câmera, conforme mostrado na tabela a seguir:
FoV da câmera | Fator de escala do gráfico |
---|---|
60 > FoV > 40 | 0,67x |
40 > FoV > 25 | 0,5x |
FoV < 25 | 0,33x |
Q12: Com a API multicâmera lógica, quais testes são executados em quais câmeras?
Se sua câmera usar REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
, todos os testes de ITS suportados serão executados na câmera lógica de nível superior. Um subconjunto dos testes ITS é executado nas subcâmeras físicas e esses testes são listados em tools/run_all_tests.py
sob a constante SUB_CAMERA_TESTS
.