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 :
- Achetez ou construisez un WFoV ou RFoV ITS-in-a-box.
- Configurez une tablette avec le logiciel Camera ITS.
- Exécutez des tests .
- Obtenir les résultats du DUT.
Configurer 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
- 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).
- 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.
- Activer le mode développeur .
- 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
- Déterminez les ID du DUT et du graphique en exécutant
$ adb devices
pour répertorier les appareils disponibles. Pour déterminerdevice_id
etchart_id
, branchez et débranchez les appareils et observez les appareils qui se connectent et se déconnectent. - Effectuez trois tests pour supprimer les conseils et les invites de l'utilisateur qui peuvent masquer les graphiques sur l'écran de la tablette.
- Placez la tablette face vers le haut sur une table (ne fixez pas la tablette au panneau arrière de la boîte).
- 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. - 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.
- 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.
Exécuter des tests
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écutezadb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
- 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
Exécutez 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:

Réessayer les 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
Exécuter la scène 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).

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 :
- Appuyez sur Pass et enregistrez le rapport.
Figure 3. Rapport ITS de la caméra - Extraire des rapports de l'appareil :
adb -s FA6BM0305016 pull /sdcard/verifierReports
- Décompressez le fichier de rapport et affichez
test_result.xml
.
Figure 4. Rapports ITS de la caméra
- Appuyez sur Pass et enregistrez le rapport.
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 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.
Appareil | Taille d'affichage (pouces) | Taille d'affichage (pixels) | Dimensions de la tablette (pouces) | Afficher luminosité | Afficher morceaux | Prise en charge DUT OS |
---|---|---|---|---|---|---|
Samsung Galaxy Tab A8 | 10.5 | 1920 x 1200 | 9,72 x 6,37 x 0,27 | 192 | 8 | Android 13+ |
Xiaomi Bloc 5 | 11 | 2560 x 1600 | 10,03 × 6,55 × 0,27 | 1024 | 11 | Android 12+ |
Lenovo Onglet 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 | Androïd 7+ |
Asus Zen Pad 3 | 9.7 | 2048 x 1536 | 9,47 x 6,44 x 0,28 | 192 | 8 | Androïd 7+ |
Huawei MediaPad m5 | 10.8 | 2560 x 1600 | 10,18 x 6,76 x 0,29 | 192 | 8 | Androïd 7+ |
Google Pixel C | 10.2 | 2560 x 1800 | 9,53 x 7,05 x 0,28 | 96 | 8 | Androïd 7+ |
Sony Xpéria Z4 | 10.1 | 2560 x 1600 | 10 × 6,57 × 0,24 | 192 | 8 | Androïd 7+ |
Questions fréquemment posées
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 répertoire 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 répertoire 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
.
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 | Rev 1 ou 2 | Android 7.0 ou supérieur |
2 | 75° | Oui | Rev 1 ou 2 + fusion 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'indicateurdist
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ètrechart_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 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 :
- Chargez une scène en ajoutant le drapeau
scenes
danstools/run_all_tests.py
:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
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=#
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
etstderr
sont affichés à l'écran.Pour obtenir plus d'informations sur le débogage, ajoutez des instructions
print
au script. Pour augmenter la sortie de test pour le débogage, ajoutez l'indicateurdebug=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 répertoire /tmp/tmp###
généré lors de l'exécution tools/run_all_tests.py
.
Pour exécuter une scène individuelle dans Android 12 :
Modifiez le fichier
config.yml
.edit config.yml camera: <camera-id> → camera: 0 scene: <scene-name> → scene: scene1_1
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 répertoire /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 ?
Assurez-vous que vous êtes dans un groupe
dialout
.groups | egrep ‘dialout'
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. …
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 dossierssensor_fusion_#
, où#
est le numéro d'exécution. Les raisons courantes d'échec sont les suivantes :- Le téléphone n'est pas centré correctement.
- Pas assez de fonctionnalités sont trouvées dans l'image (souvent un problème de FoV ou d'éclairage).
- 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.
- Si vous avez exécuté le test via
tools/run_all_tests.py
, attachez un répertoire/tmp/
compressé au bogue. - 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 puis-je exécuter une scène de test sensor_fusion avec une caméra dont la distance de mise au point minimale crée des images floues à une distance de 25 cm ?
Si votre appareil photo ne peut pas faire la mise au point à une distance de 25 cm, retirez le panneau de montage de la carte du boîtier de fusion du capteur. Placez le graphique à une distance à laquelle le DUT peut se concentrer et remplacez chart_distance
dans config.yml
par la distance mesurée entre le DUT et le graphique. La figure 5 montre un exemple de la façon de mesurer la distance de la carte dans cette situation.

edit config.yml chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART
Q11 : Comment puis-je exécuter des scènes de test de tablette pour un appareil photo avec une distance de mise au point minimale qui crée des images floues à une distance de 31 cm ?
Si votre caméra ne peut pas produire des images suffisamment nettes pour tester à 31 cm (la profondeur du banc d'essai RFoV), montez votre caméra devant le banc à une distance permettant à la scène du graphique de remplir environ 60 % du champ de la caméra de vue (FoV) avec des images plus nettes. Cette distance peut être inférieure à la distance minimale de mise au point de la caméra. Laissez le chart_distance
dans config.yml
à 31 cm. La mise à l'échelle du graphique sur la tablette est déterminée par le FoV de la caméra, comme indiqué dans le tableau suivant :
Champ de vision de la caméra | Facteur d'échelle du graphique |
---|---|
60 > FoV > 40 | 0,67x |
40 > FoV > 25 | 0,5x |
FoV < 25 | 0,33x |
Q12 : Avec l'API logique multi-caméras, quels tests sont exécutés sur quelles caméras ?
Si votre caméra utilise REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
, tous les tests ITS pris en charge sont exécutés sur la caméra logique de niveau supérieur. Un sous-ensemble des tests ITS est exécuté sur les sous-caméras physiques, et ces tests sont répertoriés dans tools/run_all_tests.py
sous la constante SUB_CAMERA_TESTS
.