Câmera ITS-in-a-Box

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:

  1. Compre ou construa um WFoV ou RFoV ITS-in-a-box.
  2. Configure um tablet com o software Camera ITS.
  3. Executar testes .
  4. 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

  1. 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).
  2. Atualize o tablet para o Android 7.0 ou superior. Android 6.xe versões anteriores não suportam Camera ITS.
  3. Ative o modo de desenvolvedor .
  4. 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
  5. Determine os IDs do DUT e do gráfico executando $ adb devices para listar os dispositivos disponíveis. Para determinar device_id e chart_id , conecte e desconecte dispositivos e observe os dispositivos que se conectam e desconectam.
  6. 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.
    1. Posicione o tablet virado para cima em uma mesa (não prenda o tablet no painel traseiro da caixa).
    2. 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.
    3. 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.
    4. 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 execute
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

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:

Câmera 0 S/N: FA6BM0305016
Figura 1. Câmera 0 S/N: FA6BM0305016

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

cena da câmera 5
Figura 2. Cena da câmera 5

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:
    1. Pressione Aprovar e salve o relatório.
      relatório ITS da câmera
      Figura 3. Relatório ITS da câmera
    2. Puxe relatórios do dispositivo:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Descompacte o arquivo de relatório e visualize test_result.xml .
      relatórios ITS da câmera
      Figura 4. Relatórios ITS da câmera

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 sinalizador dist 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âmetro chart_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:

  1. Carregue uma cena adicionando o sinalizador scenes em tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. 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=#
    
  3. 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 e stderr 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 sinalizador debug=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:

  1. Edite o arquivo config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. 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?

  1. Verifique se você está em um grupo dialout .

    groups | egrep ‘dialout'
  2. 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.
    …
    
  3. 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 pastas sensor_fusion_# , onde # é o número da execução. Os motivos comuns de falha são:

    1. O telefone não está centralizado corretamente.
    2. Recursos insuficientes são encontrados na imagem (geralmente um FoV ou problema de iluminação).
    3. 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.

  1. Se você executou o teste por meio tools/run_all_tests.py , anexe um diretório /tmp/ compactado ao bug.
  2. 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.

sensor_fusion TELE exemplo de teste 6
Figura 5. Distância do gráfico de medição para a cena do teste de fusão do sensor
  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 .