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/une 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 dispositif 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 -view (RFoV) ITS-in-a-box.

Pour commencer avec la Camera ITS-in-a-box :

  1. Acheter ou construire une WFOV ou RFoV ITS-in-a-box.
  2. Configurer une tablette avec l' appareil photo de son logiciel.
  3. Exécuter des tests .
  4. Obtenez des résultats de la sous test.

Configuration de la tablette

Cette section fournit des instructions étape par étape pour la mise en place d' une tablette pour une utilisation avec l' appareil photo ses tests situés dans le CameraITS répertoire. Ces instructions utilisent un Pixel C comme exemple de tablette. Pour plus d' informations sur les exigences de la tablette et des recommandations, voir exigences Tablet .

Remarque: L'appareil photo SES scripts Python défini automatiquement les options suivantes sur la tablette pour vous:
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 inférieures ne prennent pas en charge Camera ITS.
  3. Activer le mode développeur .
  4. Retour aux réglages et sélectionnez Options du développeur.
    Activer les options
    • Au
    • Rester éveillé
    • Débogage USB (Cela permet à l'hôte d'exécuter la tablette en mode débogage. Lorsque vous vous connectez la tablette à l'hôte pour la première fois, les instructions de la tablette Autoriser le débogage USB? Si la tablette n'affiche pas le débogage rapide, débranchez puis rebranchez le tablette.)
    Désactiver les options
    • Mises à jour automatiques du système
    • Vérifier les applications via USB
  5. Déterminer et les ID de sous test graphique en exécutant $ adb devices à la liste des appareils disponibles. Pour déterminer device_id et chart_id , fiche et dispositifs débrancher et observer les périphériques qui se connectent et se déconnecter.
  6. Effectuez trois tests pour supprimer les conseils et les invites 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
      
      Scènes 2 et 3 nécessitent la tablette pour afficher une image, de sorte que les tablettes invites permettent lecteur de photos accès, les médias et les fichiers sur votre appareil? . Effacer cette invite (et empêcher les futures invites) en appuyant sur Autoriser.
    3. Exécutez à nouveau la commande. Les tablettes invites Gardez une copie de ce fichier? et suggère Google Drive. Effacer ce message (et prévenir de futures invites) en appuyant sur l'icône du disque puis Annuler pour le téléchargement à conduire.
    4. Enfin, exécutez les tools/run_all_tests.py et confirmer que les scènes changent automatiquement les cycles de script à travers 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.

Exécuter des tests

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

  • Un (1) ITS-in-a-box
  • Une (1) tablette 10" haute résolution pour l'affichage de scènes, S/N : 5811000011
  • Un (1) DUT sur lequel l'application CTS Verifier 7.0_8+ est installée. Exemple de 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écuter des 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 les scènes

Vous pouvez réessayer les 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

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 à Compatibility Test Suite Téléchargements ). 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 la 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 les tests et enregistrer les résultats terminés sous forme de rapport.

  • Voir les résultats. Pour enregistrer les résultats de Camera ITS sous forme de rapport :
    1. Press Pass et enregistrer le rapport.
      rapport ITS de la caméra
      Figure 3. Caméra son rapport
    2. Rapports de tirer de l'appareil:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. Décompressez le fichier du rapport et vue test_result.xml .
      rapports ITS de la caméra
      Figure 4. Caméra ses rapports

Exigences de 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 brightness de valeur doit être définie dans config.yml selon le modèle de la tablette. Le tableau ci-dessous répertorie les tablettes recommandées pour les tests ITS ainsi que les versions 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
Système d'exploitation
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+

Foire aux questions (FAQ)

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

Les RFoV ITS-in-a-box révision 1 caméras RFoV pour les tests scène 0 à 4 tests scène dans le CameraITS/tests répertoire. 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.

Les WFOV SES-in-a-box révision 2 essais caméras pour WFOV scène 0 à 4 tests scène dans le CameraITS/tests répertoire. 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 à la fois les caméras RFoV et WFoV sous Android 9 et versions ultérieures.

