Suite de tests
Pour qu'un test fasse partie de VTS, il doit disposer du paramètre suivant dans Android.bp
.
test_suites: ["vts"],
De plus, l'ajout du test à la suite general-tests
lui permet d'être
d'une suite de mappage de test utilisée dans les vérifications avant envoi.
tester la configuration
Dans la plupart des cas, la configuration de test, qui est un fichier XML utilisé par The Trade La fédération pour exécuter un test VTS est automatiquement générées lors de la compilation. Vous pouvez toutefois personnaliser la configuration des tests.
Créer un fichier de configuration de test personnalisé
Créer un fichier XML de test à partir de zéro peut s'avérer compliqué, car cela implique le fonctionnement de l'outil de test, ainsi que la différence entre chaque lanceur de test. Le fichier de configuration de test généré automatiquement est conçu pour ce processus.
Si vous devez personnaliser le fichier XML de test, vous pouvez utiliser le fichier généré automatiquement comme point de départ.
Pour localiser le fichier de configuration de test généré automatiquement, exécutez d'abord la commande make
pour créer la configuration, comme illustré ci-dessous.
$ m VtsHalUsbV1_1TargetTest
Dans votre répertoire de compilation, vous pouvez rechercher le fichier de configuration en fonction du nom du module, comme illustré ci-dessous.
$ find out/ -name VtsHalUsbV1_1TargetTest.config
Il peut y avoir plusieurs copies du fichier et vous pouvez utiliser n'importe laquelle d'entre elles.
Copiez le fichier .config
dans le répertoire où se trouve le fichier Android.bp
.
Si le fichier Android.bp
ne contient qu'un seul module de test, vous pouvez
remplacez le nom du fichier XML par AndroidTest.xml
. Le système de compilation s'exécute automatiquement
l'utilise comme fichier de configuration du module de test. Sinon,
Ajoutez un attribut test_config
au module, comme indiqué dans
dans l'exemple ci-dessous.
test_config: "VtsHalUsbV1_1TargetTest.xml",
Vous disposez maintenant d'un fichier de configuration de test à utiliser et à implémenter. la personnalisation.
Forcer l'exécution du test avec la racine adb
La plupart des tests VTS nécessitent un privilège racine pour s'exécuter. Si la configuration de test
est généré automatiquement, vous pouvez ajouter l'attribut suivant à Android.bp
.
require_root: true,
Si le fichier de configuration de test est personnalisé, ajoutez au fichier XML de test.
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
Arrêter le framework pendant le test
De nombreux tests VTS ne nécessitent pas l'exécution du framework Android. Exécuter le test avec le framework arrêté permet de l'exécuter de manière stable, sans être affecté par les erreurs d'appareil. Si la configuration de test
est généré automatiquement, vous pouvez ajouter l'attribut suivant à Android.bp
.
disable_framework: true,
Si le fichier de configuration de test est personnalisé, ajoutez ce qui suit au fichier XML de test.
<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>
Ajouter des arguments de test supplémentaires
L'exécution de certains tests gtest peut prendre plus de temps. Dans ce cas, vous pouvez ajouter des options de testeur de course dans le fichier XML.
Par exemple, le paramètre native-test-timeout
dans l'exemple
permet d'exécuter le test avec un délai d'inactivité de 3 minutes, au lieu de
la valeur par défaut est de 1 minute.
<test class="com.android.tradefed.testtype.GTest" >
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNfcV1_0TargetTest" />
<option name="native-test-timeout" value="180000"/>
</test>
Exiger un niveau d'API minimal
Certains tests VTS ne peuvent s'exécuter que sur des appareils avec un niveau d'API minimal. Si le fichier de configuration de test est généré automatiquement, vous pouvez ajouter l'attribut suivant à Android.bp
.
min_shipping_api_level: 29,
ou
vsr_min_shipping_api_level: 202404,
Si le fichier de configuration de test est personnalisé, ajoutez le dans le fichier XML de test.
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="min-api-level" value="29" />
</object>
ou
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="vsr-min-api-level" value="202404" />
</object>
Propriétés au niveau de l'API
Android 12 définit les propriétés ro.board.first_api_level
et ro.board.api_level
pour afficher le niveau d'API des images du fournisseur sur ces appareils. En combinant ces propriétés avec ro.product.first_api_level
, les suites de tests choisissent les scénarios de test appropriés pour les appareils.
Android 13 définit ro.vendor.api_level
, qui est défini automatiquement en calculant le niveau d'API du fournisseur requis à l'aide des propriétés ro.product.first_api_level
, ro.board.first_api_level
et ro.board.api_level
.
Pour en savoir plus, consultez la section Niveau d'API du fournisseur.
ro.board.first_api_level
La propriété ro.board.first_api_level
correspond au niveau d'API lorsque les images du fournisseur
pour un SoC qualifié pour
le gel des fournisseurs sont les premiers
publiée avec cette propriété. Cela ne dépend pas de l'API de lancement de l'appareil
mais ne dépend que du premier niveau d'API du SoC qui définit cette valeur. La
est permanente pendant toute la durée de vie du SoC.
Pour définir ro.board.first_api_level
, les fabricants d'appareils peuvent définir BOARD_SHIPPING_API_LEVEL
dans leur fichier device.mk
, comme indiqué dans l'exemple suivant :
# BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
BOARD_SHIPPING_API_LEVEL := 23
Il définira automatiquement la propriété ro.board.first_api_level pour
vendor/build.prop
sur l'appareil. La propriété est définie par le processus init
du fournisseur.
ro.board.api_level
La propriété ro.board.api_level
correspond au niveau d'API du fournisseur actuel des images du fournisseur au format YYYYMM
dans lequel l'API du fournisseur a été figée. Il est
défini automatiquement par le système de compilation.
ro.vendor.api_level
La propriété ro.vendor.api_level
a été introduite dans Android 13 pour indiquer le niveau d'API que les images du fournisseur doivent prendre en charge. Cette valeur est automatiquement définie sur ro.product.first_api_level
ou ro.board.api_level
si ro.board.first_api_level
est présent et que ro.board.api_level
est défini sur un niveau d'API antérieur à ro.product.first_api_level
. La version sera remplacée par le niveau d'API du fournisseur correspondant si elle est définie sur la version à partir de ro.product.first_api_level
, qui est supérieure ou égale à 35
. Les tests d'implémentation du fournisseur qui nécessitent une mise à niveau de l'image du fournisseur peuvent être exclus des exigences du fournisseur pour le SoC en faisant référence à cette propriété.
Processus de segmentation à l'aide de VTS
Pour Android version 10 ou ultérieure, vous pouvez effectuer le processus de segmentation sur plusieurs appareils lors des tests avec les forfaits VTS et CTS sur GSI en suivant en suivant les instructions ci-dessous.
run vts --shard-count <number of devices> -s <device serial> ...
Cette commande divise le plan VTS en fragments et les exécute sur plusieurs appareils.
run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...
Cette commande divise le plan CTS-on-GSI en fragments et les exécute sur plusieurs appareils.