Der Lebenszyklus eines Tests, der mit Trade Federation ausgeführt wird, besteht aus vier separaten Phasen, die um formal definierte Schnittstellen herum konzipiert sind.
Definierte Schnittstellen
- Build-Anbieter : Stellt einen Build zum Testen bereit und lädt bei Bedarf entsprechende Dateien herunter.
- Zielvorbereiter : Bereitet die Testumgebung vor, möglicherweise einschließlich Softwareinstallation und Gerätekonfiguration.
- Test : Führt Test(s) aus und sammelt Testergebnisse. Dies kann jeder JUnit-Test sein, obwohl unsere IRemoteTest- Schnittstelle speziell dafür entwickelt wurde, gut in der Trade Federation-Umgebung zu funktionieren.
- Testaufruf-Listener (Ergebnisberichte) : Hört auf Testergebnisse, normalerweise mit dem Zweck, die Testergebnisse an ein Repository weiterzuleiten oder sie dem Test Runner anzuzeigen.
Die grundlegende Testentität in TF ist eine Konfiguration (config). Eine Konfiguration ist eine XML-Datei, die die Lebenszykluskomponenten eines Tests deklariert.
Diese Trennung des Lebenszyklus des Tests soll eine Wiederverwendung ermöglichen. Mit diesem Design kann der Entwickler einen Test einmal erstellen, und dann kann der Integrator verschiedene Konfigurationen erstellen, um diesen Test in verschiedenen Umgebungen auszuführen. Beispielsweise könnten sie eine Konfiguration erstellen, die einen Test auf einem lokalen Computer ausführt und das Ergebnis auf stdout ausgibt. Sie könnten dann eine zweite Konfiguration erstellen, die denselben Test ausführt, aber einen anderen Test Invocation Listener verwendet, um die Testergebnisse in einer Datenbank zu speichern. Eine dritte Konfiguration könnte entwickelt werden, um diesen Test kontinuierlich von einem Testlabor irgendwo auszuführen.
An dieser Stelle sei darauf hingewiesen, dass eine Konfiguration zusammen mit ihren Befehlszeilenargumenten (wie vom Test Runner bereitgestellt) als Command bezeichnet wird. Wenn TF einen Befehl mit einem ITestDevice
und ausführt, wird das nachfolgende Objekt als Invocation bezeichnet. Kurz gesagt, eine Invocation umfasst eine vollständige TF-Testausführung über ihren gesamten Lebenszyklus.
Zusätzliche Konfigurationskomponenten
- Gerätewiederherstellung : Mechanismus zur Wiederherstellung der Gerätekommunikation bei Verlust.
- Logger : Sammelt gehandelte Protokolldaten.
Bühnenausgabe und Fehler
Jede Stufe eines Aufrufs wird nacheinander ausgeführt und hat ein bestimmtes Ziel. Dieser Abschnitt beschreibt die üblichen Ausgaben und Fehler jeder Stufe.
Build-Anbieter
In dieser Phase wird ein IBuildInfo
-Objekt erstellt und ausgegeben, das alle erforderlichen Dateireferenzen enthält, um die Tests einzurichten und auszuführen.
Der häufigste Fehler in dieser Phase ist ein Fehler beim Herunterladen oder Finden der angeforderten Dateien.
Ein Fehler in dieser Phase führt dazu, dass der Fehler direkt gemeldet wird und keine Tests ausgeführt werden.
Zielvorbereitung
In dieser Phase werden die erforderlichen Zustände für das zu testende Ziel festgelegt. Diese Phase kann das Gerät oder das Host-Setup nach Bedarf für den gegebenen Testaufruf ändern.
Häufige Fehler in dieser Phase beinhalten normalerweise das Versäumnis, das Gerät in einen bestimmten Zustand zu versetzen (z. B. Flashen fehlgeschlagen) und das Versäumnis, die erforderlichen Dateien für die Einrichtung zu finden.
Ein Fehler in diesem Stadium führt dazu, dass die Zielbereinigung ausgeführt wird, der Fehler gemeldet wird und keine Tests ausgeführt werden.
Tests
In dieser Phase werden die angeforderten Tests auf dem zuvor vorbereiteten Ziel ausgeführt und alle Ergebnisse der Testausführung gemeldet.
Häufige Fehler in dieser Phase bestehen normalerweise darin, dass das zu testende Ziel nicht verfügbar ist oder dass ein Fehler eine teilweise Ausführung der Tests verursacht. Diese Fehler sind Infrastrukturprobleme, die sich auf die Testausführung selbst auswirken, im Gegensatz zu einem Ausfall eines einzelnen Testfalls.
Ein Fehler in dieser Phase führt dazu, dass die Testausführung angehalten wird, die Zielbereinigung ausgeführt wird, der Fehler gemeldet wird und Teilergebnisse erhalten werden.
Ergebnisberichterstattung
Diese Phase meldet die Ergebnisse und Fehler an die konfigurierten Dienste (z. B. Server und lokale Dateien).
Obwohl einzelne Ergebnismelder Fehler haben können, sind sie voneinander isoliert (ein Melder sieht keine Fehler eines anderen). Diese Fehler wirken sich nur auf die eigene Ergebnisberichterstattung eines einzelnen Melders aus und die Fehler können in den Protokollen eingesehen werden.