- Recurso: Etapa
- TestExecutionStep
- ToolExecution
- ToolExitCode
- TestIssue
- Qualquer
- Gravidade
- Tipo
- Categoria
- TestTiming
- ToolExecutionStep
- Várias Etapas
- Etapa Primária
- Resultado individual
- Métodos
Recurso: Etapa
Uma Etapa representa uma única operação executada como parte da Execução. Uma etapa pode ser usada para representar a execução de uma ferramenta (por exemplo, uma execução de executor de teste ou uma execução de um compilador).
As etapas podem se sobrepor (por exemplo, duas etapas podem ter a mesma hora de início se algumas operações forem feitas em paralelo).
Aqui está um exemplo, vamos considerar que temos uma compilação contínua executando um executor de teste para cada iteração. O fluxo de trabalho seria semelhante a: - o usuário cria uma Execution com id 1 - o usuário cria um TestExecutionStep com id 100 para Execution 1 - o usuário atualiza TestExecutionStep com id 100 para adicionar um log xml bruto + o serviço analisa os logs xml e retorna um TestExecutionStep com TestResult(s) atualizado(s). - usuário atualiza o status de TestExecutionStep com id 100 para COMPLETE
Um Step pode ser atualizado até que seu estado seja definido como COMPLETE, ponto em que ele se torna imutável.
representação JSON |
---|
{ "stepId": string, "creationTime": { object ( |
Campos | |
---|---|
stepId | Um identificador exclusivo em uma execução para esta etapa. Retorna INVALID_ARGUMENT se este campo for definido ou substituído pelo chamador.
|
creationTime | A hora em que a etapa foi criada.
|
completionTime | A hora em que o status da etapa foi definido como concluído. Este valor será definido automaticamente quando o estado mudar para COMPLETE.
|
name | Um nome curto legível por humanos para exibir na IU. Máximo de 100 caracteres. Por exemplo: compilação limpa Um PRECONDITION_FAILED será retornado ao criar uma nova etapa se ela compartilhar seu nome e dimensionValue com uma etapa existente. Se duas etapas representam uma ação semelhante, mas possuem valores de dimensão diferentes, elas devem compartilhar o mesmo nome. Por exemplo, se o mesmo conjunto de testes for executado em duas plataformas diferentes, as duas etapas devem ter o mesmo nome.
|
description | Uma descrição desta ferramenta Por exemplo: mvn clean package -D skipTests=true
|
state | O estado inicial é IN_PROGRESS. As únicas transições de estado legais são * IN_PROGRESS -> COMPLETE Um PRECONDITION_FAILED será retornado se uma transição inválida for solicitada. É válido criar a Etapa com o estado definido como COMPLETO. O estado só pode ser definido como COMPLETE uma vez. Um PRECONDITION_FAILED será retornado se o estado for definido como COMPLETE várias vezes.
|
outcome | Classificação do resultado, por exemplo em SUCESSO ou FALHA
|
hasImages | Se alguma das saídas desta etapa são imagens cujas miniaturas podem ser obtidas com thumbnails.list.
|
labels | Pares arbitrários de chave/valor fornecidos pelo usuário associados à etapa. Os usuários são responsáveis por gerenciar o namespace da chave de modo que as chaves não colidam acidentalmente. Um INVALID_ARGUMENT será retornado se o número de rótulos exceder 100 ou se o comprimento de qualquer uma das chaves ou valores exceder 100 caracteres.
Um objeto contendo uma lista de |
dimensionValue | Se a execução que contém esta etapa tiver qualquer conjunto dimension_definition, esse campo permitirá que o filho especifique os valores das dimensões. As chaves devem corresponder exatamente à dimension_definition da execução. Por exemplo, se a execução tiver Se uma etapa não participa de uma dimensão da matriz, o valor dessa dimensão deve ser uma string vazia. Por exemplo, se um dos testes for executado por um executor que não suporta novas tentativas, a etapa pode ter Se a etapa não participar de nenhuma dimensão da matriz, ela pode deixar dimensionValue sem definição. Um PRECONDITION_FAILED será retornado se alguma das chaves não existir na dimension_definition da execução. Um PRECONDITION_FAILED será retornado se outra etapa nesta execução já tiver o mesmo nome e dimensionValue, mas diferir em outros campos de dados, por exemplo, o campo da etapa é diferente. Um PRECONDITION_FAILED será retornado se dimensionValue for definido e houver uma dimension_definition na execução que não seja especificada como uma das chaves.
Um objeto contendo uma lista de |
runDuration | Quanto tempo levou para esta etapa ser executada. Se não for definido, será definido como a diferença entre CreationTime e CompletionTime quando a etapa for definida como o estado COMPLETE. Em alguns casos, é apropriado definir este valor separadamente: Por exemplo, se uma etapa é criada, mas a operação que ela representa fica na fila por alguns minutos antes de ser executada, seria apropriado não incluir o tempo gasto na fila em sua runDuration. PRECONDITION_FAILED será retornado se alguém tentar definir um runDuration em uma etapa que já tenha esse campo definido.
|
deviceUsageDuration | Quanto o recurso do dispositivo é usado para realizar o teste. Este é o uso do dispositivo usado para fins de cobrança, que é diferente do runDuration, por exemplo, falha de infraestrutura não será cobrado pelo uso do dispositivo. PRECONDITION_FAILED será retornado se alguém tentar definir um device_usage em uma etapa que já tenha esse campo definido.
|
multiStep | Detalhes quando várias etapas são executadas com a mesma configuração de um grupo. Esses detalhes podem ser usados para identificar a qual grupo essa etapa faz parte. Ele também identifica a 'etapa primária' dos grupos, que indexa todos os membros do grupo.
|
| |
testExecutionStep | Uma execução de um executor de teste. |
toolExecutionStep | Uma execução de uma ferramenta (usada para etapas não compatíveis explicitamente). |
TestExecutionStep
Uma etapa que representa testes em execução.
Ele aceita arquivos xml ant-junit que serão analisados em resultados de teste estruturados pelo serviço. Os caminhos de arquivo XML são atualizados para anexar mais arquivos, mas não podem ser excluídos.
Os usuários também podem adicionar resultados de teste manualmente usando o campo test_result.
representação JSON |
---|
{ "testSuiteOverviews": [ { object ( |
Campos | |
---|---|
testSuiteOverviews[] | Lista de conteúdos de visão geral do conjunto de testes. Isso pode ser analisado do log xUnit XML pelo servidor ou carregado diretamente pelo usuário. Essas referências só devem ser chamadas quando os conjuntos de teste forem totalmente analisados ou carregados. O número máximo permitido de visões gerais do conjunto de testes por etapa é 1.000.
|
toolExecution | Representa a execução do executor de teste. O código de saída desta ferramenta será usado para determinar se o teste passou.
|
testIssues[] | Problemas observados durante a execução do teste. Por exemplo, se o aplicativo móvel em teste travar durante o teste, a mensagem de erro e o conteúdo do rastreamento de pilha podem ser registrados aqui para auxiliar na depuração.
|
testTiming | A interrupção do tempo da execução do teste.
|
ToolExecution
Uma execução de uma ferramenta arbitrária. Pode ser um executor de teste ou uma ferramenta copiando artefatos ou implementando código.
representação JSON |
---|
{ "commandLineArguments": [ string ], "toolLogs": [ { object ( |
Campos | |
---|---|
commandLineArguments[] | A linha de comando tokenizada completa, incluindo o nome do programa (equivalente a argv em um programa C).
|
toolLogs[] | Referências a quaisquer logs de texto simples geram a execução da ferramenta. Este campo pode ser definido antes da saída da ferramenta para poder ter acesso a uma visualização ao vivo dos logs enquanto a ferramenta está em execução. O número máximo permitido de registros de ferramenta por etapa é 1000.
|
exitCode | Código de saída de execução da ferramenta. Este campo será definido assim que a ferramenta sair.
|
toolOutputs[] | Referências a arquivos opacos de qualquer formato gerados pela execução da ferramenta. O número máximo permitido de saídas de ferramenta por etapa é 1000.
|
ToolExitCode
Código de saída de uma execução de ferramenta.
representação JSON |
---|
{ "number": integer } |
Campos | |
---|---|
number | Código de saída de execução da ferramenta. Um valor de 0 significa que a execução foi bem-sucedida.
|
TestIssue
Um problema detectado durante a execução de um teste.
representação JSON |
---|
{ "errorMessage": string, "stackTrace": { object ( |
Campos | |
---|---|
errorMessage | Uma breve mensagem legível por humanos descrevendo o problema. Obrigatório. |
stackTrace | Obsoleto em favor de campos de rastreamento de pilha dentro de avisos específicos. |
warning | Mensagem de aviso com detalhes adicionais sobre o problema. Deve ser sempre uma mensagem de com.google.devtools.toolresults.v1.warnings |
severity | Gravidade do problema. Obrigatório. |
type | Tipo de problema. Obrigatório. |
category | Categoria do problema. Obrigatório. |
Qualquer
Any
contém uma mensagem de buffer de protocolo serializada arbitrária junto com uma URL que descreve o tipo da mensagem serializada.
A biblioteca Protobuf fornece suporte para compactar/descompactar quaisquer valores na forma de funções utilitárias ou métodos gerados adicionais do tipo Any.
Exemplo 1: Compactar e descompactar uma mensagem em C++.
Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
...
}
Exemplo 2: Compactar e descompactar uma mensagem em Java.
Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
foo = any.unpack(Foo.class);
}
Exemplo 3: compactar e descompactar uma mensagem em Python.
foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
any.Unpack(foo)
...
Exemplo 4: compactar e descompactar uma mensagem em Go
foo := &pb.Foo{...}
any, err := ptypes.MarshalAny(foo)
...
foo := &pb.Foo{}
if err := ptypes.UnmarshalAny(any, foo); err != nil {
...
}
Os métodos pack fornecidos pela biblioteca protobuf usarão por padrão 'type.googleapis.com/full.type.name' como o URL do tipo e os métodos unpack usarão apenas o nome do tipo totalmente qualificado após o último '/' no URL do tipo, por exemplo, "foo.bar.com/x/yz" resultará no nome do tipo "yz".
JSON
A representação JSON de um valor Any
usa a representação regular da mensagem incorporada desserializada, com um campo adicional @type
que contém o tipo de URL. Exemplo:
package google.profile;
message Person {
string first_name = 1;
string last_name = 2;
}
{
"@type": "type.googleapis.com/google.profile.Person",
"firstName": <string>,
"lastName": <string>
}
Se o tipo de mensagem incorporado for bem conhecido e tiver uma representação JSON personalizada, essa representação será incorporada adicionando um value
de campo que contém o JSON personalizado além do campo @type
. Exemplo (para mensagem google.protobuf.Duration
):
{
"@type": "type.googleapis.com/google.protobuf.Duration",
"value": "1.212s"
}
representação JSON |
---|
{ "typeUrl": string, "value": string } |
Campos | |
---|---|
typeUrl | Um nome de URL/recurso que identifica exclusivamente o tipo de mensagem de buffer de protocolo serializado. Esta string deve conter pelo menos um caractere "/". O último segmento do caminho do URL deve representar o nome totalmente qualificado do tipo (como em Na prática, as equipes geralmente pré-compilam no binário todos os tipos que esperam que ele use no contexto de Any. No entanto, para URLs que usam o esquema
Observação: essa funcionalidade não está disponível atualmente na versão oficial do protobuf e não é usada para URLs de tipo que começam com type.googleapis.com. Esquemas diferentes de |
value | Deve ser um buffer de protocolo serializado válido do tipo especificado acima. Uma string codificada em base64. |
Gravidade
Gravidade dos problemas.
Enums | |
---|---|
unspecifiedSeverity | Gravidade não especificada padrão. Não use. Apenas para controle de versão. |
info | Problema não crítico, fornecendo aos usuários algumas informações sobre a execução do teste. |
suggestion | Problema não crítico, fornecendo aos usuários algumas dicas sobre como melhorar sua experiência de teste, por exemplo, sugerindo o uso de Game Loops. |
warning | Problema potencialmente crítico. |
severe | Problema crítico. |
Tipo
Tipos de problemas.
Enums | |
---|---|
unspecifiedType | Tipo não especificado padrão. Não use. Apenas para controle de versão. |
fatalException | Problema é uma exceção fatal. |
nativeCrash | O problema é uma falha nativa. |
anr | O problema é uma falha de ANR. |
unusedRoboDirective | O problema é uma diretiva robo não utilizada. |
compatibleWithOrchestrator | O problema é uma sugestão para usar o orquestrador. |
launcherActivityNotFound | Problema ao encontrar uma atividade do iniciador |
startActivityNotFound | Problema ao resolver uma intenção fornecida pelo usuário para iniciar uma atividade |
incompleteRoboScriptExecution | Um script do Robo não foi totalmente executado. |
completeRoboScriptExecution | Um script do Robo foi totalmente executado com sucesso. |
failedToInstall | Falha ao instalar o APK. |
availableDeepLinks | O aplicativo em teste tem links diretos, mas nenhum foi fornecido ao Robo. |
nonSdkApiUsageViolation | O aplicativo acessou uma API não SDK. |
nonSdkApiUsageReport | O aplicativo acessou uma API não SDK (novo relatório detalhado) |
encounteredNonAndroidUiWidgetScreen | O rastreamento Robo encontrou pelo menos uma tela com elementos que não são widgets de IU do Android. |
encounteredLoginScreen | O rastreamento Robo encontrou pelo menos uma tela de login provável. |
performedGoogleLogin | Robo fez login com o Google. |
iosException | O aplicativo iOS travou com uma exceção. |
iosCrash | O aplicativo iOS travou sem exceção (por exemplo, morto). |
performedMonkeyActions | Robo crawl envolvia a execução de algumas ações de macaco. |
usedRoboDirective | O rastreamento Robo usou uma diretiva Robo. |
usedRoboIgnoreDirective | O rastreamento Robo usou uma diretiva Robo para ignorar um elemento da interface do usuário. |
insufficientCoverage | O Robo não rastreou algumas partes potencialmente importantes do aplicativo. |
inAppPurchases | O rastreamento Robo envolveu algumas compras no aplicativo. |
crashDialogError | A caixa de diálogo de travamento foi detectada durante a execução do teste |
uiElementsTooDeep | A profundidade do elemento da interface do usuário é maior que o limite |
blankScreen | Tela em branco é encontrada no rastreamento do Robo |
overlappingUiElements | Elementos de interface do usuário sobrepostos são encontrados no rastreamento do Robo |
unityException | Foi detectada uma exceção não capturada do Unity (essas não travam os aplicativos). |
deviceOutOfMemory | Dispositivo sem memória foi detectado |
logcatCollectionError | Problemas detectados durante a coleta do logcat |
detectedAppSplashScreen | O Robo detectou uma tela inicial fornecida pelo aplicativo (vs. tela inicial do sistema operacional Android). |
Categoria
Categorias de problemas.
Enums | |
---|---|
unspecifiedCategory | Categoria não especificada padrão. Não use. Apenas para controle de versão. |
common | O problema não é específico de um determinado tipo de teste (por exemplo, uma falha nativa). |
robo | O problema é específico da execução do Robo. |
TestTiming
O tempo de teste é dividido para conhecer as fases.
representação JSON |
---|
{
"testProcessDuration": {
object ( |
Campos | |
---|---|
testProcessDuration | Quanto tempo levou para executar o processo de teste.
|
ToolExecutionStep
Etapa de ferramenta genérica a ser usada para binários que não suportamos explicitamente. Por exemplo: executar cp para copiar artefatos de um local para outro.
representação JSON |
---|
{
"toolExecution": {
object ( |
Campos | |
---|---|
toolExecution | Uma execução da ferramenta.
|
Várias Etapas
Detalhes quando várias etapas são executadas com a mesma configuração de um grupo.
representação JSON |
---|
{
"primaryStepId": string,
"multistepNumber": integer,
"primaryStep": {
object ( |
Campos | |
---|---|
primaryStepId | Id da etapa principal (original), que pode ser esta etapa. |
multistepNumber | Int exclusivo dado a cada etapa. Varia de 0(inclusive) ao número total de passos(exclusivo). O passo primário é 0. |
primaryStep | Presente se for uma etapa primária (original). |
Etapa Primária
Armazena o status do teste de acúmulo de várias etapas que foram executadas como um grupo e o resultado de cada etapa individual.
representação JSON |
---|
{ "rollUp": enum ( |
Campos | |
---|---|
rollUp | Status de teste cumulativo de várias etapas que foram executadas com a mesma configuração de um grupo. |
individualOutcome[] | Id da etapa e resultado de cada etapa individual. |
Resultado individual
ID da etapa e resultado de cada etapa individual que foi executada como um grupo com outras etapas com a mesma configuração.
representação JSON |
---|
{ "stepId": string, "outcomeSummary": enum ( |
Campos | |
---|---|
stepId | |
outcomeSummary | |
multistepNumber | Int exclusivo dado a cada etapa. Varia de 0(inclusive) ao número total de passos(exclusivo). O passo primário é 0. |
runDuration | Quanto tempo levou para esta etapa ser executada. |
Métodos | |
---|---|
| Lista clusters de acessibilidade para uma determinada etapa Pode retornar qualquer um dos seguintes códigos de erro canônicos:
|
| Cria uma Etapa. |
| Obtém um passo. |
| Recupera um PerfMetricsSummary. |
| Lista as etapas para uma determinada execução. |
| Atualiza uma Etapa existente com a entidade parcial fornecida. |
| Publique arquivos xml em uma etapa existente. |