- Recurso: Etapa
- Etapa de execução de teste
- Execução de ferramenta
- FerramentaExitCode
- Problema de teste
- Qualquer
- Gravidade
- Tipo
- Categoria
- Tempo de teste
- Etapa de execução da ferramenta
- 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, a execução de um executor de teste ou a execução de um compilador).
As etapas podem se sobrepor (por exemplo, duas etapas podem ter o mesmo horário de início se algumas operações forem realizadas em paralelo).
Aqui está um exemplo, vamos considerar que temos uma construção contínua executando um executor de teste para cada iteração. O fluxo de trabalho seria semelhante a: - o usuário cria uma Execução com id 1 - o usuário cria um TestExecutionStep com id 100 para Execução 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
Uma Etapa pode ser atualizada até que seu estado seja definido como COMPLETE, momento em que ela 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 passar para COMPLETE.
|
name | Um nome curto e legível para ser exibido na IU. Máximo de 100 caracteres. Por exemplo: construção limpa Um PRECONDITION_FAILED será retornado ao criar uma nova etapa se compartilhar seu nome e dimensionValue com uma etapa existente. Se duas etapas representarem uma ação semelhante, mas tiverem valores de dimensão diferentes, elas deverão compartilhar o mesmo nome. Por exemplo, se o mesmo conjunto de testes for executado em duas plataformas diferentes, as duas etapas deverão 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 Step com estado definido como COMPLETE. O estado só pode ser definido como COMPLETE uma vez. Um PRECONDITION_FAILED será retornado se o estado for definido como COMPLETE diversas 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 para 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 que contém uma lista de pares |
dimensionValue | Se a execução que contém esta etapa tiver qualquer definição de dimensão definida, esse campo permitirá que o filho especifique os valores das dimensões. As chaves devem corresponder exatamente à definição de dimensão da execução. Por exemplo, se a execução tiver Se uma etapa não participar de uma dimensão da matriz, o valor dessa dimensão deverá ser uma string vazia. Por exemplo, se um dos testes for executado por um executor que não suporta novas tentativas, a etapa poderá ter Se a etapa não participar de nenhuma dimensão da matriz, poderá 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 desta execução já tiver o mesmo nome e dimensionValue, mas for diferente em outros campos de dados, por exemplo, o campo da etapa for diferente. Um PRECONDITION_FAILED será retornado se dimensionValue estiver definido e houver uma dimension_definition na execução que não está especificada como uma das chaves.
Um objeto que contém uma lista de pares |
runDuration | Quanto tempo levou para esta etapa ser executada. Se não for definido, será definido como a diferença entre CreationTime ecompleteTime quando a etapa for definida para o estado COMPLETE. Em alguns casos, é apropriado definir este valor separadamente: Por exemplo, se uma etapa for criada, mas a operação que ela representa estiver na fila por alguns minutos antes de ser executada, seria apropriado não incluir o tempo gasto na fila em seu runDuration. PRECONDITION_FAILED será retornado se alguém tentar definir um runDuration em uma etapa que já possui este 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, falhas de infraestrutura não serão cobradas pelo uso do dispositivo. PRECONDITION_FAILED será retornado se alguém tentar definir um device_usage em uma etapa que já possui este 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 de qual grupo esta etapa faz parte. Ele também identifica a 'etapa primária' do grupo 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 que não oferecemos suporte explícito). |
Etapa de execução de teste
Uma etapa que representa a execução de testes.
Ele aceita arquivos xml ant-junit que serão analisados em resultados de testes estruturados pelo serviço. Os caminhos dos arquivos XML são atualizados para anexar mais arquivos, mas não podem ser excluídos.
Os usuários também podem adicionar resultados de testes manualmente usando o campo test_result.
Representação JSON |
---|
{ "testSuiteOverviews": [ { object ( |
Campos | |
---|---|
testSuiteOverviews[] | Lista do conteúdo geral do conjunto de testes. Isso pode ser analisado a partir do log XML do xUnit pelo servidor ou carregado diretamente pelo usuário. Essas referências só devem ser chamadas quando os conjuntos de testes 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 foi aprovado.
|
testIssues[] | Problemas observados durante a execução do teste. Por exemplo, se o aplicativo móvel em teste travou 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 divisão do tempo da execução do teste.
|
Execução de ferramenta
Uma execução de uma ferramenta arbitrária. Pode ser um executor de testes ou uma ferramenta que copia artefatos ou implanta 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 ferramenta sair 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 ferramentas por etapa é 1.000.
|
exitCode | Código de saída de execução da ferramenta. Este campo será definido assim que a ferramenta for encerrada.
|
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 é 1.000.
|
FerramentaExitCode
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 0 significa que a execução foi bem-sucedida.
|
Problema de teste
Um problema detectado ocorrendo durante a execução de um teste.
Representação JSON |
---|
{ "errorMessage": string, "stackTrace": { object ( |
Campos | |
---|---|
errorMessage | Uma breve mensagem legível 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 sempre haver 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 valores Any na forma de funções utilitárias ou métodos gerados adicionais do tipo Any.
Exemplo 1: Empacotar e descompactar uma mensagem em C++.
Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
...
}
Exemplo 2: Empacotar 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: Empacote e descompacte uma mensagem em Python.
foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
any.Unpack(foo)
...
Exemplo 4: empacotar 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 de pacote fornecidos pela biblioteca protobuf usarão, por padrão, 'type.googleapis.com/full.type.name' como o URL do tipo e os métodos de descompactação usarão apenas o nome do tipo totalmente qualificado após o último '/' no URL do tipo, por exemplo, "foo.bar.com/x/yz" produzirá o nome do tipo "yz".
JSON
A representação JSON de um valor Any
usa a representação regular da mensagem incorporada e desserializada, com um campo adicional @type
que contém o tipo 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 incorporada 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 usar no contexto de Any. No entanto, para URLs que usam o esquema
Observação: esta 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 padrão não especificada. Não use. Apenas para versionamento. |
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 | Questão crítica. |
Tipo
Tipos de problemas.
Enums | |
---|---|
unspecifiedType | Tipo padrão não especificado. Não use. Apenas para versionamento. |
fatalException | O 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 Robo não foi totalmente executado. |
completeRoboScriptExecution | Um script Robo foi executado completa e com sucesso. |
failedToInstall | O APK não foi instalado. |
availableDeepLinks | O aplicativo em teste possui 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 da IU do Android. |
encounteredLoginScreen | O rastreamento Robo encontrou pelo menos uma tela de login provável. |
performedGoogleLogin | Robo fez login no Google. |
iosException | O aplicativo iOS travou com uma exceção. |
iosCrash | O aplicativo iOS travou sem exceção (por exemplo, foi morto). |
performedMonkeyActions | O rastreamento do Robo envolveu a realizaçã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 IU. |
insufficientCoverage | Robo não rastreou algumas partes potencialmente importantes do aplicativo. |
inAppPurchases | O rastreamento do 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 IU é maior que o limite |
blankScreen | Tela em branco é encontrada no rastreamento do Robo |
overlappingUiElements | Elementos de UI sobrepostos são encontrados no rastreamento Robo |
unityException | Uma exceção do Unity não detectada foi detectada (elas não travam aplicativos). |
deviceOutOfMemory | Dispositivo com falta de memória foi detectado |
logcatCollectionError | Problemas detectados ao coletar logcat |
detectedAppSplashScreen | Robo detectou uma tela inicial fornecida pelo aplicativo (em comparação com a tela inicial do sistema operacional Android). |
Categoria
Categorias de problemas.
Enums | |
---|---|
unspecifiedCategory | Categoria não especificada padrão. Não use. Apenas para versionamento. |
common | O problema não é específico de um tipo de teste específico (por exemplo, uma falha nativa). |
robo | O problema é específico da execução do Robo. |
Tempo de teste
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.
|
Etapa de execução da ferramenta
Etapa genérica da ferramenta a ser usada para binários que não oferecemos suporte explícito. Por exemplo: executar cp para copiar artefatos de um local para outro.
Representação JSON |
---|
{
"toolExecution": {
object ( |
Campos | |
---|---|
toolExecution | Uma execução de 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 da etapa primária (original), que pode ser esta etapa. |
multistepNumber | Int exclusivo dado a cada etapa. Varia de 0 (inclusive) ao número total de etapas (exclusivo). A etapa principal é 0. |
primaryStep | Presente se for uma etapa primária (original). |
Etapa Primária
Armazena o status do teste de rollup de diversas etapas que foram executadas como um grupo e o resultado de cada etapa individual.
Representação JSON |
---|
{ "rollUp": enum ( |
Campos | |
---|---|
rollUp | Status do teste de rollup de diversas 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 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 etapas (exclusivo). A etapa principal é 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. |
| Dá 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. |