Testen eines Asset Compute-Sekundärs

Das Asset Compute-Projekt definiert ein Muster für das einfache Erstellen und Ausführen von Tests von Asset Compute-Sekundären.

Anatomie eines Sekundär-Tests

Asset Compute-Sekundär-Tests sind in Test-Suites unterteilt, und in jeder Test-Suite werden ein oder mehrere Testfälle durchgeführt, in denen eine Testbedingung angegeben wird.

Die Teststruktur in einem Asset Compute-Projekt sieht wie folgt aus:

/actions/<worker-name>/index.js
...
/test/
  asset-compute/
    <worker-name>/           <--- Test suite for the worker, must match the yaml key for this worker in manifest.yml
        <test-case-1>/       <--- Specific test case
            file.jpg         <--- Input file (ie. `source.path` or `source.url`)
            params.json      <--- Parameters (ie. `rendition.instructions`)
            rendition.png    <--- Expected output file (ie. `rendition.path`)
        <test-case-2>/       <--- Another specific test case for this worker
            ...

Jeder Testentwurf kann die folgenden Dateien enthalten:

  • file.<extension>

    • Zu testende Quelldatei (Erweiterung kann alles außer .link)
    • Erforderlich
  • rendition.<extension>

    • Erwartete Ausgabedarstellung
    • Erforderlich, außer für Fehlertests
  • params.json

    • JSON-Anweisungen für einzelne Ausgabedarstellungen
    • Optional
  • validate

    • Ein Skript, das erwartete und tatsächliche Dateipfade von Ausgabedarstellungen als Argumente abruft und Exitcode 0 zurückgeben muss, wenn das Ergebnis in Ordnung ist, oder einen Exitcode ungleich null, wenn die Überprüfung oder der Vergleich fehlgeschlagen ist.
    • Optional, Standardwert ist der Befehl diff
    • Verwenden Sie ein Shell-Skript, das einen Docker-Ausführungsbefehl für die Verwendung verschiedener Validierungs-Tools umschließt
  • mock-<host-name>.json

Schreiben eines Testfalls

Dieser Testfall bestätigt, dass die parametrisierte Eingabe (params.json) für die Eingabedatei (file.jpg) die erwartete PNG-Wiedergabe (rendition.png) erzeugt.

  1. Löschen Sie zunächst den automatisch generierten simple-worker-Testfall unter /test/asset-compute/simple-worker, da dieser ungültig ist, da unser Sekundär nicht mehr einfach die Quelle in die Wiedergabeversion kopiert.

  2. Erstellen Sie einen neuen Testfallordner unter /test/asset-compute/worker/success-parameterized, um die erfolgreiche Ausführung des Sekundärs zu testen, der eine PNG-Wiedergabe erzeugt.

  3. Fügen Sie im Ordner success-parameterized die Test-Eingabedatei für diesen Testfall hinzu und nennen Sie sie file.jpg.

  4. Fügen Sie im Ordner success-parameterized eine neue Datei mit dem Namen params.json hinzu, die die Eingabeparameter des Sekundär definiert:

    code language-json
    {
        "size": "400",
        "contrast": "0.25",
        "brightness": "-0.50"
    }
    

    Dies sind dieselben Schlüssel/Werte, die in die Definition des Asset Compute-Profils des Entwicklungstools eingegeben werden, abzüglich des worker-Schlüssels.

  5. Fügen Sie die erwartete Ausgabedarstellungsdatei zu diesem Testfall hinzu und nennen Sie sie rendition.png. Diese Datei stellt die erwartete Ausgabe des Sekundärs für die gegebene Eingabe file.jpg dar.

  6. Führen Sie in der Befehlszeile die Tests für den Projektstamm durch, indem Sie aio app test ausführen

    • Stellen Sie sicher, dass Docker Desktop und unterstützende Docker-Bilder installiert und gestartet sind
    • Beenden Sie alle laufenden Entwicklungs-Tool-Instanzen

Test – Erfolgreich

Schreiben eines Testfalls zur Fehlerprüfung

Dieser Testfall prüft, ob der Sekundär den entsprechenden Fehler auslöst, wenn der Parameter contrast auf einen ungültigen Wert gesetzt wird.

  1. Erstellen Sie einen neuen Testfallordner unter /test/asset-compute/worker/error-contrast, um eine fehlerhafte Ausführung des Sekundärs aufgrund eines ungültigen contrast-Parameterwertes zu testen.

  2. Fügen Sie im Ordner error-contrast die Test-Eingabedatei für diesen Testfall hinzu und nennen Sie sie file.jpg. Der Inhalt dieser Datei ist für diesen Test unerheblich, sie muss nur vorhanden sein, um die Prüfung „Korrupte Quelle“ zu überstehen, damit die rendition.instructions-Gültigkeitsprüfungen erreicht werden können, die in diesem Testfall überprüft werden.

  3. Fügen Sie im Ordner error-contrast eine neue Datei mit dem Namen params.json hinzu, die die Eingabeparameter des Sekundärs mit dem Inhalt definiert:

    code language-json
    {
        "contrast": "10",
        "errorReason": "rendition_instructions_error"
    }
    
    • Setzen Sie den Parameter contrast auf 10, einen ungültigen Wert, da der Kontrast zwischen -1 und 1 liegen muss, um einen RenditionInstructionsError auszulösen.
    • Stellen Sie sicher, dass der entsprechende Fehler in Tests ausgelöst wird, indem Sie den Schlüssel errorReason auf den mit dem erwarteten Fehler verbundenen „Grund“ setzen. Dieser ungültige Kontrast-Parameter löst den benutzerdefinierten Fehler, RenditionInstructionsError, aus, daher setzen Sie errorReason auf den Grund dieses Fehlers, oder rendition_instructions_error, um zu bestätigen, dass er ausgelöst wird.
  4. Da bei einer fehlerhaften Ausführung keine Ausgabedarstellung generiert werden sollte, ist keine rendition.<extension>-Datei erforderlich.

  5. Führen Sie die Test-Suite aus dem Stammverzeichnis des Projekts aus, indem Sie den folgenden Befehl ausführen aio app test

    • Stellen Sie sicher, dass Docker Desktop und unterstützende Docker-Bilder installiert und gestartet sind
    • Beenden Sie alle laufenden Entwicklungs-Tool-Instanzen

Test – Fehlerkontrast

Testfälle bei GitHub

Die endgültigen Testfälle sind auf Github verfügbar unter:

Fehlerbehebung

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69