La zone de fusion de capteur teste la caméra / synchronisation du gyroscope de décalage et de synchronisation de trame des systèmes multi-caméras avec des tests en scenes=sensor_fusion . Un calendrier caméra / gyroscope décalage de moins de 1 ms est requise pour l' REALTIME caractéristique drapeau et applications VR / AR.

Appareils multi-caméras peuvent être testés avec une seule plate - forme pour les essais statiques et SES une plate - forme de fusion capteur si la caméra a la REALTIME fonction drapeau.

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 Rév 1 + fusion de capteurs Android 9 ou supérieur
3 75° + 95° Oui Rév 2 + fusion de capteurs Android 9 ou supérieur

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

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

Android 10 à Android 11

Pour identifier le banc d'essai correct dans Android 10 à 11 ajouter le dist drapeau à la ligne de commande. La valeur par défaut pour dist est 31 . Exécutez la commande suivante pour changer le chart_distance paramètre.
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 chart_distance paramètre.
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 définie sur 96.

Pour modifier la luminosité sur les tablettes fonctionnant sous 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 les applications 10 à 11, la valeur peut être modifiée à la ligne de commande en ajoutant la brightness drapeau:

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

Pour modifier la luminosité sur les tablettes fonctionnant 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 à CtsVerifier.apk à moins que toute la scène est exécuté.

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

  1. Charger une scène en ajoutant les scenes drapeau dans les tools/run_all_tests.py :
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. Appuyez sur Ctrl + C pour les tests halt après la scène est enregistrée comme chargée à la 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 parcelles sont ensuite générés dans le répertoire local et stdout et stderr sont imprimés à l'écran.

    Pour obtenir plus d' informations pour le débogage, ajoutez print déclarations au script. Pour augmenter la sortie de test pour le débogage, ajoutez le debug=True drapeau.

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

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

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

  1. Modifiez le config.yml fichier.

    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/ répertoire triés par le temps d'exécution.

Q5 : Pourquoi dois-je exécuter les tests ayant échoué 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 des résultats ne sont pas signalés à CtsVerifier.apk moins la scène entière est 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 dans l'appareil photo. Pour détecter les comportements peu fiables, ces tests devraient réussir 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.

A titre d'exemple extrême, considérons le cas où il y a 10 tests dans une scène que chacun a une probabilité de 50% de retour PASS . En exécutant chaque test individuellement, il y a de fortes chances qu'un opérateur puisse faire passer la caméra avec Camera ITS. Cependant, si les tests sont exécutés globalement en tant que scène, il n'y a que 0,1 % de chance 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 précis et être signalés à 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 config.yml fichier.

Q7 : un certain nombre de tests de la scène 1 échouent avec la configuration de la tablette mais réussissent avec une carte 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 de l'écran (pouces): 10 pouces
  • Taille d'affichage (pixels) : supérieure à 1920 x 1200 pixels

Pour plus de détails, voir les exigences Tablet .

Luminosité de la tablette

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

Pour plus de détails, voir 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 de 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 retours 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 dialout groupe.

    groups | egrep ‘dialout'
  2. Assurez-vous que le contrôleur de fusion du capteur est connecté en déterminant si la technologie Microchip est connectée 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 inférieur :

    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 config.yml fichier.

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

    1. Le téléphone n'est pas bien centré.
    2. L'image ne contient pas suffisamment de fonctionnalités (souvent un problème de FoV ou d'éclairage).
    3. Le retourné FAIL est valide, et le décalage de synchronisation entre la caméra et le gyroscope doit être corrigée.

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

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

  1. Si vous avez exécuté le test par le biais des tools/run_all_tests.py , joindre un zip /tmp/ répertoire du bogue.
  2. Si vous avez exécuté le test seul, attachez toutes les sorties d'écran et les images générées au bogue.

Incluez é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 attachez 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=*