- Recurso: etapa
- TestExecutionStep (link em inglês)
- ToolExecution (em inglês)
- ToolExitCode (em inglês)
- TestIssue (em inglês)
- Qualquer um
- Gravidade
- Tipo
- Categoria
- TestTiming (em inglês)
- ToolExecutionStep (em inglês)
- Multietapa
- Etapaprincipal
- IndividualOutcome (em inglês)
- Métodos
Recurso: etapa
Uma etapa representa uma única operação realizada 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 testes ou 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 feitas em paralelo.
Aqui está um exemplo em que vamos considerar que temos um build contínuo que executa um executor de testes para cada iteração. O fluxo de trabalho seria assim: - o usuário cria uma execução com o ID 1 - o usuário cria um TestExecutionStep com o ID 100 para a execução 1 - o usuário atualiza o TestExecutionStep com o ID 100 para adicionar um registro XML bruto e o serviço analisa os registros XML e retorna um TestExecutionStep com os TestResult(s) atualizados). - o usuário atualiza o status de TestExecutionStep com o ID 100 para COMPLETE
Uma etapa pode ser atualizada até que seu estado seja definido como COMPLETE. Nesse momento, 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_MCC se este campo for definido ou substituído pelo autor da chamada.
|
creationTime |
A hora em que a etapa foi criada.
|
completionTime |
A hora em que o status da etapa foi definido para conclusão. Esse valor será definido automaticamente quando o estado mudar para COMPLETE.
|
name |
Um nome curto legível por humanos a ser exibido na interface. Máximo de 100 caracteres. Por exemplo: build limpo Uma PRECONDITION_FAILED será retornada ao criar uma nova etapa se ela compartilhar o nome e dimensionValue com uma etapa existente. Se duas etapas representam uma ação semelhante, mas têm valores de dimensão diferentes, elas devem ter o mesmo nome. Por exemplo, se o mesmo conjunto de testes é executado em duas plataformas diferentes, as duas etapas precisam ter o mesmo nome.
|
description |
Uma descrição dessa ferramenta. Por exemplo: mvn clean package -D skipTests=true
|
state |
O estado inicial é IN_PROGRESS. As únicas transições de estado legal são * IN_PROGRESS -> COMPLETAR Uma PRECONDITION_FAILED será retornada se uma transição inválida for solicitada. É válido criar uma etapa com o estado definido como CONCLUÍDO. O estado só pode ser definido como COMPLETE uma vez. 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 é imagens cujas miniaturas podem ser buscadas com miniaturas.list.
|
labels |
Pares arbitrários de chave-valor fornecidos pelo usuário que estão associados à etapa. Os usuários são responsáveis por gerenciar o namespace da chave para que as chaves não entrem em conflito acidentalmente. Um INVALID_MCC será retornado se o número de marcadores exceder 100 ou se o comprimento de qualquer uma das chaves ou dos valores exceder 100 caracteres.
Um objeto com uma lista de pares |
dimensionValue |
Se a execução que contém essa etapa tiver algum conjunto dimension_definition, esse campo permitirá que o filho especifique os valores das dimensões. As chaves precisam 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 é compatível com novas tentativas, a etapa poderá ter Se a etapa não participar de nenhuma dimensão da matriz, talvez ela deixe "dimensionValue" não definida. Uma PRECONDITION_FAILED será retornada se alguma das chaves não existir na dimension_definition da execução. Uma PRECONDITION_FAILED será retornada 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 de etapa for diferente). Uma PRECONDITION_FAILED será retornada se dimensionValue estiver definido e houver um dimension_definition na execução que não foi especificado como uma das chaves.
Um objeto com uma lista de pares |
runDuration |
Quanto tempo demorou para esta etapa ser executada. Se não definido, este valor é definido como a diferença entre createTime e completedTime quando a etapa está com o estado COMPLETE (completo). Em alguns casos, é apropriado definir esse valor separadamente. Por exemplo, se uma etapa é criada, mas a operação que ela representa está na fila por alguns minutos antes da execução, seria apropriado não incluir o tempo gasto na fila na runDuration. PRECONDITION_FAILED será retornado se alguém tentar definir uma runDuration em uma etapa que já tem esse campo definido.
|
deviceUsageDuration |
Quanto o recurso do dispositivo é usado para realizar o teste. Esse é o uso do dispositivo usado para fins de faturamento, que é diferente da runDuration. Por exemplo, uma falha na infraestrutura não é cobrada 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 |
Detalha 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 os grupos "etapa principal" que indexa todos os membros do grupo.
|
Campo de união
|
|
testExecutionStep |
Uma execução de um executor de testes. |
toolExecutionStep |
A execução de uma ferramenta (usada para etapas sem 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 teste estruturados pelo serviço. Os caminhos de arquivos XML são atualizados para anexar mais arquivos, mas não podem ser excluídos.
Os usuários também podem adicionar os resultados do teste manualmente usando o campo test_result.
Representação JSON |
---|
{ "testSuiteOverviews": [ { object ( |
Campos | |
---|---|
testSuiteOverviews[] |
Lista de conteúdo geral do pacote de testes. Isso poderia ser analisado do registro XML do xUnit por servidor ou carregado diretamente pelo usuário. Essas referências só devem ser chamadas quando os conjuntos de testes forem totalmente analisados ou enviados. 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 testes. O código de saída dessa ferramenta será usado para determinar se o teste foi aprovado.
|
testIssues[] |
Problemas observados durante a execução do teste. Por exemplo, se o app para dispositivos móveis em teste falhar durante o teste, a mensagem de erro e o conteúdo do stack trace poderão ser registrados aqui para ajudar na depuração.
|
testTiming |
O detalhamento de tempo da execução do teste.
|
Execução de ferramentas
A execução de uma ferramenta arbitrária. Pode ser um executor de testes ou uma ferramenta copiando artefatos ou implantando 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[] |
As referências a qualquer registro de texto simples produzem a execução da ferramenta. Esse campo pode ser definido antes da saída da ferramenta para que seja possível acessar uma visualização ao vivo dos registros enquanto a ferramenta estiver em execução. O número máximo permitido de registros de ferramentas por etapa é 1.000.
|
exitCode |
Código de saída da execução da ferramenta. Esse campo será definido quando a ferramenta for encerrada.
|
toolOutputs[] |
Referências a arquivos opacos de qualquer formato de saída pela execução da ferramenta. O número máximo permitido de saídas da ferramenta por etapa é 1.000.
|
ToolExitCode
Saia do código de uma execução de ferramenta.
Representação JSON |
---|
{ "number": integer } |
Campos | |
---|---|
number |
Código de saída da execução da ferramenta. Um valor de 0 significa que a execução foi bem-sucedida.
|
Problema de teste
Um problema detectado que está 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 e substituído por campos de stack trace em avisos específicos. |
warning |
Mensagem de aviso com mais detalhes sobre o problema. Precisa ser sempre uma mensagem de com.google.labs.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 arbitrária de buffer de protocolo serializada junto com um URL que descreve o tipo da mensagem serializada.
A biblioteca Protobuf oferece suporte para compactar/descompactar quaisquer valores na forma de funções utilitárias ou outros métodos gerados de qualquer tipo.
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: empacotar e descompactar 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 {
...
}
Por padrão, os métodos de pacote fornecidos pela biblioteca protobuf usam "type.googleapis.com/full.type.name" como o URL do tipo e os métodos de descompactação usam apenas o nome do tipo totalmente qualificado após o último "/" no URL do tipo, por exemplo, "foo.bar.com/x/y.z" resultará no nome do tipo "y.z".
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 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 incorporada for conhecido e tiver uma representação JSON personalizada, essa representação será incorporada com a adição de um campo value
que contém o JSON personalizado, além do campo @type
. Exemplo (para a 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 da mensagem de buffer de protocolo serializada. Essa string precisa conter pelo menos um "/" caractere. O último segmento do caminho do URL precisa 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: no momento, essa funcionalidade não está disponível 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 |
Precisa ser um buffer de protocolo serializado válido do tipo especificado acima. Uma string codificada em base64. |
Gravidade
Gravidades dos problemas.
Enums | |
---|---|
unspecifiedSeverity |
Gravidade não especificada padrão. Não use. Somente 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 a experiência de teste (por exemplo, sugerindo o uso de loops de jogo). |
warning |
Problema potencialmente crítico. |
severe |
Problema crítico. |
Tipo
Tipos de problemas.
Enums | |
---|---|
unspecifiedType |
Tipo não especificado padrão. Não use. Somente para controle de versão. |
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 Orchestrator. |
launcherActivityNotFound |
Problema ao encontrar uma atividade da tela de início |
startActivityNotFound |
Problema ao resolver uma intent fornecida pelo usuário para iniciar uma atividade |
incompleteRoboScriptExecution |
Um script Robo não foi totalmente executado. |
completeRoboScriptExecution |
Um script Robo foi totalmente executado. |
failedToInstall |
Falha ao instalar o APK. |
availableDeepLinks |
O app em teste tem links diretos, mas nenhum foi fornecido ao Robo. |
nonSdkApiUsageViolation |
O app acessou uma API que não é do SDK. |
nonSdkApiUsageReport |
O app acessou uma API que não é do SDK (novo relatório detalhado) |
encounteredNonAndroidUiWidgetScreen |
O rastreamento Robo encontrou pelo menos uma tela com elementos que não são widgets de interface do Android. |
encounteredLoginScreen |
O rastreamento Robo encontrou pelo menos uma provável tela de login. |
performedGoogleLogin |
O Robo fez login com o Google. |
iosException |
O app iOS falhou com uma exceção. |
iosCrash |
O app iOS falhou sem uma exceção (por exemplo, foi encerrado). |
performedMonkeyActions |
O rastreamento Robo envolveu algumas ações randômicas. |
usedRoboDirective |
O rastreamento Robo usou uma diretiva Robo. |
usedRoboIgnoreDirective |
O rastreamento Robo usou uma diretiva Robo para ignorar um elemento da interface. |
insufficientCoverage |
O Robo não rastreou algumas partes potencialmente importantes do aplicativo. |
inAppPurchases |
O rastreamento Robo envolveu algumas compras no app. |
crashDialogError |
Uma caixa de diálogo de falha foi detectada durante a execução do teste |
uiElementsTooDeep |
A profundidade do elemento da interface é maior que o limite |
blankScreen |
Encontramos uma tela em branco no rastreamento Robo |
overlappingUiElements |
Elementos de interface sobrepostos são encontrados no rastreamento Robo |
unityException |
Foi detectada uma exceção não capturada do Unity que não causa falhas nos apps. |
deviceOutOfMemory |
Dispositivo com memória insuficiente foi detectado |
logcatCollectionError |
Problemas detectados ao coletar o Logcat |
detectedAppSplashScreen |
O Robo detectou uma tela de apresentação fornecida pelo app (em comparação com a tela de apresentação do SO Android). |
assetIssue |
Ocorreu um problema com os recursos do teste. |
Categoria
Categorias de problemas.
Enums | |
---|---|
unspecifiedCategory |
Categoria padrão não especificada. Não use. Somente para controle de versão. |
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
Detalhamento de tempo de teste para conhecer as fases.
Representação JSON |
---|
{
"testProcessDuration": {
object ( |
Campos | |
---|---|
testProcessDuration |
Quanto tempo levou para executar o processo de teste.
|
Etapa de execução de ferramenta
Etapa de ferramenta genérica a ser usada para binários sem 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.
|
Múltiplas etapas
Detalha 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 fornecido a cada etapa. Varia de 0(inclusivo) ao número total de etapas(não incluso). A etapa principal é 0. |
primaryStep |
Presente se for uma etapa principal (original). |
Principal Passo
Armazena o status do teste de visualização completa de várias etapas executadas como um grupo e o resultado de cada etapa individual.
Representação JSON |
---|
{ "rollUp": enum ( |
Campos | |
---|---|
rollUp |
Status do teste de visualização completa de várias etapas que foram executadas com a mesma configuração de um grupo. |
individualOutcome[] |
ID da etapa e o resultado de cada etapa individual. |
Resultado Individual
ID 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 fornecido a cada etapa. Varia de 0(inclusivo) ao número total de etapas(não incluso). A etapa principal é 0. |
runDuration |
Quanto tempo demorou para esta etapa ser executada. |
Métodos |
|
---|---|
|
Lista os clusters de acessibilidade de uma determinada etapa Poderá retornar qualquer um dos seguintes códigos de erro canônicos:
|
|
Cria uma etapa. |
|
Recebe uma etapa. |
|
Recupera um PerfMetricsSummary. |
|
Lista as etapas de uma determinada execução. |
|
Atualiza uma etapa existente com a entidade parcial fornecida. |
|
Publicar arquivos XML em uma etapa existente. |