REST Resource: projects.histories.executions.steps

Ressource: Schritt

Ein Schritt stellt einen einzelnen Vorgang dar, der im Rahmen der Ausführung ausgeführt wird. Ein Schritt kann verwendet werden, um die Ausführung eines Tools darzustellen (z. B. die Ausführung eines Testläufers oder die Ausführung eines Compilers).

Schritte können sich überschneiden (z. B. können zwei Schritte dieselbe Startzeit haben, wenn einige Vorgänge parallel ausgeführt werden).

Hier ist ein Beispiel: Nehmen wir an, wir haben einen kontinuierlichen Build, der für jede Iteration einen Testläufer ausführt. Der Workflow würde wie folgt aussehen: – Benutzer erstellt eine Ausführung mit der ID 1 – Benutzer erstellt einen TestExecutionStep mit der ID 100 für Ausführung 1 – Benutzer aktualisiert TestExecutionStep mit der ID 100, um ein rohes XML-Protokoll hinzuzufügen + der Dienst analysiert die XML-Protokolle und gibt einen TestExecutionStep mit zurück aktualisierte Testergebnisse. – Der Benutzer aktualisiert den Status von TestExecutionStep mit der ID 100 auf COMPLETE

Ein Schritt kann aktualisiert werden, bis sein Status auf ABGESCHLOSSEN gesetzt wird. Ab diesem Zeitpunkt wird er unveränderlich.

JSON-Darstellung
{
  "stepId": string,
  "creationTime": {
    object (Timestamp)
  },
  "completionTime": {
    object (Timestamp)
  },
  "name": string,
  "description": string,
  "state": enum (State),
  "outcome": {
    object (Outcome)
  },
  "hasImages": boolean,
  "labels": {
    string: string,
    ...
  },
  "dimensionValue": {
    string: string,
    ...
  },
  "runDuration": {
    object (Duration)
  },
  "deviceUsageDuration": {
    object (Duration)
  },
  "multiStep": {
    object (MultiStep)
  },

  // Union field step can be only one of the following:
  "testExecutionStep": {
    object (TestExecutionStep)
  },
  "toolExecutionStep": {
    object (ToolExecutionStep)
  }
  // End of list of possible types for union field step.
}
Felder
stepId

string

Eine eindeutige Kennung innerhalb einer Ausführung für diesen Schritt.

Gibt INVALID_ARGUMENT zurück, wenn dieses Feld vom Aufrufer festgelegt oder überschrieben wird.

  • Als Antwort: immer gesetzt
  • In der Erstellungs-/Aktualisierungsanforderung: nie festgelegt
creationTime

object ( Timestamp )

Der Zeitpunkt, zu dem der Schritt erstellt wurde.

  • Als Antwort: immer gesetzt
  • In der Erstellungs-/Aktualisierungsanforderung: nie festgelegt
completionTime

object ( Timestamp )

Der Zeitpunkt, zu dem der Schrittstatus auf „Abgeschlossen“ gesetzt wurde.

Dieser Wert wird automatisch festgelegt, wenn der Status in COMPLETE übergeht.

  • Als Antwort: Wird gesetzt, wenn der Ausführungsstatus COMPLETE ist.
  • In der Erstellungs-/Aktualisierungsanforderung: nie festgelegt
name

string

Ein kurzer, für Menschen lesbarer Name, der in der Benutzeroberfläche angezeigt wird. Maximal 100 Zeichen. Beispiel: Sauberer Build

Beim Erstellen eines neuen Schritts wird ein PRECONDITION_FAILED zurückgegeben, wenn dieser seinen Namen und Dimensionswert mit einem vorhandenen Schritt teilt. Wenn zwei Schritte eine ähnliche Aktion darstellen, aber unterschiedliche Dimensionswerte haben, sollten sie denselben Namen haben. Wenn beispielsweise derselbe Testsatz auf zwei verschiedenen Plattformen ausgeführt wird, sollten die beiden Schritte denselben Namen haben.

  • Als Antwort: immer gesetzt
  • In Anforderung erstellen: immer festlegen
  • In Update-Anfrage: nie gesetzt
description

string

Eine Beschreibung dieses Tools. Beispiel: mvn clean package -D skipTests=true

  • Als Antwort: vorhanden, wenn durch Erstellungs-/Aktualisierungsanforderung festgelegt
  • In der Erstellungs-/Aktualisierungsanfrage: optional
