Tester la segmentation

Lorsque le corpus de test est volumineux ou que le temps d'exécution devient long, nous proposons Possibilité de répartir les tests sur plusieurs appareils: segmentation.

La segmentation comporte des conditions préalables pour que le lanceur de test prenne en charge la segmentation.

La majorité des exécuteurs de test principaux prend déjà en charge la segmentation. Aucune est nécessaire. Ils sont déjà compatibles avec la segmentation: tests d'instrumentation, les tests pilotés côté hôte, GTest.

Deux types de segmentation sont acceptés dans Tradefed: le partitionnement local et le partitionnement distribué. Comme elles partagent certaines similitudes, cette page décrit les propriétés communes et puis les spécificités de chacun d'entre eux.

Propriétés communes

Les deux formes de segmentation utilisent les mêmes propriétés que les exécuteurs de test: les segments doivent être indépendantes et déterministes. La première étape de ces deux segments pour créer la liste ordonnée complète des tests, puis les diviser en différents groupes/segments.

La principale différence entre les formulaires de segmentation réside dans la façon dont ils exécutent les tests. Pour en savoir plus, consultez les sections ci-dessous.

Segmentation locale

La segmentation locale désigne tous les appareils impliqués dans l'exécution de l'instance sont connectés au même hôte physique.

Exécution

La segmentation locale tire parti du fait que tous les appareils sont connectés au même en créant un pool de tests à exécuter et en plaçant chaque les tests d'interrogation des appareils lorsqu'ils sont disponibles (c'est-à-dire avec le test précédent). Cela se traduit par une utilisation optimisée des appareils. Nous l'appelons également segmentation dynamique.

Options

--shard-count XX

Segmentation distribuée

La segmentation distribuée désigne tous les appareils impliqués dans l'exécution de les appels segmentés peuvent se trouver n'importe où et être connectés à différents réseaux hôtes.

Exécution

La segmentation distribuée se produit lors de la création de la liste des tests et du contenu chaque segment exécute uniquement la partition actuellement demandée. Donc tous les segments distribués créent la même liste au départ, puis exécutent une requête un sous-ensemble exclusif, ce qui entraîne l'exécution de tous les tests.

La principale propriété de ce formulaire est que les segments ne connaissent pas du tout et peuvent tomber en panne de façon indépendante.

Le principal inconvénient est que la longueur des segments n'est pas forcément équilibrée car nous ne pouvons pas prédire à l'avance l'exécution de chaque test dans chaque segment. La distribution comporte approximativement le même nombre de scénarios de test dans chaque segment.

Options

--shard-count XX --shard-index XX

Segmentation des jetons

La segmentation de jetons ne peut être utilisée qu'avec la segmentation locale. L'indicateur est inopérants dans les cas d'utilisation de segmentation non locale. Parfois, l’un des appareils impliqué dans la segmentation contient des ressources spéciales que les autres ne peuvent pas utiliser, telles qu'une carte SIM . Certains tests peuvent ne fonctionner que lorsque cette ressource spéciale est disponible et échouerait autrement.

La segmentation de jetons est notre solution à de tels cas d'utilisation. Les modules de test permettent déclarer les ressources spéciales dont ils ont besoin dans leur AndroidTest.xml ; Tradefed achemine les tests vers un appareil disposant de la ressource.

Configuration XML

<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />

Le value du jeton correspond à celui de Tradefed TokenProperty Il est associé à un gestionnaire dans TokenProviderHelper

Cela permet d'exécuter des modules de test sur des appareils exécuter les tests.

Que se passe-t-il si aucun appareil ne peut exécuter le test ?

Si aucun appareil n'est disponible dont la ressource correspond au module de test, le module de test a échoué et est ignoré, car il ne peut pas s'exécuter correctement.

Par exemple, si un module de test demande l'exécution d'une carte SIM, mais qu'aucun appareil ne dispose d'un carte SIM, le module de test échoue.

Implémentation

Transmettez cet indicateur de fonctionnalité à la ligne de commande principale de Tradefed:

--enable-token-sharding