Tradefed-Architektur

In diesem Abschnitt werden die internen Komponenten von Tradefed und ihre Beziehungen beschrieben. Weitere Informationen finden Sie auf den verlinkten Unterseiten.

Testkonfigurationen

Testkonfigurationen in Tradefed werden im XML-Format beschrieben. Die Struktur der Konfiguration ist entscheidend für die Ausführung und Anpassung von Tests.

Struktur von TF-Konfigurationen

Globale TF-Konfigurationen

Eine globale Konfigurationsdatei ist eine spezielle Tradefed-XML-Konfiguration, die beim Starten von Tradefed über die Umgebungsvariable TF_GLOBAL_CONFIG geladen wird. Es werden Objekte geladen, die sich auf den Tradefed-Instanzbereich beziehen und sich auf das Gesamtverhalten des Harness auswirken.

Details zur globalen Konfiguration

Schlüsselspeicher

Mit dem Keystore können Befehlszeilenoptionen aus einem Keystore in Tradefed eingefügt werden, um eine direkte Referenzierung des Werts in der Befehlszeile zu vermeiden. So können Passwörter aus der Befehlszeile ausgeblendet werden, indem sie direkt aus dem Schlüsselspeicher abgerufen werden.

Details zum Schlüsselspeicher

Gerätemanager

Der Gerätemanager ist dafür verantwortlich, den Status der Geräte in einer laufenden Instanz von Tradefed im Blick zu behalten. Aspekte wie der Zuweisungsstatus und der Onlinestatus werden überwacht.

Testbefehls-Scheduler

Der Testbefehlsplaner in Tradefed nimmt Befehle zur Ausführung entgegen, verknüpft sie mit Geräten und startet eine Testausführung.

Anbieter erstellen

Der Build-Anbieter ist der erste Schritt bei jedem Testaufruf. Es werden Ressourcen heruntergeladen, die zum Einrichten und Ausführen der Tests erforderlich sind (z. B. Build-Images und Test-APKs). Außerdem verweist es auf sie in einem BuildInfo-Objekt, das an den Test übergeben wird. Lokal verfügbare Ressourcen können auch im BuildInfo-Objekt verknüpft werden.

Zielvorbereitung und -bereinigung

Target Preparer bietet optionale Aktionen, mit denen das Testziel in einen bestimmten Zustand konfiguriert werden kann, z. B. das Flashen des Geräts, das Festlegen bestimmter Eigenschaften und die Verbindung zum WLAN.

Test-Ausführer

Ein Test-Runner in Tradefed bezieht sich auf das Objekt, das für die tatsächliche Testausführung verantwortlich ist. Unterschiedliche Testläufer steuern die Testausführung auf unterschiedliche Weise. Ein Instrumentierungs-Testlauf unterscheidet sich beispielsweise stark von einem JUnit-Testlauf.

Ergebnis Reporter

„Result reporter“ in Tradefed bezieht sich auf das Objekt, über das die Ergebnisse an ein bestimmtes Ziel gesendet werden. Jede Implementierung ist in der Regel auf unterschiedliche Ergebnis-Back-Ends spezialisiert. Der Ergebnisberichter ist dafür verantwortlich, das Tradefed-Ergebnisformat in das Zielformat umzuwandeln.

Dieses flexible Design ermöglicht es, dass jeder Test an eines der Ergebnisziele gesendet werden kann und dass auf einfache Weise weitere Tests hinzugefügt werden können.

Messwert-Collector

Der Messwert-Erfassungsmechanismus ist ein spezielles Objekt in Tradefed, das unabhängig von der Testausführung ist. Es ermöglicht die Erfassung von Informationen an verschiedenen Punkten des Testlebenszyklus (z. B. Teststart und -ende). Da der Messwerterfassungsmechanismus vom Test selbst getrennt ist, können die Punkte ausgetauscht, hinzugefügt und entfernt werden, ohne dass der Test selbst geändert werden muss.

Hostweite Einrichtung

In diesem Abschnitt werden Konfigurationen beschrieben, die für die Ausführung einer vollständigen Tradefed-Instanz gelten. Diese Optionen wirken sich auf das Verhalten des Harness als Ganzes aus, um sich an verschiedene Umgebungen anzupassen, z. B. an ein eingeschränktes Netzwerk.

Zusätzliche Funktionen

In den folgenden Abschnitten wird die allgemeine Verwendung von Tradefed-Dateien anstelle von Tradefed-Objekten beschrieben.

Tradefed-Sharding

Wenn der Testkorpus groß ist oder seine Ausführung lange dauert, können Sie ihn auf mehrere Geräte aufteilen. Diese Aufteilung wird als Fragmentierung bezeichnet. In diesem Abschnitt wird beschrieben, wie Fragmentierung funktioniert und konfiguriert wird.

Details zur Fragmentierung

SL4A verwenden

Tradefed unterstützt die Scripting-Ebene für Android, SL4A. Das ist ein Automatisierungs-Toolset zum Plattformunabhängigen Aufrufen von Android APIs.

SL4A mit Tradefed-Details

Dynamischer @option-Download

In einigen Fällen sind die für einen Test oder einen bestimmten Vorgang erforderlichen Dateien nicht lokal verfügbar. Mit dieser Funktion kann Tradefed diese Dateien von einem Remote-Speicherort abrufen, ohne einen Build-Anbieter zu verwenden.

Dynamischer @option-Download