state

enum ( State )

Der Ausgangszustand ist IN_PROGRESS. Die einzigen zulässigen Zustandsübergänge sind * IN_PROGRESS -> COMPLETE

Wenn ein ungültiger Übergang angefordert wird, wird ein PRECONDITION_FAILED zurückgegeben.

Es ist zulässig, einen Schritt mit dem Status „ABGESCHLOSSEN“ zu erstellen. Der Status kann nur einmal auf COMPLETE gesetzt werden. Eine PRECONDITION_FAILED wird zurückgegeben, wenn der Status mehrmals auf COMPLETE gesetzt wird.

  • Als Antwort: immer gesetzt
  • In der Erstellungs-/Aktualisierungsanfrage: optional
outcome

object ( Outcome )

Einstufung des Ergebnisses, beispielsweise in ERFOLGREICH oder FEHLER

  • Als Antwort: vorhanden, wenn durch Erstellungs-/Aktualisierungsanforderung festgelegt
  • In der Erstellungs-/Aktualisierungsanfrage: optional
hasImages

boolean

Ob es sich bei den Ausgaben dieses Schritts um Bilder handelt, deren Miniaturansichten mit „thumbnails.list“ abgerufen werden können.

  • Als Antwort: immer gesetzt
  • In der Erstellungs-/Aktualisierungsanforderung: nie festgelegt
labels

map (key: string, value: string)

Beliebige, vom Benutzer bereitgestellte Schlüssel/Wert-Paare, die dem Schritt zugeordnet sind.

Benutzer sind dafür verantwortlich, den Schlüssel-Namespace so zu verwalten, dass Schlüssel nicht versehentlich kollidieren.

Ein INVALID_ARGUMENT wird zurückgegeben, wenn die Anzahl der Beschriftungen 100 überschreitet oder wenn die Länge eines der Schlüssel oder Werte 100 Zeichen überschreitet.

  • Als Antwort: immer gesetzt
  • In der Erstellungsanfrage: optional
  • In Update-Anfrage: optional; Jedes neue Schlüssel/Wert-Paar wird der Karte hinzugefügt und jeder neue Wert für einen vorhandenen Schlüssel aktualisiert den Wert dieses Schlüssels

Ein Objekt, das eine Liste von "key": value Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" } .

dimensionValue

map (key: string, value: string)

Wenn für die Ausführung, die diesen Schritt enthält, eine dimension_definition festgelegt ist, kann das Kind in diesem Feld die Werte der Dimensionen angeben.

Die Schlüssel müssen genau mit der dimension_definition der Ausführung übereinstimmen.

Wenn die Ausführung beispielsweise dimension_definition = ['attempt', 'device'] hat, muss ein Schritt Werte für diese Dimensionen definieren, z. dimensionValue = ['attempt': '1', 'device': 'Nexus 6']

Wenn ein Schritt nicht an einer Dimension der Matrix teilnimmt, sollte der Wert für diese Dimension eine leere Zeichenfolge sein. Wenn beispielsweise einer der Tests von einem Läufer ausgeführt wird, der keine Wiederholungsversuche unterstützt, könnte der Schritt dimensionValue = ['attempt': '', 'device': 'Nexus 6'] haben.

Wenn der Schritt an keiner Dimension der Matrix beteiligt ist, bleibt dimensionValue möglicherweise nicht festgelegt.

Eine PRECONDITION_FAILED wird zurückgegeben, wenn einer der Schlüssel in der Dimensionsdefinition der Ausführung nicht vorhanden ist.

Eine PRECONDITION_FAILED wird zurückgegeben, wenn ein anderer Schritt in dieser Ausführung bereits denselben Namen und denselben Dimensionswert hat, sich jedoch in anderen Datenfeldern unterscheidet, z. B. wenn das Schrittfeld unterschiedlich ist.

Eine PRECONDITION_FAILED wird zurückgegeben, wenn dimensionValue festgelegt ist und in der Ausführung eine dimension_definition vorhanden ist, die nicht als einer der Schlüssel angegeben ist.

  • Als Antwort: vorhanden, wenn durch Erstellen festgelegt
  • In der Erstellungsanfrage: optional
  • In Update-Anfrage: nie gesetzt

Ein Objekt, das eine Liste von "key": value Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" } .

runDuration

object ( Duration )

Wie lange hat es gedauert, bis dieser Schritt ausgeführt wurde?

