relman CLI: VirtualBox Click-Tests
← Back to the relman CLI command overview
VirtualBox click-tests
Unlike almost every other command group, the click-test object tree (virtual machine, test, testcase, teststep, testrun) uses flat, globally-unique tokens instead of an organization/project-group/project scope chain: a test suite is really owned by a build, not by a project directly, and a testcase or step has no single natural ancestor chain a caller would already be holding the way they hold an org/pg/project chain before looking up a task. So every token below is self-sufficient – no ancestor tokens needed once you have it.
Full path from nothing to a passing test: list vm → list build + list snapshot → add test → add testcase → add teststep + edit teststep (repeat) → run test → describe testcase / describe teststep to check progress → download screenshot.
Discovery
list vm (alias: vms)
Fetches every virtual machine’s id, name, running state and snapshot count. Takes no arguments – lists every VM the server knows about.
list build <org-token> <pg-token> <project-token> (alias: builds)
Fetches the id and a label of every build belonging to the project identified by <project-token>. A build has no name field of its own, so the label is its configured goals’ mojos joined with a space (e.g. “clean install”). Needed to pass a build token to add test – this is the one command in this group that is org/pg/project-scoped, since a build sits directly under a project.
list snapshot <vm-token> (alias: snapshots)
Fetches every snapshot of the virtual machine identified by <vm-token> – id, name and description. Needed to pass a snapshot token to add test.
list test <vm-token> (alias: tests)
Fetches every existing test suite whose snapshot belongs to the virtual machine identified by <vm-token>, newest first – id, name and snapshot name. Needed to pass a test token to add testcase (or to reach a test’s testcases via list testcase).
Building a test
add test <org-token> <pg-token> <project-token> <build-token> <snapshot-token> <name>
Creates a new test suite named <name>, bound to the build identified by <build-token> and the snapshot identified by <snapshot-token> (any virtual machine’s – not scoped to the build’s project). Prints the new test’s id, needed by add testcase to attach testcases to it.
list testcase <vm-token> (alias: testcases)
Fetches every testcase belonging to any test suite of the virtual machine identified by <vm-token>, newest test first – id, name, owning test’s id/name and step count.
describe testcase <testcase-token>
Fetches and prints the testcase’s name, description, owning test id/name, and every step (id and a short human-readable action summary, e.g. “type: hello”, “mouse click button 1”).
add testcase <test-token> <name>
Creates a new, empty testcase (description left blank) named <name> under the test identified by <test-token>. Prints the new testcase’s id, needed by add teststep.
list teststep <testcase-token> (alias: teststeps)
Fetches every step of the testcase identified by <testcase-token>, in execution order – id and a short human-readable action summary each.
describe teststep <teststep-token>
Fetches and prints every raw property of the step (mouse move/click, key down/up, double-click interval, literal text to type, CPU-usage wait, whether it has a required screenshot). edit teststep‘s field names match this command’s output field names exactly.
add teststep <testcase-token>
Creates a new, entirely empty step (every action property null) under the testcase identified by <testcase-token>. Prints the new step’s id – follow up with edit teststep to give it an actual action.
edit teststep <teststep-token> <field> <value>
Sets one of the step’s ten properties to <value>, or clears it if <value> is the literal string null. <field> is one of: mousemovex, mousemovey, mousedownbutton, mouseupbutton, keydowncode, keyupcode, doubleclickms, stringwrite, waitcputimeoutus, waitcpupercent. Prints the step’s full detail afterwards, the same shape describe teststep returns.
Attaching a reference screenshot for a “compare screenshot” step is not one of the ten fields – that needs a freshly created screenshot object to point at, which is out of scope for this command; use the web UI for that step.
Running & results
run test <testcase-token>
Queues a new run for the whole test suite that owns the given testcase (every testcase belonging to it, not just the one referenced) – the same as the web UI’s click-test “play” button. Prints the new run’s id and the test id it was queued for. The run executes asynchronously on whichever runner instance is watching the target virtual machine; re-fetch list testcase/describe testcase to see it progress.
download screenshot <teststep-token> <output-file>
Saves the reference screenshot PNG attached to the step identified by <teststep-token> to <output-file>, overwriting it if it already exists. Fails with an error (exit code 1) if the step has no screenshot attached yet.
Examples
1. Listing virtual machines
Global flags omitted below – see Utility & global flags. No org/project chain needed – the whole click-test tree uses flat tokens.
$ relman list vm
- id: vm-Fq82Nx
name: win11-chrome
running: true
snapshotCount: 3
- id: vm-Hn73Kp
name: ubuntu22-firefox
running: false
snapshotCount: 1
Edge case: running: false doesn’t mean the machine is broken – it just means the runner watching it hasn’t reported it as up right now; run test against a testcase on it still queues successfully, the run simply waits.
2. Building a step, then trying an invalid edit
$ relman add teststep vc-Jm62Tx
id: vs-Rq93Ln
$ relman edit teststep vs-Rq93Ln stringwrite "hello world"
testCaseId: vc-Jm62Tx
mouseMoveX: null
mouseMoveY: null
mouseDownButton: null
mouseUpButton: null
keyDownCode: null
keyUpCode: null
doubleClickHavingPeroidInMs: null
stringWrite: hello world
waitCpuUsageTimeoutMicroseconds: null
waitCupUsagePercent: null
hasRequiredScreenshot: false
$ relman edit teststep vs-Rq93Ln mousemovex forty
Error: The server responded with HTTP 400 for https://.../cli/teststep-edit?...
Edge case: the numeric fields (mousemovex, keydowncode, etc.) are strictly parsed server-side – a non-numeric value like forty is rejected with a bare HTTP 400 rather than being coerced or ignored. Note also that setting stringwrite did not clear it back to null automatically when unrelated – each field is independent, but a step is normally meant to carry only one action at a time by convention, not by enforcement.
3. Running a test – asynchronously
$ relman run test vc-Jm62Tx
runId: vr-Wp84Zc
testId: vt-Nx72Bq
$ relman describe testcase vc-Jm62Tx
name: Login with valid credentials
description: ""
testId: vt-Nx72Bq
testName: nightly-smoke
steps:
- id: vs-Rq93Ln
action: "type: hello world"
Edge case: run test returns immediately once the run is queued, not once it’s finished – there is no pass/fail field in its own response. The run executes asynchronously on whichever runner instance is watching the target VM; re-fetching describe testcase a bit later is currently the only way from the CLI to see whether it passed, and even then only indirectly, by checking back with the web UI or the VM’s activity – this command’s own output does not surface run results directly.
← Zurück zur Übersicht über die relman-CLI-Befehle
VirtualBox-Klick-Tests
Im Gegensatz zu fast allen anderen Befehlsgruppen verwendet der Klick-Test-Objektbaum (virtuelle Maschine, Test, Testfall, Testschritt, Testlauf) flache, global eindeutige Token anstelle einer Kette aus Organisation/Projektgruppe/Projekt: Eine Testsuite gehört tatsächlich zu einem Build und nicht direkt zu einem Projekt, und ein Testfall oder Testschritt hat keine einzelne natürliche Vorläuferkette, die ein Aufrufer bereits besitzen würde, so wie er eine Org/PG/Projekt-Kette besitzt, bevor er eine Aufgabe nachschlägt. Daher ist jedes der unten aufgeführten Token in sich abgeschlossen – sobald Sie es haben, sind keine Vorläufer-Tokens mehr erforderlich.
Vollständiger Pfad von Null bis zu einem bestandenen Test: Liste der VMs → Liste der Builds + Snapshot auflisten → Test hinzufügen → Testfall hinzufügen → Testschritt hinzufügen + Testschritt bearbeiten (wiederholen) → Test ausführen → Testfall beschreiben / Testschritt beschreiben um den Fortschritt zu überprüfen → Screenshot herunterladen.
Ermittlung
VM auflisten (Alias: vms)
Ruft die ID, den Namen, den Betriebsstatus und die Anzahl der Snapshots jeder virtuellen Maschine ab. Erfordert keine Argumente – listet alle dem Server bekannten VMs auf.
list build (Alias: Builds)
Ruft die ID und eine Bezeichnung jedes Builds ab, der zu dem durch . Ein Build verfügt über kein eigenes Namensfeld; daher besteht die Bezeichnung aus den Mojos der konfigurierten Ziele, die durch ein Leerzeichen verbunden sind (z. B. „clean install“). Wird benötigt, um ein Build-Token an add test – dies ist der einzige Befehl in dieser Gruppe, der auf org/pg/project-scoped ist, da sich ein Build direkt unter einem Projekt befindet.
Snapshot auflisten (Alias: snapshots)
Ruft alle Snapshots der virtuellen Maschine ab, die durch – ID, Name und Beschreibung identifiziert wird. Wird benötigt, um ein Snapshot-Token an Test hinzufügen.
Testliste (Alias: tests)
Ruft alle vorhandenen Testsuiten ab, deren Snapshot zu der virtuellen Maschine gehört, die durch , beginnend mit den neuesten – ID, Name und Snapshot-Name. Erforderlich, um ein Test-Token an Testfall hinzufügen (oder um über Testfälle auflisten).
Erstellen eines Tests
Test hinzufügen
Erstellt eine neue Testsuite mit dem Namen , der an den durch und an den durch (beliebige virtuelle Maschine – nicht auf das Projekt des Builds beschränkt). Gibt die ID des neuen Tests aus, die von Testfall hinzufügen benötigt wird, um Testfälle daran anzuhängen.
Testfälle auflisten (Alias: testcases)
Ruft alle Testfälle ab, die zu beliebigen Testsuite der virtuellen Maschine, die durch , beginnend mit dem neuesten Test – ID, Name, ID/Name des zugehörigen Tests und Anzahl der Schritte.
Testfall beschreiben
Ruft den Namen, die Beschreibung, die ID/den Namen des zugehörigen Tests sowie jeden Schritt (ID und eine kurze, für Menschen lesbare Zusammenfassung der Aktion, z. B. „type: hello“, „Mausklick auf Schaltfläche 1“) des Testfalls ab und gibt diese aus.
Testfall hinzufügen
Erstellt einen neuen, leeren Testfall (Beschreibung bleibt leer) mit dem Namen unter dem Test, der durch . Gibt die ID des neuen Testfalls aus, die von Testschritt hinzufügen.
list teststep (Alias: teststeps)
Ruft jeden Schritt des Testfalls ab, der durch in der Ausführungsreihenfolge – jeweils mit der ID und einer kurzen, für Menschen lesbaren Zusammenfassung der Aktion.
Testschritt beschreiben
Ruft alle Rohdaten des Schritts ab und gibt sie aus (Mausbewegung/Klick, Tastendruck/Loslassen, Doppelklick-Intervall, einzugebender Text, Wartezeit bei CPU-Auslastung, Angabe, ob ein Screenshot erforderlich ist). teststep bearbeitenDie Feldnamen von … stimmen exakt mit den Ausgabefeldnamen dieses Befehls überein.
Testschritt hinzufügen
Erstellt einen neuen, vollständig leeren Schritt (alle Aktions-Eigenschaften auf „null“) unter dem durch . Gibt die ID des neuen Schritts aus – führen Sie anschließend Testschritt bearbeiten , um ihm eine konkrete Aktion zuzuweisen.
Testschritt bearbeiten
Setzt eine der zehn Eigenschaften des Schritts auf oder löscht sie, falls es sich um die Literalzeichenfolge „null“. ist eine der folgenden: mousemovex, mousemovey, mousedownbutton, mouseupbutton, keydowncode, keyupcode, Doppelklick, Zeichenfolge schreiben, Wartezeit-CPU-Timeout, waitcpupercent. Gibt anschließend die vollständigen Details des Schritts aus, in derselben Form wie beschreibt testschritt zurückgibt.
Das Anhängen eines Referenz-Screenshots für einen „Screenshot vergleichen“-Schritt gehört nicht zu den zehn Feldern – hierfür muss auf ein neu erstelltes Screenshot-Objekt verwiesen werden, was außerhalb des Anwendungsbereichs dieses Befehls liegt; nutzen Sie für diesen Schritt bitte die Web-Benutzeroberfläche.
Ausführung & Ergebnisse
Test ausführen
Stellt einen neuen Lauf für die gesamten Testsuite , zu der der angegebene Testfall gehört (alle dazugehörigen Testfälle, nicht nur der referenzierte) – genau wie beim Klicken auf die Schaltfläche „Ausführen“ im Web-UI. Gibt die ID des neuen Durchlaufs und die Test-ID aus, für die er in die Warteschlange gestellt wurde. Der Durchlauf wird asynchron auf derjenigen Runner-Instanz ausgeführt, die die Ziel-VM überwacht; Neuabrufen Testfall auflisten/Testfall beschreiben , um den Fortschritt zu verfolgen.
Screenshot herunterladen
Speichert den Referenz-Screenshot im PNG-Format, der dem durch , und überschreibt ihn, falls er bereits vorhanden ist. Der Vorgang schlägt mit einem Fehler (Exit-Code 1) fehl, wenn dem Schritt noch kein Screenshot beigefügt wurde.
Beispiele
1. Auflistung virtueller Maschinen
Globale Flags werden im Folgenden weggelassen – siehe Dienstprogramm & globale Flags. Es ist keine Organisations-/Projektkette erforderlich – der gesamte Click-Test-Baum verwendet flache Tokens.
$ relman list vm
- ID: vm-Fq82Nx
Name: win11-chrome
läuft: true
Anzahl der Snapshots: 3
- ID: vm-Hn73Kp
Name: ubuntu22-firefox
läuft: false
Anzahl der Snapshots: 1
Sonderfall: running: false bedeutet nicht, dass der Rechner ausgefallen ist – es bedeutet lediglich, dass der zuständige Runner ihn derzeit nicht als betriebsbereit gemeldet hat; Wenn ein Test eines Testfalls auf dieser Maschine wird weiterhin erfolgreich in die Warteschlange gestellt; der Lauf wartet lediglich.
2. Einen Schritt erstellen und anschließend eine ungültige Bearbeitung versuchen
$ relman add teststep vc-Jm62Tx
ID: vs-Rq93Ln
$ relman edit teststep vs-Rq93Ln stringwrite "hello world"
testCaseId: vc-Jm62Tx
mouseMoveX: null
mouseMoveY: null
Mausklick-Taste: null
mouseUpButton: null
Tastendruck-Code: null
keyUpCode: null
Doppelklick mit Verzögerung in ms: null
Zeichenkette zum Schreiben: hello world
Zeitlimit für CPU-Auslastung in Mikrosekunden: null
Wartezeit bei CPU-Auslastung in Prozent: null
hasRequiredScreenshot: false
$ relman edit teststep vs-Rq93Ln mousemovex forty
Fehler: Der Server hat für https://.../cli/teststep-edit? mit dem HTTP-Status 400 geantwortet...
Sonderfall: die numerischen Felder (mousemovex, keydowncodeusw.) werden serverseitig streng analysiert – ein nicht-numerischer Wert wie vierzig wird mit einem reinen HTTP-400-Fehler zurückgewiesen, anstatt in einen numerischen Wert umgewandelt oder ignoriert zu werden. Beachten Sie außerdem, dass die Einstellung stringwrite den Wert nicht wieder auf null zurückgesetzt – jedes Feld ist unabhängig, doch ein Schritt soll gemäß Konvention (nicht zwingend vorgeschrieben) normalerweise jeweils nur eine Aktion ausführen.
3. Einen Test ausführen – asynchron
$ relman run test vc-Jm62Tx
runId: vr-Wp84Zc
testId: vt-Nx72Bq
$ relman describe testcase vc-Jm62Tx
name: Anmeldung mit gültigen Anmeldedaten
Beschreibung: ""
testId: vt-Nx72Bq
Testname: nightly-smoke
Schritte:
- id: vs-Rq93Ln
Aktion: „Typ: hello world“
Randfall: Test ausführen wird sofort zurückgegeben, sobald der Lauf in die Warteschlange gestellt, nicht erst nach dessen Abschluss – in der eigentlichen Antwort gibt es kein Feld für „bestanden“ oder „nicht bestanden“. Der Lauf wird asynchron auf derjenigen Runner-Instanz ausgeführt, die die Ziel-VM überwacht; das erneute Abrufen von describe testcase etwas später erneut abzurufen, ist derzeit die einzige Möglichkeit über die Befehlszeile, festzustellen, ob der Test bestanden wurde, und selbst dann nur indirekt, indem man die Web-Benutzeroberfläche oder die Aktivität der VM überprüft – die Ausgabe dieses Befehls selbst zeigt die Ausführungsergebnisse nicht direkt an.
← Retour à la présentation des commandes de l’interface en ligne de commande (CLI) de relman
Tests « click » de VirtualBox
Contrairement à presque tous les autres groupes de commandes, l’arborescence d’objets des tests clics (machine virtuelle, test, cas de test, étape de test, exécution de test) utilise des identifiants plats et uniques au niveau global au lieu d’une chaîne de portées organisation/groupe de projets/projet : une suite de tests appartient en réalité à une version, et non directement à un projet, et un cas de test ou une étape de test ne possède pas de chaîne d’ancêtres naturelle unique qu’un appelant détiendrait déjà, à l’instar de la chaîne organisation/groupe de projets/projet avant de rechercher une tâche. Ainsi, chaque jeton ci-dessous est autonome : aucun jeton ancêtre n’est nécessaire une fois que vous l’avez.
Chemin complet, de zéro à un test réussi : liste des machines virtuelles → liste des builds + liste des instantanés → ajouter un test → ajouter un cas de test → ajouter une étape de test + modifier une étape de test (répéter) → exécuter le test → décrire un cas de test / décrire une étape de test pour vérifier la progression → télécharger une capture d'écran.
Découverte
Liste des machines virtuelles (alias : vms)
Récupère l’identifiant, le nom, l’état d’exécution et le nombre d’instantanés de chaque machine virtuelle. Ne prend aucun argument : répertorie toutes les machines virtuelles connues du serveur.
list build (alias : builds)
Récupère l’identifiant et une étiquette de chaque build appartenant au projet identifié par . Une version ne disposant pas de champ « nom » propre, l’étiquette correspond à la concaténation, séparée par un espace, des mojos de ses objectifs configurés (par exemple : « clean install »). Nécessaire pour transmettre un jeton de version à ajouter un test — c’est la seule commande de ce groupe qui est org/pg/project-scoped, puisqu’une version se trouve directement sous un projet.
liste des instantanés (alias : snapshots)
Récupère tous les instantanés de la machine virtuelle identifiée par – son identifiant, son nom et sa description. Nécessaire pour transmettre un jeton de snapshot à ajouter un test.
test de la liste (alias : tests)
Récupère toutes les suites de tests existantes dont l’instantané appartient à la machine virtuelle identifiée par , en commençant par la plus récente — identifiant, nom et nom de l’instantané. Nécessaire pour transmettre un jeton de test à ajouter un cas de test (ou pour accéder aux cas de test d’un test via la liste des cas de test).
Création d’un test
Ajouter un test
Crée une nouvelle suite de tests nommée , associée à la compilation identifiée par et à l’instantané identifié par (n’importe quelle machine virtuelle – sans limitation au projet de la compilation). Affiche l’identifiant du nouveau test, nécessaire à la commande ajouter un cas de test pour y associer des cas de test.
list testcase (alias : testcases)
Récupère tous les cas de test appartenant à n’importe quelle suite de tests de la machine virtuelle identifiée par , en commençant par le test le plus récent : identifiant, nom, identifiant/nom du test associé et nombre d’étapes.
décrire un cas de test
Récupère et affiche le nom du cas de test, sa description, l’identifiant/le nom du test auquel il appartient, ainsi que chaque étape (identifiant et bref résumé de l’action lisible par l’utilisateur, par exemple « saisir : bonjour », « cliquer avec la souris sur le bouton 1 »).
ajouter un cas de test
Crée un nouveau cas de test vide (description laissée en blanc) nommé sous le test identifié par . Affiche l’identifiant du nouveau cas de test, nécessaire à Ajouter une étape de test.
liste teststep (alias : étapes de test)
Récupère toutes les étapes du scénario de test identifié par , dans l’ordre d’exécution — avec pour chacune un identifiant et un bref résumé de l’action lisible par l’utilisateur.
décrire une étape de test
Récupère et affiche toutes les propriétés brutes de l’étape (déplacement/clic de souris, touche enfoncée/relâchée, intervalle entre deux clics, texte littéral à saisir, temps d’attente lié à l’utilisation du processeur, présence ou non d’une capture d’écran obligatoire). modifier étape de testLes noms des champs correspondent exactement aux noms des champs de sortie de cette commande.
Ajouter une étape de test
Crée une nouvelle étape entièrement vide (toutes les propriétés d’action sont nulles) sous le cas de test identifié par . Affiche l’identifiant de la nouvelle étape — enchaînez avec modifier l'étape de test pour lui attribuer une action concrète.
Modifier une étape de test
Définit l’une des dix propriétés de l’étape sur , ou la réinitialise si est la chaîne littérale null. est l’une des valeurs suivantes : mousemovex, mousemovey, mousedownbutton, mouseupbutton, keydowncode, code de relâchement de touche, double-clic, écriture de chaîne, waitcputimeoutus, waitcpupercent. Affiche ensuite tous les détails de l’étape, sous la même forme describe teststep .
L’ajout d’une capture d’écran de référence pour une étape « comparer les captures d’écran » ne figure pas parmi les dix champs disponibles : cela nécessite de pointer vers un objet de capture d’écran nouvellement créé, ce qui dépasse le champ d’application de cette commande ; veuillez utiliser l’interface utilisateur Web pour cette étape.
Exécution et résultats
exécuter le test
Met en file d’attente une nouvelle exécution de la suite de tests complète à laquelle appartient le cas de test indiqué (tous les cas de test qui en font partie, et pas seulement celui référencé) — ce qui équivaut à cliquer sur le bouton « Lancer » de l’interface web. Affiche l’identifiant de la nouvelle exécution et celui du test pour lequel elle a été mise en file d’attente. L’exécution s’effectue de manière asynchrone sur l’instance du runner qui surveille la machine virtuelle cible ; rafraîchir Liste des cas de test/« describe testcase » pour suivre sa progression.
Télécharger la capture d’écran
Enregistre la capture d’écran de référence au format PNG associée à l’étape identifiée par vers , en le remplaçant s’il existe déjà. Génère une erreur (code de sortie 1) si aucune capture d’écran n’est encore associée à l’étape.
Exemples
1. Liste des machines virtuelles
Les indicateurs globaux sont omis ci-dessous — voir Utilitaire et indicateurs globaux. Aucune chaîne d’organisation/projet n’est requise : l’arborescence Click-Test utilise des jetons plats.
$ relman list vm
- id : vm-Fq82Nx
nom : win11-chrome
en cours d'exécution : true
nombre d'instantanés : 3
- id : vm-Hn73Kp
nom : ubuntu22-firefox
en cours d'exécution : faux
nombre d'instantanés : 1
Cas particulier : en cours d'exécution : faux ne signifie pas que la machine est en panne — cela signifie simplement que le programme de surveillance qui la surveille ne l’a pas signalée comme étant opérationnelle pour le moment ; lancer un test sur un cas de test, celui-ci est toujours mis en file d’attente avec succès ; l’exécution attend simplement.
2. Création d’une étape, puis tentative de modification non valide
$ relman add teststep vc-Jm62Tx
id : vs-Rq93Ln
$ relman edit teststep vs-Rq93Ln stringwrite « hello world »
testCaseId : vc-Jm62Tx
mouseMoveX : null
mouseMoveY : null
bouton de souris enfoncé : null
mouseUpButton : null
code de touche enfoncée : null
code de touche relâchée : null
double-clic avec délai en ms : null
chaîne de caractères : hello world
délai d'attente d'utilisation du processeur en microsecondes : null
pourcentage d'utilisation du processeur en attente : null
hasRequiredScreenshot : false
$ relman edit teststep vs-Rq93Ln mousemovex forty
Erreur : le serveur a renvoyé un code HTTP 400 pour https://.../cli/teststep-edit?...
Cas particulier : les champs numériques (mousemovex, keydowncode, etc.) sont analysés de manière stricte côté serveur : une valeur non numérique telle que quarante est rejetée par un simple code HTTP 400 plutôt que d’être convertie ou ignorée. Notez également que la configuration de stringwrite ne l’a pas réinitialisé à null lorsqu’elle n’est pas concernée : chaque champ est indépendant, mais une étape est normalement censée n’effectuer qu’une seule action à la fois, par convention et non par contrainte.
3. Exécution d’un test – de manière asynchrone
$ relman run test vc-Jm62Tx
runId : vr-Wp84Zc
testId : vt-Nx72Bq
$ relman describe testcase vc-Jm62Tx
nom : Connexion avec des identifiants valides
description : ""
testId : vt-Nx72Bq
nom du test : nightly-smoke
étapes :
- id : vs-Rq93Ln
action : « type : hello world »
Cas limite : exécuter le test renvoie immédiatement un résultat dès que l’exécution est mis en file d’attente, et non une fois qu’il est terminé — il n’y a pas de champ « réussi/échoué » dans sa réponse. L’exécution s’effectue de manière asynchrone sur l’instance du runner qui surveille la machine virtuelle cible ; la récupération de describe testcase un peu plus tard est actuellement le seul moyen, depuis l’interface en ligne de commande, de vérifier s’il a réussi, et encore, uniquement de manière indirecte, en consultant l’interface utilisateur Web ou l’activité de la machine virtuelle — la sortie de cette commande ne fait pas apparaître directement les résultats de l’exécution.
← Volver al resumen de comandos de la interfaz de línea de comandos de relman
Pruebas click-test de VirtualBox
A diferencia de casi todos los demás grupos de comandos, el árbol de objetos de las pruebas de clics (máquina virtual, prueba, caso de prueba, paso de prueba, ejecución de prueba) utiliza identificadores planos y únicos a nivel global en lugar de una cadena de ámbito organización/grupo de proyectos/proyecto: un conjunto de pruebas pertenece en realidad a una compilación, no directamente a un proyecto, y un caso de prueba o un paso no tiene una cadena de antecesores natural única que el solicitante ya posea, del mismo modo que posee una cadena de organización/grupo de proyectos/proyecto antes de buscar una tarea. Por lo tanto, cada token que se muestra a continuación es autosuficiente: una vez que lo tiene, no necesita tokens antecesores.
Ruta completa desde el inicio hasta una prueba superada: lista de máquinas virtuales → list build + listar instantánea → añadir prueba → añadir caso de prueba → añadir paso de prueba + Editar paso de prueba (repetir) → ejecutar prueba → describir caso de prueba / describir paso de prueba para comprobar el progreso → descargar captura de pantalla.
Descubrimiento
enumerar máquinas virtuales (alias: vms)
Obtiene el identificador, el nombre, el estado de ejecución y el número de instantáneas de cada máquina virtual. No admite argumentos: muestra todas las máquinas virtuales de las que tiene constancia el servidor.
list build (alias: builds)
Recupera el identificador y una etiqueta de cada compilación perteneciente al proyecto identificado por . Una compilación no tiene un campo de nombre propio, por lo que la etiqueta está formada por los «mojos» de sus objetivos configurados unidos por un espacio (p. ej., «clean install»). Es necesario para pasar un token de compilación a «add test» ; este es el único comando de este grupo que se encuentra org/pg/project-scoped, ya que una compilación se encuentra directamente bajo un proyecto.
lista snapshot (alias: instantáneas)
Recupera todas las instantáneas de la máquina virtual identificada por – el ID, el nombre y la descripción. Es necesario para pasar un token de instantánea a añadir prueba.
prueba de lista (alias: pruebas)
Recupera todos los conjuntos de pruebas existentes cuya instantánea pertenezca a la máquina virtual identificada por , empezando por la más reciente: ID, nombre y nombre de la instantánea. Es necesario para pasar un token de prueba a «Añadir caso de prueba» (o para acceder a los casos de prueba de una prueba mediante list testcase).
Creación de una prueba
Añadir prueba
Crea un nuevo conjunto de pruebas denominado , vinculada a la compilación identificada por y la instantánea identificada por (cualquier máquina virtual, sin limitarse al proyecto de la compilación). Muestra el identificador de la nueva prueba, necesario para añadir caso de prueba para adjuntarle casos de prueba.
list testcase (alias: casos de prueba)
Recupera todos los casos de prueba pertenecientes a cualquier conjunto de pruebas de la máquina virtual identificada por , empezando por el más reciente: ID, nombre, ID o nombre de la prueba a la que pertenece y número de pasos.
describir caso de prueba
Recupera y muestra el nombre del caso de prueba, su descripción, el ID o nombre de la prueba a la que pertenece y cada paso (ID y un breve resumen de la acción legible para el usuario, p. ej., «tipo: hola», «clic con el botón 1 del ratón»).
añadir caso de prueba
Crea un nuevo caso de prueba vacío (con la descripción en blanco) denominado bajo la prueba identificada por . Muestra el identificador del nuevo caso de prueba, necesario para «Añadir paso de prueba».
lista teststep (alias: pasos de prueba)
Recupera todos los pasos del caso de prueba identificado por , en orden de ejecución: el identificador y un breve resumen de la acción, legible para el usuario, para cada uno.
describir paso de prueba
Recopila y muestra todas las propiedades sin procesar del paso (movimiento/clic del ratón, pulsación/soltado de tecla, intervalo entre clics dobles, texto literal que se debe escribir, tiempo de espera por uso de la CPU, si requiere una captura de pantalla). Editar paso de pruebaLos nombres de los campos coinciden exactamente con los nombres de los campos de salida de este comando.
Añadir paso de prueba
Crea un nuevo paso completamente vacío (todas las propiedades de acción son nulas) bajo el caso de prueba identificado por . Muestra el identificador del nuevo paso; a continuación, utilice Editar paso de prueba para asignarle una acción concreta.
Editar paso de prueba
Establece una de las diez propiedades del paso en , o la borra si se trata de la cadena literal nulo. es una de las siguientes: mousemovex, mousemovey, mousedownbutton, mouseupbutton, keydowncode, código de tecla suelta, dobleclic del ratón, escribir cadena, espera hasta que se agote el tiempo de espera del CPU, espera-porcentaje-CPU. A continuación, muestra todos los detalles del paso, con el mismo formato describe teststep devuelve.
Adjuntar una captura de pantalla de referencia para un paso de «comparar capturas de pantalla» no es uno de los diez campos; para ello se necesita un objeto de captura de pantalla de nueva creación al que hacer referencia, lo cual queda fuera del alcance de este comando; utilice la interfaz de usuario web para ese paso.
Ejecución y resultados
ejecutar prueba
Pone en cola una nueva ejecución de conjunto completo de pruebas a la que pertenece el caso de prueba indicado (todos los casos de prueba que forman parte de ella, no solo el que se ha referenciado); equivale a hacer clic en el botón «Reproducir» de la interfaz de usuario web. Muestra el identificador de la nueva ejecución y el identificador de la prueba para la que se ha puesto en cola. La ejecución se lleva a cabo de forma asíncrona en cualquier instancia del ejecutor que esté supervisando la máquina virtual de destino; volver a obtener listar caso de prueba/describir caso de prueba para ver su progreso.
descargar captura de pantalla
Guarda la captura de pantalla de referencia en formato PNG adjunta al paso identificado por a , sobrescribiéndola si ya existe. Da error (código de salida 1) si el paso aún no tiene ninguna captura de pantalla adjunta.
Ejemplos
1. Listado de máquinas virtuales
A continuación se omiten los indicadores globales; consulte Utilidades y indicadores globales. No se requiere cadena de organización/proyecto: todo el árbol de Click-Test utiliza tokens planos.
$ relman list vm
- id: vm-Fq82Nx
nombre: win11-chrome
en ejecución: true
número de instantáneas: 3
- id: vm-Hn73Kp
nombre: ubuntu22-firefox
en ejecución: false
número de instantáneas: 1
Caso extremo: en ejecución: falso no significa que la máquina esté averiada, sino que el ejecutor que la supervisa no ha informado de que esté activa en este momento; Al ejecutar una prueba con un caso de prueba en ella se pone en cola correctamente; la ejecución simplemente queda en espera.
2. Crear un paso y, a continuación, intentar una edición no válida
$ relman add teststep vc-Jm62Tx
id: vs-Rq93Ln
$ relman edit teststep vs-Rq93Ln stringwrite «hello world»
testCaseId: vc-Jm62Tx
mouseMoveX: nulo
mouseMoveY: nulo
botón del ratón pulsado: nulo
mouseUpButton: nulo
código de tecla pulsada: nulo
código al soltar tecla: nulo
doble clic con un intervalo en ms: nulo
cadenaEscrita: «hola mundo»
tiempo de espera del uso de la CPU en microsegundos: null
porcentaje de espera de uso de la CPU: null
Se requiere captura de pantalla: falso
$ relman edit teststep vs-Rq93Ln mousemovex forty
Error: El servidor ha respondido con un código HTTP 400 para https://.../cli/teststep-edit?...
Caso extremo: los campos numéricos (mousemovex, keydowncode, etc.) se analizan de forma estricta en el lado del servidor; un valor no numérico como cuarenta se rechaza con un código de estado HTTP 400 sin más, en lugar de ser convertido o ignorado. Tenga en cuenta también que al establecer stringwrite no lo restableció a null automáticamente cuando no guardaba relación con el resto: cada campo es independiente, pero, por convención —y no por imposición—, se espera que un paso realice normalmente una sola acción a la vez.
3. Ejecución de una prueba: de forma asíncrona
$ relman run test vc-Jm62Tx
runId: vr-Wp84Zc
testId: vt-Nx72Bq
$ relman describe testcase vc-Jm62Tx
nombre: Iniciar sesión con credenciales válidas
descripción: ""
testId: vt-Nx72Bq
nombre de la prueba: nightly-smoke
pasos:
- id: vs-Rq93Ln
acción: «tipo: hello world»
Caso extremo: ejecutar prueba devuelve el resultado inmediatamente una vez que la ejecución se ha puesta en cola, no una vez que haya finalizado; no hay ningún campo de «aprobado/suspendido» en su propia respuesta. La ejecución se lleva a cabo de forma asíncrona en cualquier instancia del ejecutor que esté supervisando la máquina virtual de destino; al volver a obtener describe testcase un poco más tarde es, actualmente, la única forma de comprobar desde la CLI si ha pasado la prueba, e incluso así solo de forma indirecta, al consultar la interfaz de usuario web o la actividad de la máquina virtual; la propia salida de este comando no muestra directamente los resultados de la ejecución.
VirtualBox 点击测试
与其他几乎所有命令组不同,点击测试对象树(虚拟机、测试、测试用例、测试步骤、测试运行)使用 扁平且全局唯一的标识符 ,而非组织/项目组/项目范围链:测试套件实际上归属于一个构建,而非直接归属于某个项目;且测试用例或测试步骤没有单一的自然父级链——调用者在查找任务之前,通常已持有组织/项目组/项目链。因此,下面的每个标识符都是自足的——一旦获得该标识符,便无需父级标识符。
从零开始到测试通过的完整路径: 列出虚拟机 → 列出构建 + 列出快照 → 添加测试 → 添加测试 → 添加测试步骤 + 编辑测试步骤 (重复) → 运行测试 → 描述测试用例 / 描述测试步骤 查看进度 → 下载截图.
探索
列出虚拟机 (别名: vms)
获取每台虚拟机的ID、名称、运行状态和快照数量。不带参数时,列出服务器已知的每台虚拟机。
list build (别名: builds)
获取属于由 标识的项目中,获取每个构建的ID及其标签。由于构建本身不包含名称字段,因此其标签即为配置目标的mojos用空格连接而成(例如“clean install”)。此操作用于向 添加测试 ——这是该组中唯一一个 属于 org/pg/project-scoped,因为构建直接位于项目之下。
list snapshot (别名: snapshots)
检索由 – id、名称和描述所标识的虚拟机所有快照。此操作用于向 添加测试.
列表测试 (别名: tests)
检索所有现有测试套件,其快照属于由 标识的虚拟机,按最新优先的顺序获取——包括 ID、名称和快照名称。此操作需向 添加测试用例 (或通过 列出测试用例).
构建测试
添加测试
创建一个名为 ,并绑定到由 ,并关联由 (任何虚拟机——不受构建项目范围限制)的快照。输出新测试的ID,该ID是 添加测试用例 用于向其添加测试用例。
list testcase (别名: testcases)
检索属于 任何 测试套件的测试用例,该虚拟机由 所标识的虚拟机,按最新测试优先的顺序获取——包括ID、名称、所属测试的ID/名称以及步骤数。
描述测试用例
检索并打印测试用例的名称、描述、所属测试的ID/名称,以及每个步骤(ID和简短的人类可读操作摘要,例如“输入:hello”、“鼠标单击按钮1”)。
添加测试用例
创建一个名为 ,并将其归属于由 . 打印新测试用例的 ID,这是 添加测试步骤.
列出测试步骤 别名: teststeps)
获取由 的测试用例中,按执行顺序获取所有测试步骤——每个步骤包含一个 ID 以及一段简短且易于理解的操作摘要。
描述测试步骤
获取并打印该步骤的每个原始属性(鼠标移动/点击、按键按下/松开、双击间隔、待输入的字面文本、CPU 使用率等待、是否需要截图)。 编辑测试步骤的字段名称与该命令的输出字段名称完全一致。
添加测试步骤
在由 标识的测试用例下创建一个全新的、完全空的步骤(所有操作属性均为 null)。打印新步骤的 ID——随后执行 编辑测试步骤 以赋予其实际操作。
编辑测试步骤
将该步骤的十个属性之一设置为 ,若 为字面量字符串 null. 属于以下情况之一: mousemovex, mousemovey, mousedownbutton, mouseupbutton, keydowncode, keyupcode, doubleclickms, 字符串写入, 等待CPU超时, waitcpupercent。随后打印该步骤的完整详细信息,格式与 描述测试步骤 返回的。
为“比较截图”步骤附加参考截图并不属于这十个字段之一——该步骤需要指向一个新创建的截图对象,这超出了此命令的范围;请使用 Web UI 处理该步骤。
运行与结果
运行测试
为 整个测试套件 (即包含该测试用例的所有测试用例,而不仅仅是被引用的那个)——这与在Web UI中点击测试的“播放”按钮效果相同。会输出新运行的ID以及其排队对应的测试ID。该运行将异步在监视目标虚拟机的任意运行器实例上执行;重新获取 列出测试用例/描述测试用例 以查看其进度。
下载截图
保存由 的步骤保存参考截图(PNG格式)到 ,如果该步骤已有截图,则覆盖原有文件。如果该步骤尚未附加截图,则会因错误而失败(退出代码 1)。
示例
1. 列出虚拟机
下文省略全局标志——请参阅 实用工具与全局标志无需组织/项目链——整个点击测试树使用扁平化令牌。
$ relman list vm
- id: vm-Fq82Nx
名称:win11-chrome
运行状态:true
快照数量: 3
- id: vm-Hn73Kp
名称:ubuntu22-firefox
运行状态:false
快照数: 1
边界情况: 运行状态:false 并不意味着机器已损坏——这只是表示当前监视该机器的运行器尚未报告其处于运行状态; 运行测试 针对该机器上的测试用例,测试仍能成功入队,运行过程只是处于等待状态。
2. 构建一个步骤,然后尝试进行无效编辑
$ relman add teststep vc-Jm62Tx
id: vs-Rq93Ln
$ relman edit teststep vs-Rq93Ln stringwrite "hello world"
testCaseId: vc-Jm62Tx
鼠标移动X坐标: null
鼠标移动Y轴: null
鼠标按下按钮: null
鼠标按钮松开:null
按键按下代码: null
keyUpCode: null
双击间隔(毫秒):null
字符串写入:hello world
等待 CPU 使用率超时(微秒):null
等待 CPU 使用率百分比: null
是否需要屏幕截图: false
$ relman edit teststep vs-Rq93Ln mousemovex forty
错误:服务器对 https://.../cli/teststep-edit?... 返回了 HTTP 400 状态码...
边界情况: 数值字段(mousemovex, keydowncode等)在服务器端会进行严格解析——像 四十 等非数值将被直接以纯HTTP 400状态码拒绝,而非被强制转换或忽略。另请注意,设置 stringwrite 并未将其重置为 null ——每个字段都是独立的,但按惯例(而非强制规定),一个步骤通常只应执行一项操作。
3. 运行测试——异步
$ relman run test vc-Jm62Tx
runId: vr-Wp84Zc
测试ID:vt-Nx72Bq
$ relman describe testcase vc-Jm62Tx
名称:使用有效凭据登录
描述: ""
测试ID:vt-Nx72Bq
测试名称:nightly-smoke
步骤:
- id: vs-Rq93Ln
操作: "类型: hello world"
边界情况: 运行测试 一旦运行进入 入队后会立即返回,而非执行完成后——其响应中不包含“通过/失败”字段。该运行任务将在监视目标虚拟机的任意运行器实例上异步执行;重新获取 描述测试用例 ,目前这是从命令行界面(CLI)判断测试是否通过的唯一方法,但即便如此也只能间接得知——需通过Web界面或查看虚拟机的活动状态来确认——该命令自身的输出并不会直接显示运行结果。