Trade Federation (Tradefed ou TF en abrégé) est un cadre de test continu conçu pour exécuter des tests sur des appareils Android. Par exemple, Tradefed est utilisé pour exécuter la suite de tests de compatibilité (CTS) et la suite de tests de fournisseurs (VTS) .
Trade Federation est une application Java qui s'exécute sur un ordinateur hôte et communique avec un ou plusieurs appareils Android à l'aide de ddmlib (la bibliothèque derrière DDMS) via adb.
Nous avons répertorié ci-dessous certaines des principales fonctionnalités de TF, ainsi que quelques exemples de cas d'utilisation. Cela dit, si vous voulez vous lancer et commencer, vous pouvez vous diriger directement vers la page Start Here .
Fonctionnalités
- conception modulaire, flexible et évolutive
- prend en charge l'exécution de nombreux types de tests Android différents : instrumentation , uiautomator , natif/gtest, JUnit basé sur l'hôte, etc.
- fournit des mécanismes de fiabilité et de récupération en plus d'adb
- prend en charge la planification et l'exécution de tests sur plusieurs appareils en parallèle
Voir Testing Through TF pour les informations les plus récentes sur la façon d'exécuter vos tests existants, tels que Instrumentation .
Cas d'utilisation
La modularité de Trade Federation facilite l'intégration dans des environnements avec des infrastructures de construction, de test et de création de rapports existantes. Nous énumérons ci-dessous quelques cas d'utilisation démonstratifs où tradefed pourrait permettre des pratiques de test efficaces et évolutives.
Tout d'abord, il est utile de considérer le paysage des cas d'utilisation potentiels en termes de la question "quelles parties sont modifiables et quelles parties sont statiques ?" Par exemple, un OEM de périphérique peut modifier le cadre, le système et le matériel, mais n'a que peu ou pas d'influence sur les applications existantes. Un développeur d'application, d'autre part, peut modifier l'application, mais a peu de contrôle sur la plupart des aspects du système ou du cadre.
Par conséquent, une entité dans chaque cas d'utilisation aura des objectifs de test différents et aura différentes options dans le cas d'un ensemble d'échecs de test. Malgré ces différences, Trade Federation peut aider à rendre chacun de ses processus de test efficace, flexible et évolutif.
FEO de l'appareil
Un équipementier d'appareil construit du matériel et modifie souvent le système et les infrastructures Android pour qu'ils fonctionnent correctement sur ce matériel. L'OEM peut s'efforcer d'atteindre ces objectifs tout en conservant la stabilité et les performances au niveau du matériel et du système, et en s'assurant que les changements de structure ne rompent pas la compatibilité avec les applications existantes.
L'OEM pourrait implémenter un module de clignotement de périphérique qui s'exécutera pendant la phase de configuration cible du cycle de vie. Ce module aurait un contrôle total sur l'appareil pendant sa période d'exécution, ce qui lui permettrait de forcer potentiellement l'appareil dans le chargeur de démarrage, de flasher, puis de forcer l'appareil à redémarrer en mode espace utilisateur. Combiné avec un module à lier à un système de construction continue, cela permettrait à l'OEM d'exécuter des tests sur son appareil lorsqu'il apporte des modifications au micrologiciel au niveau du système et aux frameworks au niveau Java.
Une fois l'appareil entièrement démarré, l'OEM serait en mesure d'exploiter les tests JUnit existants ou d'en écrire de nouveaux pour vérifier la fonctionnalité qui l'intéresse. Enfin, ils pourraient écrire un ou plusieurs modules de rapport de résultats à lier aux référentiels de résultats de test existants ou à rapporter les résultats directement (par exemple, par e-mail ).
Développeur d'applications
Un développeur d'applications crée une application qui doit bien fonctionner sur une variété de versions de plate-forme et une variété d'appareils. Si un problème survient sur une version de plate-forme et/ou un appareil particulier, le seul remède consiste à ajouter une solution de contournement et à passer à autre chose. Pour les grands développeurs, le processus de test peut être intégré dans une séquence de construction continue. Pour les petits développeurs, il peut être lancé périodiquement ou manuellement.
La plupart des développeurs d'applications utiliseraient les modules d'installation de test apk qui existent déjà dans TF. Il existe une version qui s'installe à partir du système de fichiers local , ainsi qu'une version qui peut installer des apks téléchargés à partir d'un service de build . Il est important de noter que cette dernière version continuerait à fonctionner correctement avec un nombre arbitraire d'instances TF exécutées sur la même machine hôte.
En raison de la compétence de TF à traiter plusieurs appareils, il serait simple de classer chaque résultat de test selon le type d'appareil utilisé pour ce test. Ainsi, TF pourrait potentiellement générer une matrice de compatibilité bidimensionnelle (ou multidimensionnelle) pour chaque version de l'application.
Service de test
Un service de test peut, par exemple, permettre aux développeurs d'applications de soumettre des applications et d'exécuter des tests sur des appareils équipés d'outils de mesure de puissance pour déterminer la consommation d'énergie de l'application. Cela diffère des deux cas d'utilisation précédents en ce que le constructeur de services ne contrôle pas les périphériques ou les applications en cours d'exécution.
Étant donné que Trade Federation peut exécuter n'importe quelle classe Java qui implémente l'interface IRemoteTest
simple, il est trivial d'écrire des pilotes capables de coordonner un élément matériel externe avec le cas de test exécuté sur l'appareil. Le pilote lui-même peut générer des threads, envoyer des requêtes à d'autres serveurs ou faire tout ce dont il pourrait avoir besoin. De plus, la simplicité et la polyvalence de l'interface de rapport de résultats, ITestInvocationListener
, signifie qu'il est également simple de représenter des résultats de test arbitraires (y compris, par exemple, des métriques de puissance numériques) dans le pipeline de rapport de résultats standard.