Wenn diese Option nicht festgelegt ist, wird sie auf die Differenz zwischen „creationTime“ und „CompletionTime“ festgelegt, wenn der Schritt auf den COMPLETE-Status gesetzt wird. In einigen Fällen ist es sinnvoll, diesen Wert separat festzulegen: Wenn beispielsweise ein Schritt erstellt wird, der Vorgang, den er darstellt, jedoch einige Minuten in der Warteschlange steht, bevor er ausgeführt wird, wäre es sinnvoll, die in der Warteschlange verbrachte Zeit nicht einzubeziehen Laufdauer.

PRECONDITION_FAILED wird zurückgegeben, wenn versucht wird, eine runDuration für einen Schritt festzulegen, für den dieses Feld bereits festgelegt ist.

  • Als Antwort: vorhanden, falls zuvor festgelegt; immer im COMPLETE-Schritt vorhanden
  • In der Erstellungsanfrage: optional
  • In Update-Anfrage: optional
deviceUsageDuration

object ( Duration )

Wie viel Geräteressource zur Durchführung des Tests verwendet wird.

Dabei handelt es sich um die Gerätenutzung, die zu Abrechnungszwecken verwendet wird. Sie unterscheidet sich von runDuration. Beispielsweise wird bei einem Infrastrukturausfall die Gerätenutzung nicht in Rechnung gestellt.

PRECONDITION_FAILED wird zurückgegeben, wenn versucht wird, „device_usage“ für einen Schritt festzulegen, für den dieses Feld bereits festgelegt ist.

  • Als Antwort: vorhanden, falls zuvor festgelegt.
  • In der Erstellungsanfrage: optional
  • In Update-Anfrage: optional
multiStep

object ( MultiStep )

Details, wenn mehrere Schritte mit derselben Konfiguration als Gruppe ausgeführt werden. Anhand dieser Details kann identifiziert werden, zu welcher Gruppe dieser Schritt gehört. Außerdem wird der „primäre Schritt“ der Gruppe identifiziert, der alle Gruppenmitglieder indiziert.

  • Als Antwort: vorhanden, falls zuvor festgelegt.
  • In der Anforderung erstellen: optional, legen Sie fest, ob dieser Schritt mehr als einmal ausgeführt wurde.
  • In Update-Anfrage: optional

Union- step .

step kann nur einer der folgenden sein:

testExecutionStep

object ( TestExecutionStep )

Eine Ausführung eines Testläufers.

toolExecutionStep

object ( ToolExecutionStep )

Eine Ausführung eines Tools (wird für Schritte verwendet, die wir nicht explizit unterstützen).

Testausführungsschritt

Ein Schritt, der das Ausführen von Tests darstellt.

Es akzeptiert Ant-Junit-XML-Dateien, die vom Dienst in strukturierte Testergebnisse analysiert werden. XML-Dateipfade werden aktualisiert, um weitere Dateien anzuhängen, sie können jedoch nicht gelöscht werden.

Benutzer können Testergebnisse auch manuell hinzufügen, indem sie das Feld test_result verwenden.

JSON-Darstellung
{
  "testSuiteOverviews": [
    {
      object (TestSuiteOverview)
    }
  ],
  "toolExecution": {
    object (ToolExecution)
  },
  "testIssues": [
    {
      object (TestIssue)
    }
  ],
  "testTiming": {
    object (TestTiming)
  }
}
Felder
testSuiteOverviews[]

object ( TestSuiteOverview )

Liste der Inhalte der Testsuite-Übersicht. Dies kann vom Server aus dem xUnit-XML-Protokoll analysiert oder direkt vom Benutzer hochgeladen werden. Diese Referenzen sollten nur aufgerufen werden, wenn die Testsuiten vollständig analysiert oder hochgeladen wurden.

Die maximal zulässige Anzahl von Testsuite-Übersichten pro Schritt beträgt 1000.

  • Als Antwort: immer gesetzt
  • In der Erstellungsanfrage: optional
  • In Aktualisierungsanforderung: niemals (verwenden Sie stattdessen die benutzerdefinierte Methode „publishXunitXmlFiles“)
toolExecution

object ( ToolExecution )

Stellt die Ausführung des Testläufers dar.

Der Exit-Code dieses Tools wird verwendet, um festzustellen, ob der Test bestanden wurde.

  • Als Antwort: immer gesetzt
  • In der Erstellungs-/Aktualisierungsanfrage: optional
