Caméra ITS-in-a-Box

Android Camera Image Test Suite (ITS) fait partie d'Android Compatibility Test Suite (CTS) Verifier et comprend des tests qui vérifient le contenu de l'image. CTS Verifier prend en charge l'automatisation des tests ITS avec Camera ITS-in-a-box ; la prise en charge des tests manuels couvre tous les facteurs de forme des appareils Android.

ITS-in-a-box comprend les avantages suivants :

  • Automatisation. Aucune intervention humaine n'est nécessaire pendant le test.
  • Dépannage facile. La cohérence de l'environnement de test réduit les erreurs de configuration et augmente la reproductibilité.
  • Efficacité. La possibilité de réessayer pour une caméra/scène individuelle améliore l'efficacité de l'exécution des tests.

Commencer

ITS-in-a-box se compose d'une boîte en plastique découpée au laser à partir de dessins de conception assistée par ordinateur (CAO), d'une tablette graphique et d'un appareil sous test (DUT). Vous pouvez utiliser l'ITS-in-a-box à large champ de vision (WFoV), qui est capable de tester à la fois les caméras WFoV (FoV > 90 degrés) et RFoV (FoV < 90 degrés), ou le champ de vision régulier -view (RFoV) ITS-in-a-box.

Pour démarrer avec la caméra ITS-in-a-box :

  1. Achetez ou construisez un WFoV ou RFoV ITS-in-a-box.
  2. Configurez une tablette avec le logiciel Camera ITS.
  3. Exécutez des tests .
  4. Obtenir les résultats du DUT.

Configuration de la tablette

Cette section fournit des instructions étape par étape pour configurer une tablette à utiliser avec les tests Camera ITS situés dans le répertoire CameraITS . Ces instructions utilisent un Pixel C comme exemple de tablette. Pour plus d'informations sur la configuration requise pour la tablette et les recommandations, consultez Configuration requise pour la tablette .

