Cette page liste tous les tests disponibles pour évaluer la couche d'abstraction matérielle (HAL) de l'appareil photo Android. Il est destiné aux fabricants d'équipements d'origine (OEM) et aux fournisseurs de processeurs d'applications (PA) afin qu'ils puissent garantir une implémentation correcte du HAL de la caméra avec un minimum de défauts. Bien qu'il s'agisse d'un ajout volontaire à la suite de tests de compatibilité Android (CTS), il augmente considérablement la couverture des tests de l'appareil photo et identifiera certainement les bugs potentiels.
En réussissant ces tests, les OEM vérifient qu'ils ont correctement intégré les interfaces de la couche d'abstraction matérielle de l'appareil photo Android (HAL) 3. Lorsqu'elle est conforme à tous les éléments de la checklist, une implémentation d'appareil peut être considérée comme complète par rapport aux interfaces HAL de l'appareil photo Android. Cela permettra à un appareil de prendre correctement en charge le package
android.hardware.camera2
sur lequel les applications d'appareil photo sont basées.
Spécifications HAL3 de la caméra
La spécification Android Camera HAL3 est la source d'informations officielle sur les exigences auxquelles les appareils doivent répondre. Cette page fournit un récapitulatif de tous les tests pouvant être utilisés comme checklist. Les implémentateurs du HAL de la caméra (par exemple, les fournisseurs de points d'accès) doivent examiner la spécification HAL3 de la caméra ligne par ligne et s'assurer que leurs appareils y sont conformes.
La spécification HAL actuelle est définie dans ces fichiers dans le kit de développement de plate-forme Android (PDK) générique Android 5.0 et versions ultérieures :
- Interface et spécifications de la HAL 3.x de la caméra:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Spécifications des métadonnées de la HAL de l'appareil photo 3.x:
system/media/camera/docs/docs.html
- Interface et spécifications du format de pixel HAL:
system/core/libsystem/include/system/graphics.h
Types de tests pour la caméra
Voici les principaux types de tests disponibles pour la dernière caméra Android, ainsi que des références aux instructions associées ci-dessous:
- Suite de test de fournisseur (VTS):tests qui testent directement l'interface HAL de l'appareil photo
- Compatibility Test Suite (CTS) : tests Android standard et automatisés permettant de vérifier la compatibilité des appareils. Pour en savoir plus, consultez la suite de tests de compatibilité et la présentation de la Trade Federation.
- Image Test Suite (ITS):exécutez manuellement des tests pour vous assurer de la validité des images. Pour en savoir plus, consultez la section ITS de l'appareil photo.
- Tests manuels de TestingCam:exécutez-les à partir de la source dans
pdk/apps/TestingCamera/
. - Tests manuels de TestingCam2.1:exécutez-les à partir de la source dans
pdk/apps/TestingCamera2/
.
Tous ces types de tests sont décrits en détail ci-dessous. Ces tests sont présentés dans l'ordre chronologique dans lequel les OEM doivent les exécuter.
Par exemple, si un appareil échoue aux tests natifs, il échouera certainement aux tests CTS (Compatibility Test Suite) ultérieurs. Si un appareil échoue au CTS, il n'est guère utile de passer à la suite de tests d'image (ITS). Nous vous recommandons de résoudre les échecs de chaque type de test avant de passer à l'ensemble suivant.
Tests de la suite de test de fournisseur (VTS)
La suite de test de fournisseur (VTS, Vendor Test Suite) Android est une suite de test qui fonctionne au niveau de l'interface HIDL. Pour en savoir plus sur l'utilisation de la suite de test de fournisseur, consultez la section Suite de test de fournisseur.
Tests de la suite de tests de compatibilité (CTS)
Les tests CTS de la suite de test de compatibilité Android se concentrent sur la compatibilité des appareils. Pour savoir comment configurer un environnement de test, consultez Configurer CTS.
Le chemin d'accès de départ pour les tests CTS de l'appareil photo est le suivant: platform/cts
.
Lorsque vous exécutez CTS de la caméra pour des appareils compatibles avec les caméras externes (telles que les webcams USB), vous devez brancher un appareil lors de l'exécution de CTS. Sinon, les tests échoueront automatiquement. Exemples de caméras externes: Logitech HD Pro Webcam C920 et Microsoft LifeCam HD-3000.
Consultez l'introduction de CTS et ses sous-pages pour obtenir des instructions générales sur l'exécution de CTS.
Tests CTS pour l'API android.hardware.Camera
Vous trouverez ces tests de l'appareil photo sous cts/tests/tests/
:
hardware/src/android/hardware/cts/CameraTest.java
hardware/src/android/hardware/cts/CameraGLTest.java
hardware/src/android/hardware/cts/Camera_SizeTest.java
permission/src/android/permission/cts/CameraPermissionTest.java
Tests CTS pour l'API android.hardware.camera2
Vous trouverez ces tests de l'appareil photo sous cts/tests/tests/
:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
Tests de l'appareil photo du vérificateur CTS
Vous trouverez ces tests de l'appareil photo sous :
cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
Tests de la suite de tests d'image (ITS)
Les tests de la suite de tests d'images de l'appareil photo (ITS, Camera Image Test Suite) se concentrent sur l'exactitude des images. Pour effectuer les tests, exécutez les scripts Python sur une station de travail avec l'appareil Android connecté via USB.
L'infrastructure et les tests ITS de la caméra se trouvent dans le répertoire
cts/apps/CameraITS
.
Chaque test se trouve dans un sous-répertoire tests/scene#
.
Pour en savoir plus sur la configuration et l'exécution des tests, consultez Caméra ITS.
Pour obtenir une description des scènes et des tests, consultez Tests ITS de la caméra.
Les tests ITS réussissent ou échouent. Tous les tests obligatoires de chaque dossier de scène doivent réussir.
Les tests qui ne sont pas obligatoires peuvent échouer et être considérés comme réussis dans CtsVerifier
.
Les tests ITS testent des scénarios qui ne sont pas testés dans CTS et constituent un élément important du plan de test HAL 3.2.
Tests du Media Framework
Réussir tous les tests multimédias liés à l'appareil photo dans MediaFrameworkTest. Veuillez noter que ces tests nécessitent que le fichier mediaframeworktest.apk soit installé sur l'appareil Android. Vous devez make mediaframeworktest
, puis utiliser adb pour installer le fichier .apk obtenu. Des exemples de commandes sont fournis ci-dessous.
Voici le chemin de départ pour les tests du framework multimédia lié à l'appareil photo :
platform/frameworks/base
Vous trouverez le code source des tests ici :
frameworks/base/media/tests/MediaFrameworkTest
Pour configurer ces tests:
make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk
où la variable name représente le répertoire contenant le produit du fournisseur.
Recherchez tous les tests dans le répertoire suivant ou ses sous-répertoires:
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
Chaque sous-répertoire représente une classe de tests:
functional/
integration/
performance/
power/
stress/
unit/
Exécuter des tests Media Framework
Pour afficher tous les tests disponibles :
adb shell pm list instrumentation
Vous obtiendrez alors des résultats semblables à ceux-ci:
instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner (target=com.android.mediaframeworktest) instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner (target=com.android.mediaframeworktest) instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner (target=com.android.mediaframeworktest) instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner (target=com.android.mediaframeworktest)
Identifiez et extrayez le composant (entre instrumentation:
et (target=com.android.mediaframeworktest)
) de chaque ligne de test.
Le composant est composé du nom du package cible (com.android.mediaframeworktest
) et du nom du lanceur de test (MediaFramework
).
Exemple :
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner com.android.mediaframeworktest/.MediaRecorderStressTestRunner com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
Vous pouvez ensuite transmettre chaque composant à adb shell am instrument
comme suit:
adb shell am instrument -w component.name
Où component.name
correspond à la valeur extraite ci-dessus. Exemple :
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Notez que, bien que le chemin de classe soit le package Java + le nom de la classe, le package d'instrumentation n'est pas nécessairement identique au package Java. Assurez-vous d'utiliser le package AndroidManifest.xml lorsque vous concaténez le nom du composant, et non le package Java dans lequel réside la classe du lanceur de test.
Pour exécuter une seule classe de tests, transmettez l'argument -e de la classe
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Pour n'exécuter qu'une seule méthode dans une classe de test, ajoutez un signe dièse (#) et le nom de la méthode (dans ce cas, testConnectPro
) au nom de la classe, comme suit:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Tests fonctionnels des paramètres multimédias
Voici un exemple d'exécution d'un test fonctionnel. Il consiste à vérifier les fonctionnalités de base de différentes combinaisons de paramètres de l'appareil photo. (par exemple, flash, exposition, balance des blancs, scène, taille de l'image et balise géographique)
Exécutez la commande de test:
adb shell am instrument -w -r -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner
Tests d'intégration de contenu multimédia
Voici un exemple d'exécution d'un test d'intégration, dans ce cas mediaframeworktest/integration/CameraBinderTest.java et mediaframeworktest/CameraStressTestRunner.java:
adb shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'
Si l'opération réussit, le résultat ressemble à ceci:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Tests de performances multimédias
Ce test de mémoire d'aperçu ouvre et libère l'aperçu de l'appareil photo 200 fois. À chaque 20 itérations, l'instantané du serveur multimédia ps sera enregistré et comparera l'utilisation de la mémoire différente après 200 itérations. Le test échouera si la différence est supérieure à 150 km.
Exécutez la commande de test:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
Pour obtenir une sortie plus détaillée, consultez :
/sdcard/mediaMemOutput.txt
Tests unitaires multimédias
Les commandes permettant d'exécuter des tests unitaires sont toutes similaires. Par exemple, pour CameraMetadataTest.java, la commande est la suivante:
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
Tests de contrainte sur les médias
Ce test vise à solliciter la capture d'images et l'enregistrement vidéo de l'appareil photo.
Exécutez la commande de test:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
Tous les tests doivent réussir.
Tests manuels de TestingCam
L'application TestingCam doit être exécutée manuellement en effectuant les vérifications suivantes.
La source de TestingCam est disponible ici: pdk/apps/TestingCamera/
.
Mise au point infinie avec inclinaison de la caméra
Lancez TestingCam, activez l'aperçu et assurez-vous que le mode autofocus est défini sur "infini". À l'aide du bouton Prendre une photo, prenez des photos d'objets éloignés (à au moins 10 m) en orientant la caméra horizontalement, vers le haut (proche de la verticale) et vers le bas (proche de la verticale). Par exemple, la photo vers le haut peut représenter les feuilles/branches hautes d'un arbre vues d'en dessous, et la photo vers le bas peut représenter la rue vue depuis le toit d'un bâtiment. Dans tous les cas, le sujet éloigné doit être net et net. Enregistrez et affichez les prises de vue dans la vue Galerie afin de pouvoir zoomer et inspecter plus facilement la netteté.
Notez que pour qu'une caméra équipée d'un actionneur VCM réussisse ce test, elle nécessitera soit un système de contrôle de l'AF en boucle fermée, soit une sorte de correction logicielle basée sur l'utilisation de données d'accéléromètre pour déterminer l'orientation de la caméra. Un calibrage fiable en usine de la position infinie de l'objectif est également nécessaire.
Tests manuelsCam2
L'application TestingCam2 doit être exécutée manuellement, avec les vérifications suivantes. La source de TestingCam2 est disponible ici: pdk/apps/TestingCamera2/
.
Capture au format JPEG
Lancez TestingCam2, puis appuyez sur le bouton JPEG. L'image qui s'affiche à droite de l'image du viseur doit être identique à celle du viseur, y compris en termes d'orientation.