testIssues[]

object ( TestIssue )

Während der Testausführung beobachtete Probleme.

Wenn beispielsweise die zu testende mobile App während des Tests abstürzt, können die Fehlermeldung und der Stack-Trace-Inhalt hier aufgezeichnet werden, um das Debuggen zu unterstützen.

  • Als Antwort: vorhanden, wenn durch Erstellen oder Aktualisieren festgelegt
  • In der Erstellungs-/Aktualisierungsanfrage: optional
testTiming

object ( TestTiming )

Der zeitliche Ablauf der Testausführung.

  • Als Antwort: vorhanden, wenn durch Erstellen oder Aktualisieren festgelegt
  • In der Erstellungs-/Aktualisierungsanfrage: optional

Werkzeugausführung

Eine Ausführung eines beliebigen Werkzeugs. Dabei kann es sich um einen Testläufer oder ein Tool handeln, das Artefakte kopiert oder Code bereitstellt.

JSON-Darstellung
{
  "commandLineArguments": [
    string
  ],
  "toolLogs": [
    {
      object (FileReference)
    }
  ],
  "exitCode": {
    object (ToolExitCode)
  },
  "toolOutputs": [
    {
      object (ToolOutputReference)
    }
  ]
}
Felder
commandLineArguments[]

string

Die vollständige tokenisierte Befehlszeile einschließlich des Programmnamens (entspricht argv in einem C-Programm).

  • Als Antwort: vorhanden, wenn durch die Erstellungsanforderung festgelegt
  • In der Erstellungsanfrage: optional
  • In Update-Anfrage: nie gesetzt
toolLogs[]

object ( FileReference )

Verweise auf beliebige Nur-Text-Protokolle geben die Ausführung des Tools aus.

Dieses Feld kann vor dem Beenden des Tools festgelegt werden, um während der Ausführung des Tools Zugriff auf eine Live-Ansicht der Protokolle zu haben.

Die maximal zulässige Anzahl von Werkzeugprotokollen pro Schritt beträgt 1000.

  • Als Antwort: vorhanden, wenn durch Erstellungs-/Aktualisierungsanforderung festgelegt
  • In der Erstellungsanfrage: optional
  • In der Aktualisierungsanforderung: optional, jeder angegebene Wert wird an die vorhandene Liste angehängt
exitCode

object ( ToolExitCode )

Exit-Code für die Toolausführung. Dieses Feld wird gesetzt, sobald das Tool beendet wurde.

  • Als Antwort: vorhanden, wenn durch Erstellungs-/Aktualisierungsanforderung festgelegt
  • In der Erstellungsanfrage: optional
  • In der Aktualisierungsanforderung: optional wird ein FAILED_PRECONDITION-Fehler zurückgegeben, wenn bereits ein ExitCode festgelegt ist.
toolOutputs[]

object ( ToolOutputReference )

Verweise auf undurchsichtige Dateien eines beliebigen Formats, die von der Tool-Ausführung ausgegeben werden.

Die maximal zulässige Anzahl von Werkzeugausgängen pro Schritt beträgt 1000.

  • Als Antwort: vorhanden, wenn durch Erstellungs-/Aktualisierungsanforderung festgelegt
  • In der Erstellungsanfrage: optional
  • In der Aktualisierungsanforderung: optional, jeder angegebene Wert wird an die vorhandene Liste angehängt

ToolExitCode

Exit-Code aus einer Tool-Ausführung.

JSON-Darstellung
{
  "number": integer
}
Felder
number

integer

Exit-Code für die Toolausführung. Ein Wert von 0 bedeutet, dass die Ausführung erfolgreich war.

  • Als Antwort: immer gesetzt
  • In der Erstellungs-/Aktualisierungsanfrage: immer festgelegt

Testausgabe

Während einer Testausführung wurde ein Problem festgestellt.

JSON-Darstellung
{
  "errorMessage": string,
  "stackTrace": {
    object (StackTrace)
  },
  "warning": {
    object (Any)
  },
  "severity": enum (Severity),
  "type": enum (Type),
  "category": enum (Category)
}
Felder
errorMessage

string

Eine kurze, für Menschen lesbare Nachricht, die das Problem beschreibt. Erforderlich.

stackTrace
(deprecated)

object ( StackTrace )

Veraltet zugunsten von Stack-Trace-Feldern innerhalb bestimmter Warnungen.