Remarque : Les scripts Python ITS de la caméra définissent automatiquement les options suivantes sur la tablette :
Paramètres > Affichage > Veille > Après 30 minutes d'inactivité
Luminosité adaptative > OFF

  1. Chargez la tablette et allumez-la. Si vous êtes invité à créer un compte, ignorez-le (Camera ITS ne nécessite aucun compte associé à la tablette).
  2. Mettez à jour la tablette vers Android 7.0 ou supérieur. Android 6.x et les versions antérieures ne prennent pas en charge Camera ITS.
  3. Activer le mode développeur .
  4. Revenez aux paramètres et sélectionnez les options du développeur.
    Activer les options
    • Sur
    • Rester éveillé
    • Débogage USB (cela permet à l'hôte d'exécuter la tablette en mode débogage. Lorsque vous connectez la tablette à l'hôte pour la première fois, la tablette vous invite à autoriser le débogage USB ? Si la tablette n'affiche pas l'invite de débogage, déconnectez puis reconnectez le tablette.)
    Désactiver les options
    • Mises à jour automatiques du système
    • Vérifier les applications via USB
  5. Déterminez les ID du DUT et du graphique en exécutant $ adb devices pour répertorier les appareils disponibles. Pour déterminer device_id et chart_id , branchez et débranchez les appareils et observez les appareils qui se connectent et se déconnectent.
  6. Effectuez trois tests pour supprimer les conseils et les invites de l'utilisateur qui peuvent masquer les graphiques sur l'écran de la tablette.
    1. Placez la tablette face vers le haut sur une table (ne fixez pas la tablette au panneau arrière de la boîte).
    2. Exécutez la commande suivante :
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      Les scènes 2 et 3 nécessitent que la tablette affiche une image, de sorte que la tablette demande Autoriser Drive à accéder aux photos, aux médias et aux fichiers sur votre appareil ? . Effacez cette invite (et empêchez les futures invites) en appuyant sur Autoriser.
    3. Exécutez à nouveau la commande. La tablette demande Conserver une copie de ce fichier ? et suggère Google Drive. Effacez cette invite (et empêchez les futures invites) en appuyant sur l'icône Drive, puis sur Annuler pour le téléchargement vers le lecteur.
    4. Enfin, exécutez tools/run_all_tests.py et confirmez que les scènes changent automatiquement lorsque le script parcourt différentes scènes. Bien que la plupart des tests échouent (car la caméra n'est pas dirigée vers le graphique), vous pouvez vérifier que la tablette parcourt correctement les scènes sans afficher d'invites ou d'autres fenêtres contextuelles à l'écran.

Tests en cours

Avant d'exécuter l'ITS-in-a-box, assurez-vous que votre configuration de test inclut le matériel et les logiciels suivants :

  • Un (1) ITS dans une boîte
  • Une (1) tablette 10" haute résolution pour l'affichage des scènes, S/N : 5811000011
  • Un (1) DUT sur lequel l'application CTS Verifier 7.0_8+ est installée. Exemple DUT :
    • Un (1) Pixel NOF26W pour le test de la caméra arrière (0), S/N : FA6BM0305016. Pour installer l'application CTS Verifier, décompressez android-cts-verifier.zip puis exécutez
      adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
      

Exécution de scènes sur tablette

Pour exécuter les scènes 0 à 4, 6 et scene_change sur la caméra arrière :

cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0

Exemple:

Caméra 0 S/N : FA6BM0305016
Figure 1. Caméra 0 S/N : FA6BM0305016

Réessayer des scènes

Vous pouvez réessayer des scènes pour une seule caméra :

  • Pour réessayer des scènes sur une seule caméra :
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

Scène de course 5

La scène 5 nécessite une configuration spéciale avec un éclairage spécifique (pour plus de détails, reportez-vous à CameraITS.pdf dans CTS Verifier, que vous pouvez télécharger sur Compatibility Test Suite Downloads ). Vous devez exécuter la scène 5 séparément (en dehors de la boîte).

scène de caméra 5
Figure 2. Scène de caméra 5

Pour exécuter la scène 5 pour les caméras avant et arrière sur un seul appareil :

python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5

Obtenir des résultats

Vous pouvez afficher les résultats pendant le test et enregistrer les résultats terminés sous forme de rapport.

  • Voir les résultats. Pour enregistrer les résultats de l'ITS de la caméra sous forme de rapport :
    1. Appuyez sur Pass et enregistrez le rapport.
      rapport ITS caméra
      Figure 3. Rapport ITS de la caméra
    2. Extraire des rapports de l'appareil :
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Décompressez le fichier de rapport et affichez test_result.xml .
      rapports ITS de la caméra
      Figure 4. Rapports ITS de la caméra

Configuration requise pour la tablette

Les tablettes doivent avoir une taille d'affichage d'environ 10 pouces avec une résolution d'écran supérieure à 1920 x 1200 pixels. La valeur de brightness doit être définie dans config.yml en fonction du modèle de tablette. Le tableau ci-dessous répertorie les tablettes recommandées pour les tests ITS ainsi que les versions d'Android pour le DUT avec lesquelles les tablettes fonctionnent.

Dispositif Taille d'affichage
(pouces)
Taille d'affichage
(pixels)
Dimensions de la tablette
(pouces)
Affichage
luminosité
DUT pris en charge
SE
Tablette Xiaomi 5 11 2560 x 1600 10,03 × 6,55 × 0,27 192 Android 12+
Onglet Lenovo 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 × 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 Androïd 7+
Asus ZenPad 3 9.7 2048 x 1536 9,47 x 6,44 x 0,28 192 Androïd 7+
Huawei MediaPad m5 10.8 2560 x 1600 10,18 x 6,76 x 0,29 192 Androïd 7+
Pixel C 10.2 2560 x 1800 9,53 x 7,05 x 0,28 96 Androïd 7+
Sony Xpéria Z4 10.1 2560 x 1600 10 × 6,57 × 0,24 192 Androïd 7+

Foire aux questions (FAQ)

Q1 : Comment puis-je déterminer les bancs d'essai dont j'ai besoin pour mon appareil ?

La révision 1 RFoV ITS-in-a-box teste les caméras RFoV pour les tests de la scène 0 à la scène 4 dans le CameraITS/tests . RFoV est défini comme 60° < FoV < 90° . Pour les caméras FoV plus grandes, les lumières peuvent apparaître dans les images ou les graphiques peuvent couvrir une zone trop petite dans le FoV, affectant les résultats des tests.

La révision 2 du WFoV ITS-in-a-box teste les caméras WFoV pour les tests de la scène 0 à la scène 4 dans le CameraITS/tests . WFoV est défini comme FoV >= 90° . Il est fonctionnellement identique à la révision 1, mais plus grand. Le banc d'essai de révision 2 peut tester les caméras RFoV et WFoV sous Android 9 et supérieur.

La boîte de fusion de capteurs teste le décalage de synchronisation caméra/gyroscope et la synchronisation de trame des systèmes multi-caméras avec des tests dans scenes=sensor_fusion . Un décalage de synchronisation caméra/gyroscope inférieur à 1 ms est requis pour l'indicateur de fonction REALTIME et les applications VR/AR.

Les appareils multi-caméras peuvent être testés avec un seul appareil pour les tests ITS statiques et un appareil de fusion de capteurs si la caméra a l'indicateur de fonction REALTIME .

Un ensemble d'exemples de configurations est fourni dans le tableau ci-dessous.

Exemple FoV de la caméra TEMPS RÉEL? Appareils recommandés Remarques
1 75° Non Rév 1 Android 7.0 ou supérieur
2 75° Oui Rev 1 + fusion de capteur Android 9 ou supérieur
3 75° + 95° Oui Rev 2 + fusion de capteur Android 9 ou supérieur

Q2 : Comment désigner le banc d'essai utilisé ?

Pour désigner le bon banc d'essai, assurez-vous que le paramètre de distance du graphique est correct. Le banc d'essai rev1 (RFoV) a une distance de 31 cm et le banc rev2 (WFoV) a une distance de 22 cm. Par défaut, la distance du graphique est définie sur 31 cm.

Android 10 à Android 11

Pour identifier le banc de test correct dans Android 10 à 11, ajoutez l'indicateur dist sur la ligne de commande. La valeur par défaut de dist est 31 . Exécutez la commande suivante pour modifier le paramètre chart_distance .
python tools/run_all_tests.py ... chart=# dist=22

Android 12

Pour identifier le banc d'essai correct dans Android 12, vous pouvez modifier le fichier config.yml pour modifier le paramètre chart_distance .
edit config.yml
chart_distance: 31.0 → chart_distance: 22.0

Q3 : Comment contrôler la luminosité de la tablette ?

Par défaut, la luminosité de la tablette est réglée sur 96.

Pour modifier la luminosité sur les tablettes exécutant Android 7.0 à Android 9, exécutez :

edit tools/wake_up_screen.py
DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192

Pour modifier la luminosité sur les tablettes exécutant Android 10 à 11, la valeur peut être modifiée sur la ligne de commande en ajoutant l'indicateur de brightness :

python tools/run_all_tests.py device=# camera=# chart=# brightness=192

Pour modifier la luminosité sur les tablettes sous Android 12, exécutez :

edit config.yml
brightness: 96 → brightness: 192

Q4 : Comment déboguer un seul test ?

Les tests peuvent être exécutés individuellement à des fins de débogage, mais les résultats ne sont pas signalés à CtsVerifier.apk à moins que la scène entière ne soit exécutée.

Pour exécuter une scène individuelle sous Android 11 et versions antérieures :

  1. Chargez une scène en ajoutant le drapeau de scenes dans tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Appuyez sur Control+C pour arrêter les tests une fois que la scène est enregistrée comme chargée sur stdout .

    Si la bonne scène est déjà à l'écran, réveillez l'écran :

    python tools/wake_up_screen.py screen=#
    
  3. Exécutez un test individuel.

    python tests/scene#/test_*.py device=# camera=#

    Les tracés sont ensuite générés dans le répertoire local et stdout et stderr sont affichés à l'écran.

    Pour obtenir plus d'informations sur le débogage, ajoutez des instructions d' print au script. Pour augmenter la sortie de test pour le débogage, ajoutez l'indicateur debug=True .

    python tests/scene#/test_*.py device=# camera=# debug=True

Les résultats sont imprimés sur l'écran local et les images sont enregistrées dans le répertoire local au lieu du /tmp/tmp### généré lors de l'exécution de tools/run_all_tests.py .

Pour exécuter une scène individuelle dans Android 12 :

  1. Modifiez le fichier config.yml .

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. Exécutez le test individuel.

    python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
    

Les résultats sont imprimés dans le /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ triés par temps d'exécution.

Q5 : Pourquoi dois-je exécuter les tests qui échouent en tant que scène entière au lieu de réexécuter les tests individuellement ?

Les tests peuvent être exécutés individuellement à des fins de débogage, mais les résultats ne sont pas signalés à CtsVerifier.apk à moins que la scène entière ne soit exécutée.

Camera ITS garantit que les applications tierces disposent d'une interface de caméra compatible. Semblable à un test unitaire , chaque test met l'accent sur une seule spécification de la caméra. Pour détecter les comportements non fiables, ces tests sont censés passer en groupe pour une scène entière. Par exemple, bien qu'un seul test non fiable puisse réussir une rediffusion d'une scène entière, il est difficile pour plusieurs tests non fiables de réussir.

À titre d'exemple extrême, considérons le cas où il y a 10 tests dans une scène qui ont chacun une probabilité de 50 % de renvoyer PASS . En exécutant chaque test individuellement, il y a de fortes chances qu'un opérateur réussisse l'ITS de la caméra. Cependant, si les tests sont exécutés dans l'ensemble en tant que scène, il n'y a que 0,1 % de chances que la scène réussisse.

Q6 : Comment exécuter une seule scène ou réorganiser les scènes d'exécution ?

Par défaut, le script tools/run_all_tests.py exécute toutes les scènes dans l'ordre. Cependant, les scènes peuvent être exécutées individuellement ou dans un ordre spécifié et être signalées à CtsVerifier.apk .

Pour exécuter une scène individuelle (par exemple, la scène 2) ou exécuter plusieurs scènes dans un ordre spécifique sous Android 11 ou version antérieure :

python tools/run_all_tests.py device=# camera=# chart=# scenes=2
python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2

Pour exécuter une scène individuelle ou exécuter plusieurs scènes dans un ordre spécifique dans Android 12 :

python tools/run_all_tests.py scenes=2
python tools/run_all_tests.py scenes=3,2

Les paramètres supplémentaires sont définis dans le fichier config.yml .

Q7 : Un certain nombre de tests de la scène 1 échouent avec la configuration de la tablette, mais réussissent avec un tableau papier. Qu'est-ce qui ne va pas?

Assurez-vous que la tablette et l'environnement de test répondent aux spécifications suivantes.

Spécifications de la tablette

Assurez-vous que la tablette répond aux spécifications suivantes :

  • Taille d'affichage (pouces) : 10 pouces
  • Taille d'affichage (pixels) : supérieure à 1920 x 1200 pixels

Pour plus de détails, consultez Configuration requise pour la tablette .

Luminosité de la tablette

Les tests peuvent ne pas obtenir de résultats corrects si la luminosité de l'écran de la tablette est trop faible.

Pour plus de détails, consultez Comment contrôler la luminosité de la tablette ?

Niveau d'éclairage de la boîte (nécessite un luxmètre)

Assurez-vous que la valeur en lux cible à l'ouverture de la tablette est comprise entre 100 et 300.

Si le niveau de lux est trop élevé, scene1/test_param_flash_mode.py renvoie FAIL . Si le niveau de lux est trop bas, plusieurs tests échouent.

Q8 : Comment déboguer les tests de fusion de capteurs ?

  1. Assurez-vous que vous êtes dans un groupe de dialout .

    groups | egrep ‘dialout'
  2. Assurez-vous que le contrôleur de fusion de capteur est connecté en déterminant si Microchip Technology est connecté au port USB.

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. Exécutez le test plusieurs fois pour obtenir une distribution des tentatives de test avec les commandes suivantes.

    Sous Android 11 ou version antérieure :

    python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
    

    Sous Android 12 :

    python tools/run_sensor_fusion_box.py num_runs=10
    

    Les paramètres supplémentaires sont définis dans le fichier config.yml .

    Les sorties d'exécution se trouvent dans le dossier /tmp/tmp### créé sous les dossiers sensor_fusion_# , où # est le numéro d'exécution. Les raisons courantes d'échec sont les suivantes :

    1. Le téléphone n'est pas centré correctement.
    2. Pas assez de fonctionnalités sont trouvées dans l'image (souvent un problème de FoV ou d'éclairage).
    3. Le FAIL renvoyé est valide et le décalage temporel entre la caméra et le gyroscope doit être corrigé.

Q9 : Quelles informations dois-je inclure lorsque je signale un bogue de test ?

Lorsque vous signalez un bogue de test, incluez les fichiers et les images générés pour le test.

  1. Si vous avez exécuté le test via tools/run_all_tests.py , attachez un /tmp/ compressé au bogue.
  2. Si vous avez exécuté le test seul, joignez toutes les sorties d'écran et les images générées au bogue.

Inclure également un rapport de bogue. Après l'échec du test en question, utilisez la commande suivante pour générer un rapport de bogue et joindre le fichier zip généré au bogue.

adb -s device_id bugreport

Q10 : Comment supprimer les barres de navigation sur les tablettes 16:10 qui masquent la scène ?

Pour les tablettes au format 16:10 (ou supérieur), la barre de navigation peut masquer une partie de la scène. Pour masquer la barre de navigation, utilisez la commande adb suivante pour la tablette.

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