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. O CTS Verifier suporta automação de teste ITS com Camera ITS-in-a-box; o suporte para testes manuais abrange todos os formatos de dispositivos Android.

O ITS-in-a-box inclui os seguintes benefícios:

  • Automação. Nenhuma intervenção humana é necessária durante o teste.
  • Solução de problemas fácil. A consistência do ambiente de teste leva a menos erros de configuração e aumenta a reprodutibilidade.
  • Eficiência. A capacidade de tentar novamente para uma câmera/cena individual melhora a eficiência da execução do teste.

Começando

O ITS-in-a-box consiste em uma caixa de plástico que é cortada a laser a partir de desenhos de desenho assistido por computador (CAD), um tablet gráfico e um dispositivo em teste (DUT). Você pode usar o ITS-in-a-box de amplo campo de visão (WFoV), que é capaz de testar câmeras WFoV (FoV > 90 graus) e RFoV (FoV < 90 graus), ou o campo de visão normal -view (RFoV) ITS-in-a-box.

Para começar a usar o Camera 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. Execute testes .
  4. Obtenha resultados do DUT.

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

Observação: os scripts Python do Camera ITS 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 Android 7.0 ou superior. Android 6.xe versões inferiores não são compatíveis com Camera ITS.
  3. Ative o modo de desenvolvedor .
  4. Retorne para Configurações e selecione Opções do desenvolvedor.
    Ativar 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 o DUT e os IDs do gráfico executando $ adb devices para listar os dispositivos disponíveis. Para determinar device_id e chart_id , conecte e desconecte os dispositivos e observe os dispositivos que conectam e desconectam.
  6. Execute três execuções de teste para suprimir dicas e prompts 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 conecte o tablet ao 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 no 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 avisos futuros) pressionando o ícone Drive e depois Cancelar para upload para o drive.
    4. Por fim, execute tools/run_all_tests.py e confirme que as cenas mudam automaticamente conforme 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 outros pop-ups na tela.

Executando 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 em uma caixa
  • Um (1) tablet de 10" de alta resolução para exibir cenas, S/N: 5811000011
  • Um (1) DUT que tenha 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
      

Executando cenas baseadas em tablet

Para executar as cenas 0 a 4, 6 e scene_change 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

Repetindo cenas

Você pode repetir cenas para uma única câmera:

  • Para repetir cenas em uma única câmera:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Cena de corrida 5

A cena 5 requer configuração especial com iluminação específica (para obter detalhes, consulte CameraITS.pdf no CTS Verifier, que você pode baixar 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

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

Requisitos do tablet

Os tablets devem ter um tamanho de tela de cerca de 10 polegadas com resolução de tela maior que 1920 x 1200 pixels. O valor do brightness deve ser definido em config.yml de acordo com o modelo do tablet. A tabela abaixo lista os tablets recomendados para testes de ITS junto com as versões de lançamento do Android para o DUT com o qual os tablets funcionam.

Dispositivo Tamanho da tela
(polegadas)
Tamanho da tela
(píxeis)
Dimensões do tablet
(polegadas)
Exibição
brilho
DUT suportado
SO
Xiaomi Pad 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,75 x 6,2 x 0,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 x 6,76 x 0,29 192 Android 7+
Pixel 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 10 x 6,57 x 0,24 192 Android 7+

Perguntas frequentes (FAQ)

Q1: Como determino quais equipamentos de teste preciso para o meu dispositivo?

O RFoV ITS-in-a-box revisão 1 testa 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.

A revisão 2 do WFoV ITS-in-a-box testa as 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 do sensor testa o deslocamento de tempo da câmera/giroscópio e a sincronização de quadros dos sistemas de várias câmeras com testes em scenes=sensor_fusion . Um deslocamento de tempo de câmera/giroscópio de menos de 1 ms é necessário para o sinalizador de recurso REALTIME e aplicativos VR/AR.

Dispositivos com várias câmeras podem ser testados com um único equipamento para testes estáticos de ITS 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? Plataformas recomendadas Notas
1 75° Não Rev 1 Android 7.0 ou superior
2 75° Sim Rev 1 + fusão do sensor Android 9 ou superior
3 75° + 95° Sim Rev 2 + fusão do sensor Android 9 ou superior

Q2: Como designo 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 uma distância do gráfico de 31 cm e o equipamento rev2 (WFoV) tem uma distância do gráfico de 22 cm. Por padrão, a distância do gráfico é definida para 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

Android 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 de 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 de 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 após a cena ser registrada como carregada em stdout .

    Se a cena correta já estiver na tela, desperte 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 de 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 /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 /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 um comportamento não confiável, espera-se que esses testes passem como um grupo por uma cena inteira. Por exemplo, embora um único teste não confiável possa passar em uma 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 que um operador consiga que a câmera passe no Camera ITS. No entanto, se os testes forem executados no agregado como uma cena, há apenas 0,1% de chance de a cena passar.

Q6: Como faço para 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 para 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 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 .

Q7: Vários testes de cena 1 falham com a configuração do tablet, mas passam com um gráfico de papel. O que há de errado?

Certifique-se de que o tablet e o ambiente de teste atendam às especificações a seguir.

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 for muito baixo.

Para obter mais detalhes, consulte Como controlar o brilho do tablet?

Nível de iluminação da caixa (requer medidor de lux)

Certifique-se de que o valor de lux alvo na abertura do tablet 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.

Q8: Como faço para depurar testes de fusão do sensor?

  1. Certifique-se de estar em um grupo de 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 de 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. Não são encontrados recursos suficientes na imagem (geralmente um problema de FoV ou 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 de tools/run_all_tests.py , anexe um /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 comando a seguir para gerar um relatório de bug e anexe o arquivo zip gerado ao bug.

adb -s device_id bugreport

Q10: Como removo as barras de navegação em tablets 16:10 que obscurecem a cena?

Para tablets com proporções de 16:10 (ou superiores), a barra de navegação pode obscurecer parte da cena. Para ocultar a barra de navegação, use o seguinte comando adb para o tablet.

adb -s device_id shell settings put global policy_control immersive.full=*