warning

object ( Any )

Warnmeldung mit zusätzlichen Details zum Problem. Sollte immer eine Nachricht von com.google.devtools.toolresults.v1.warnings sein

severity

enum ( Severity )

Schwere des Problems. Erforderlich.

type

enum ( Type )

Art der Ausgabe. Erforderlich.

category

enum ( Category )

Problemkategorie. Erforderlich.

Beliebig

Any enthält eine beliebige serialisierte Protokollpuffernachricht zusammen mit einer URL, die den Typ der serialisierten Nachricht beschreibt.

Die Protobuf-Bibliothek bietet Unterstützung zum Packen/Entpacken von Any-Werten in Form von Dienstprogrammfunktionen oder zusätzlich generierten Methoden des Any-Typs.

Beispiel 1: Packen und Entpacken einer Nachricht in C++.

Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
  ...
}

Beispiel 2: Packen und entpacken Sie eine Nachricht in Java.

Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
  foo = any.unpack(Foo.class);
}

Beispiel 3: Packen und entpacken Sie eine Nachricht in Python.

foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
  any.Unpack(foo)
  ...

Beispiel 4: Packen und entpacken Sie eine Nachricht in Go

 foo := &pb.Foo{...}
 any, err := ptypes.MarshalAny(foo)
 ...
 foo := &pb.Foo{}
 if err := ptypes.UnmarshalAny(any, foo); err != nil {
   ...
 }

Die von der Protobuf-Bibliothek bereitgestellten Packmethoden verwenden standardmäßig „type.googleapis.com/full.type.name“ als Typ-URL und die Entpackmethoden verwenden nur den vollständig qualifizierten Typnamen nach dem letzten „/“ in der Typ-URL. Beispielsweise ergibt „foo.bar.com/x/yz“ den Typnamen „yz“.

JSON

Die JSON-Darstellung eines Any Werts verwendet die reguläre Darstellung der deserialisierten, eingebetteten Nachricht mit einem zusätzlichen Feld @type , das die Typ-URL enthält. Beispiel:

package google.profile;
message Person {
  string first_name = 1;
  string last_name = 2;
}

{
  "@type": "type.googleapis.com/google.profile.Person",
  "firstName": <string>,
  "lastName": <string>
}

Wenn der eingebettete Nachrichtentyp bekannt ist und über eine benutzerdefinierte JSON-Darstellung verfügt, wird diese Darstellung eingebettet, indem zusätzlich zum @type Feld ein value hinzugefügt wird, der den benutzerdefinierten JSON enthält. Beispiel (für die Nachricht google.protobuf.Duration ):

{
  "@type": "type.googleapis.com/google.protobuf.Duration",
  "value": "1.212s"
}
JSON-Darstellung
{
  "typeUrl": string,
  "value": string
}
Felder
typeUrl

string

Ein URL/Ressourcenname, der den Typ der serialisierten Protokollpuffernachricht eindeutig identifiziert. Diese Zeichenfolge muss mindestens ein „/“-Zeichen enthalten. Das letzte Segment des URL-Pfads muss den vollständig qualifizierten Namen des Typs darstellen (wie in path/google.protobuf.Duration ). Der Name sollte in kanonischer Form vorliegen (z. B. wird das führende „.“ nicht akzeptiert).

In der Praxis kompilieren Teams in der Regel alle Typen in die Binärdatei vor, die sie voraussichtlich im Kontext von Any verwenden werden. Für URLs, die das Schema http , https oder kein Schema verwenden, kann man jedoch optional einen Typserver einrichten, der Typ-URLs wie folgt Nachrichtendefinitionen zuordnet:

  • Wenn kein Schema angegeben ist, wird https angenommen.
  • Ein HTTP-GET für die URL muss einen google.protobuf.Type Wert im Binärformat liefern oder einen Fehler erzeugen.
  • Anwendungen dürfen Suchergebnisse basierend auf der URL zwischenspeichern oder sie in eine Binärdatei vorkompilieren lassen, um eine Suche zu vermeiden. Daher muss die Binärkompatibilität bei Änderungen an Typen gewahrt bleiben. (Verwenden Sie versionierte Typnamen, um wichtige Änderungen zu verwalten.)

Hinweis: Diese Funktionalität ist derzeit in der offiziellen Protobuf-Version nicht verfügbar und wird nicht für Typ-URLs verwendet, die mit type.googleapis.com beginnen.

