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 in einem XML-Format beschrieben. Die Struktur der Konfiguration ist entscheidend für das Ausführen und Anpassen von Tests.

Struktur von TF-Konfigurationen

Globale TF-Konfigurationen

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

Details zur globalen Konfiguration

Schlüsselspeicher

Mit Keystore können Befehlszeilenoptionen in Tradefed eingefügt werden, die aus einem Keystore stammen. So wird vermieden, dass der Wert direkt in der Befehlszeile referenziert wird. Damit können Sie Passwörter in der Befehlszeile ausblenden, indem Sie sie direkt aus dem Keystore abrufen.

Details zum Schlüsselspeicher

Gerätemanager

Der Gerätemanager ist dafür verantwortlich, den Status von Geräten in einer laufenden Instanz von Tradefed zu verfolgen. Aspekte wie Zuweisungsstatus und Onlinestatus werden überwacht.

Befehlsplaner testen

Der Testbefehlscheduler in Tradefed nimmt Befehle zum Ausführen entgegen, ordnet sie Geräten zu und startet einen Testaufruf.

Build-Anbieter

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

Zielvorbereiter und ‑bereiniger

Der Target-Preparer bietet optionale Aktionen, die ausgeführt werden können, um das zu testende Ziel in einen bestimmten Zustand zu versetzen, z. B. das Flashen des Geräts, das Festlegen bestimmter Eigenschaften und das Herstellen einer WLAN-Verbindung.

Test-Ausführer

Ein Test-Runner in Tradefed ist das Objekt, das für die eigentliche Ausführung des Tests verantwortlich ist. Verschiedene Test-Runner führen Tests auf unterschiedliche Weise aus. Ein Instrumentation-Test-Runner unterscheidet sich beispielsweise stark von einem JUnit-Test-Runner.

Ergebnisreporter

Der Ergebnisreporter in Tradefed bezieht sich auf das Objekt, das die Ergebnisse an ein bestimmtes Ziel sendet. Jede Implementierung ist in der Regel auf verschiedene Ergebnis-Back-Ends spezialisiert. Der Ergebnisreporter ist für die Konvertierung des Tradefed-Ergebnisformats in das Zielformat zuständig.

Dieses flexible Design ermöglicht es, dass für jeden Test Daten an jedes der Zielvorhaben für Ergebnisse gesendet werden. Außerdem können auf isolierte Weise problemlos weitere Tests hinzugefügt werden.

Messwerterfassung

Der Messwerterfassung ist ein spezielles Objekt in Tradefed, das orthogonal zur Testausführung ist. So können Informationen an verschiedenen Punkten des Testlebenszyklus erfasst werden, z. B. beim Teststart oder ‑ende. Da der Collector vom Test selbst entkoppelt ist, können die Punkte ausgetauscht, hinzugefügt und entfernt werden, ohne dass der Test selbst geändert werden muss.

Einrichtung auf Hostebene

In diesem Abschnitt werden Setups 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 und nicht von Tradefed-Objekten beschrieben.

Tradefed-Sharding

Wenn der Testkorpus groß ist oder die Ausführung lange dauert, kann er auf mehrere Geräte aufgeteilt werden. Diese Aufteilung bezeichnen wir als Sharding. In diesem Abschnitt wird beschrieben, wie Sharding funktioniert und wie es konfiguriert wird.

Sharding-Details

SL4A verwenden

Tradefed unterstützt die Scripting Layer for Android (SL4A), ein Automatisierungstoolset zum plattformunabhängigen Aufrufen von Android-APIs.

SL4A mit Tradefed-Details

Dynamischer Download von @option

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-Standort abrufen, ohne einen Build-Provider zu verwenden.

Dynamischer @option-Download