Andere Schemata als http , https (oder das leere Schema) können mit implementierter spezifischer Semantik verwendet werden.

value

string ( bytes format)

Muss ein gültiger serialisierter Protokollpuffer des oben angegebenen Typs sein.

Eine Base64-codierte Zeichenfolge.

Schwere

Schwere der Probleme.

Aufzählungen
unspecifiedSeverity Standardmäßiger, nicht angegebener Schweregrad. Verwende nicht. Nur zur Versionierung.
info Kein kritisches Problem, das Benutzern einige Informationen zum Testlauf bietet.
suggestion Nicht kritisches Problem, das den Benutzern einige Hinweise zur Verbesserung ihres Testerlebnisses gibt, z. B. die Empfehlung, Game Loops zu verwenden.
warning Möglicherweise kritisches Problem.
severe Kritisches Problem.

Typ

Arten von Problemen.

Aufzählungen
unspecifiedType Standardmäßiger, nicht spezifizierter Typ. Verwende nicht. Nur zur Versionierung.
fatalException Das Problem ist eine fatale Ausnahme.
nativeCrash Das Problem ist ein nativer Absturz.
anr Das Problem ist ein ANR-Absturz.
unusedRoboDirective Das Problem ist eine ungenutzte Robo-Anweisung.
compatibleWithOrchestrator Es handelt sich um einen Vorschlag zur Verwendung des Orchestrators.
launcherActivityNotFound Problem beim Finden einer Launcher-Aktivität
startActivityNotFound Problem beim Lösen einer vom Benutzer bereitgestellten Absicht, eine Aktivität zu starten
incompleteRoboScriptExecution Ein Robo-Skript wurde nicht vollständig ausgeführt.
completeRoboScriptExecution Ein Robo-Skript wurde vollständig und erfolgreich ausgeführt.
failedToInstall Das APK konnte nicht installiert werden.
nonSdkApiUsageViolation Die App hat auf eine Nicht-SDK-API zugegriffen.
nonSdkApiUsageReport App hat auf eine Nicht-SDK-API zugegriffen (neuer detaillierter Bericht)
encounteredNonAndroidUiWidgetScreen Der Robo-Crawl hat mindestens einen Bildschirm mit Elementen gefunden, die keine Android-UI-Widgets sind.
encounteredLoginScreen Beim Robo-Crawl ist mindestens ein möglicher Anmeldebildschirm aufgetreten.
performedGoogleLogin Robo hat sich bei Google angemeldet.
iosException Die iOS-App ist mit einer Ausnahme abgestürzt.
iosCrash Die iOS-App ist ausnahmslos abgestürzt (z. B. abgestürzt).
performedMonkeyActions Beim Robo-Crawl wurden einige Affenaktionen ausgeführt.
usedRoboDirective Beim Robo-Crawl wurde eine Robo-Anweisung verwendet.
usedRoboIgnoreDirective Robo-Crawl nutzte eine Robo-Anweisung, um ein UI-Element zu ignorieren.
insufficientCoverage Robo hat einige potenziell wichtige Teile der App nicht gecrawlt.
inAppPurchases Beim Robo-Crawl waren einige In-App-Käufe erforderlich.
crashDialogError Während der Testausführung wurde ein Absturzdialog erkannt
uiElementsTooDeep Die Tiefe des UI-Elements ist größer als der Schwellenwert
blankScreen Beim Robo-Crawl wird ein leerer Bildschirm gefunden
overlappingUiElements Überlappende UI-Elemente werden im Robo-Crawl gefunden
unityException Es wurde eine nicht abgefangene Unity-Ausnahme erkannt (diese Apps führen nicht zum Absturz).
deviceOutOfMemory Es wurde festgestellt, dass dem Gerät nicht mehr genügend Speicher zur Verfügung steht
logcatCollectionError Beim Sammeln von Logcat wurden Probleme festgestellt
detectedAppSplashScreen Robo hat einen von der App bereitgestellten Begrüßungsbildschirm erkannt (im Gegensatz zum Begrüßungsbildschirm des Android-Betriebssystems).

Kategorie

Kategorien von Problemen.

Aufzählungen
unspecifiedCategory Standardmäßig nicht spezifizierte Kategorie. Verwende nicht. Nur zur Versionierung.
common Das Problem ist nicht spezifisch für eine bestimmte Testart (z. B. ein nativer Absturz).
robo Das Problem betrifft speziell Robo Run.

TestTiming

Der Testzeitpunkt wird in verschiedene Phasen unterteilt.

JSON-Darstellung
{
  "testProcessDuration": {
    object (Duration)
  }
}
Felder
testProcessDuration

object ( Duration )

Wie lange es gedauert hat, den Testvorgang auszuführen.

  • Als Antwort: vorhanden, falls zuvor festgelegt.
  • In der Erstellungs-/Aktualisierungsanfrage: optional

ToolExecutionStep

Allgemeiner Toolschritt zur Verwendung für Binärdateien, die wir nicht explizit unterstützen. Beispiel: Führen Sie cp aus, um Artefakte von einem Ort an einen anderen zu kopieren.

JSON-Darstellung
{
  "toolExecution": {
    object (ToolExecution)
  }
}
Felder
toolExecution

object ( ToolExecution )

Eine Tool-Ausführung.

  • Als Antwort: vorhanden, wenn durch Erstellungs-/Aktualisierungsanforderung festgelegt
  • In der Erstellungs-/Aktualisierungsanfrage: optional

MultiStep

Details, wenn mehrere Schritte mit derselben Konfiguration als Gruppe ausgeführt werden.

JSON-Darstellung
{
  "primaryStepId": string,
  "multistepNumber": integer,
  "primaryStep": {
    object (PrimaryStep)
  }
}
Felder
primaryStepId

string

Schritt-ID des primären (ursprünglichen) Schritts, bei dem es sich möglicherweise um diesen Schritt handelt.

multistepNumber

integer

Eindeutiger int, der jedem Schritt zugewiesen wird. Der Bereich reicht von 0 (einschließlich) bis zur Gesamtzahl der Schritte (exklusiv). Der primäre Schritt ist 0.

primaryStep

object ( PrimaryStep )

Vorhanden, wenn es sich um einen primären (ursprünglichen) Schritt handelt.

PrimaryStep

Speichert den Rollup-Teststatus mehrerer Schritte, die als Gruppe ausgeführt wurden, sowie das Ergebnis jedes einzelnen Schritts.

JSON-Darstellung
{
  "rollUp": enum (OutcomeSummary),
  "individualOutcome": [
    {
      object (IndividualOutcome)
    }
  ]
}
Felder
rollUp

enum ( OutcomeSummary )

Rollup-Teststatus mehrerer Schritte, die mit derselben Konfiguration als Gruppe ausgeführt wurden.

individualOutcome[]

object ( IndividualOutcome )

Schritt-ID und Ergebnis jedes einzelnen Schritts.

Individuelles Ergebnis

Schritt-ID und Ergebnis jedes einzelnen Schritts, der als Gruppe mit anderen Schritten mit derselben Konfiguration ausgeführt wurde.

JSON-Darstellung
{
  "stepId": string,
  "outcomeSummary": enum (OutcomeSummary),
  "multistepNumber": integer,
  "runDuration": {
    object (Duration)
  }
}
Felder
stepId

string

outcomeSummary

enum ( OutcomeSummary )

multistepNumber

integer

Eindeutiger int, der jedem Schritt zugewiesen wird. Der Bereich reicht von 0 (einschließlich) bis zur Gesamtzahl der Schritte (exklusiv). Der primäre Schritt ist 0.

runDuration

object ( Duration )

Wie lange hat es gedauert, bis dieser Schritt ausgeführt wurde?

Methoden

accessibilityClusters

Listet Barrierefreiheitscluster für einen bestimmten Schritt auf

Kann einen der folgenden kanonischen Fehlercodes zurückgeben:

  • PERMISSION_DENIED – wenn der Benutzer nicht berechtigt ist, das Projekt zu lesen
  • INVALID_ARGUMENT – wenn die Anfrage fehlerhaft ist
  • FAILED_PRECONDITION – wenn ein Argument in der Anfrage ungültig ist; z.B

create

Erstellt einen Schritt.

get

Erhält einen Schritt.

getPerfMetricsSummary

Ruft eine PerfMetricsSummary ab.

list

Listet Schritte für eine bestimmte Ausführung auf.

patch

Aktualisiert einen vorhandenen Schritt mit der bereitgestellten Teilentität.

publishXunitXmlFiles

Veröffentlichen Sie XML-Dateien in einem vorhandenen Schritt.