Configurar o orquestrador de teste IDT - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o orquestrador de teste IDT

A partir do IDT v4.5.1, o IDT inclui um novoorquestrador de testeComponente. O orquestrador de teste é um componente IDT que controla o fluxo de execução do conjunto de testes e gera o relatório de teste após o IDT terminar de executar todos os testes. O orquestrador de teste determina a seleção de teste e a ordem em que os testes são executados com base em regras definidas pelo usuário.

Se o conjunto de testes não incluir um orquestrador de teste definido pelo usuário, o IDT gerará um orquestrador de teste para você.

O orquestrador de teste padrão executa as seguintes funções:

  • Fornece aos corredores de teste a capacidade de selecionar e executar grupos de teste específicos, em vez de todo o conjunto de testes.

  • Se grupos de teste específicos não forem selecionados, executa todos os grupos de teste na suíte de testes em uma ordem aleatória.

  • Gera relatórios e imprime um resumo do console que mostra os resultados do teste para cada grupo de teste e caso de teste.

O orquestrador de teste substitui o orquestrador de teste IDT. É altamente recomendável que você use o orquestrador de teste para desenvolver seus conjuntos de testes em vez do orquestrador de teste IDT. O orquestrador de teste fornece os seguintes recursos aprimorados:

  • Usa um formato declarativo comparado ao formato imperativo que a máquina de estado IDT usa. Isso permite que vocêespecificamosquais testes você deseja executar equandovocê quer executá-los.

  • Gerencia o tratamento de grupos específicos, a geração de relatórios, o tratamento de erros e o rastreamento de resultadospara que você não seja necessáriopara gerenciar manualmente essas ações.

  • Usa o formato YAML, que suporta comentários por padrão.

  • Requer80 por centomenos espaço em disco do que o orquestrador de teste para definir o mesmo fluxo de trabalho.

  • Adiciona validação pré-teste para verificar se a definição do fluxo de trabalho não contém IDs de teste incorretas ou dependências circulares.

Formato do orquestrador de teste

Você pode usar o seguinte modelo para configurar o seu próprio<custom-test-suite-folder>/suite/test_orchestrator.yamlfile:

Aliases: string: context-expression ConditionalTests: - Condition: context-expression Tests: - test-descriptor Order: - - group-descriptor - group-descriptor Features: - Name: feature-name Value: support-description Condition: context-expression Tests: - test-descriptor OneOfTests: - test-descriptor IsRequired: boolean

Todos os campos que contêm valores são necessários, conforme descrito aqui:

Aliases

Opcional. Strings definidas pelo usuário que são mapeadas para expressões de contexto. Aliases permitem que você gere nomes amigáveis paraidentifique expressões de contexto na configuração do orquestrador de teste. Isso será especialmente útil se você estiver criando expressões de contexto complexas ou expressões que você usa em vários lugares.

Você pode usar expressões de contexto para armazenar consultas de contexto que permitem acessar dados de outras configurações IDT. Para obter mais informações, consulteAcesse dados no contexto

exemplo Exemplo
Aliases: FizzChosen: "'{{$pool.features[?(@.name == 'Fizz')].value[0]}}' == 'yes'" BuzzChosen: "'{{$pool.features[?(@.name == 'Buzz')].value[0]}}' == 'yes'" FizzBuzzChosen: "'{{$aliases.FizzChosen}}' && '{{$aliases.BuzzChosen}}'"
ConditionalTests

Opcional. Uma lista de condições e os casos de teste correspondentes que são executados quando cada condição é satisfeita. Cada condição pode ter vários casos de teste; no entanto, você pode atribuir um determinado caso de teste a apenas uma condição.

Por padrão, o IDT executa qualquer caso de teste que não esteja atribuído a uma condição nesta lista. Se você não especificar essa seção, o IDT executa todos os grupos de teste no conjunto de testes.

Cada item noConditionalTestsA list inclui os seguintes parâmetros:

Condition

Uma expressão de contexto que avalia para umboleanovalue. Se o valor avaliado for verdadeiro, o IDT executará os casos de teste especificados naTestsparâmetro .

Tests

A lista de descritores de teste.

Cada descritor de teste usa o ID do grupo de teste e um ou mais IDs de caso de teste para identificar os testes individuais a serem executados a partir de um grupo de teste específico. O descritor de teste usa o seguinte formato:

GroupId: group-id CaseIds: [test-id, test-id] # optional
exemplo Exemplo

O exemplo a seguir usa expressões de contexto genéricas que você pode definir comoAliases.

ConditionalTests: - Condition: "{{$aliases.Condition1}}" Tests: - GroupId: A - GroupId: B - Condition: "{{$aliases.Condition2}}" Tests: - GroupId: D - Condition: "{{$aliases.Condition1}} || {{$aliases.Condition2}}" Tests: - GroupId: C

Com base nas condições definidas, o IDT seleciona grupos de teste da seguinte forma:

  • SeCondition1é verdade, o IDT executa os testes nos grupos de teste A, B e C.

  • SeCondition2é verdade, o IDT executa os testes nos grupos de teste C e D.

Order

Opcional. A ordem em que os testes serão executados. Você especifica a ordem de teste no nível do grupo de teste. Se você não especificar esta seção, o IDT executará todos os grupos de teste aplicáveis em uma ordem aleatória. O valor deOrderé uma lista de listas de descritores de grupo. Qualquer grupo de teste que você não listarOrder, pode ser executado em parallel com qualquer outro grupo de teste listado.

Cada lista de descritores de grupo contém um dos mais descritores de grupo e identifica a ordem na qual executar os grupos especificados em cada descritor. Você pode usar os formatos a seguir para definir descritores de grupo individuais:

  • group-id—O ID de grupo de um grupo de teste existente.

  • [group-id, group-id]—Lista de grupos de teste que podem ser executados em qualquer ordem em relação um ao outro.

  • "*"—Curinga. Isso equivale à lista de todos os grupos de teste que ainda não estão especificados na lista de descritores de grupo atual.

O valor paraOrderTambém deve atender aos seguintes requisitos:

  • As IDs de grupo de teste especificadas em um descritor de grupo devem existir em seu conjunto de testes.

  • Cada lista de descritores de grupo deve incluir pelo menos um grupo de teste.

  • Cada lista de descritores de grupo deve conter IDs de grupo exclusivas. Você não pode repetir um ID de grupo de teste em descritores de grupo individuais.

  • Uma lista de descritores de grupo pode ter no máximo um descritor de grupo curinga. O descritor de grupo curinga deve ser o primeiro ou o último item da lista.

exemplo Exemplos

Para um conjunto de testes que contém os grupos de teste A, B, C, D e E, a lista de exemplos a seguir mostra maneiras diferentes de especificar que o IDT deve primeiro executar o grupo de teste A, depois executar o grupo de teste B e, em seguida, executar os grupos de teste C, D e E em qualquer ordem.

  • Order: - - A - B - [C, D, E]
  • Order: - - A - B - "*"
  • Order: - - A - B - - B - C - - B - D - - B - E
Features

Opcional. A lista de recursos do produto que você deseja que o IDT adicione aoawsiotdevicetester_report.xmlfile. Se você não especificar esta seção, o IDT não adicionará nenhum recurso do produto ao relatório.

Um recurso do produto são informações definidas pelo usuário sobre critérios específicos que um dispositivo pode atender. Por exemplo, o recurso do produto MQTT pode designar que o dispositivo publica mensagens MQTT corretamente. Dentroawsiotdevicetester_report.xml, os recursos do produto são definidos comosupported,not-supported, ou um valor personalizado definido pelo usuário, com base na aprovação dos testes especificados.

Cada item noFeaturesA list consiste nos seguintes parâmetros:

Name

O nome do recurso.

Value

Opcional. O valor personalizado que você deseja usar no relatório em vez desupported. Se esse valor não for especificado, o IDT baseado definirá o valor do recurso comosupportedounot-supportedCom base nos resultados dos testes. Se você testar o mesmo recurso com condições diferentes, poderá usar um valor personalizado para cada instância desse recurso naFeatureslist, e o IDT concatena os valores do recurso para as condições suportadas. Para obter mais informações, consulte

Condition

Uma expressão de contexto que avalia para umboleanovalue. Se o valor avaliado for verdadeiro, o IDT adicionará o recurso ao relatório de teste depois que ele terminar de executar o conjunto de testes. Se o valor avaliado for falso, o teste não será incluído no relatório.

Tests

Opcional. A lista de descritores de teste. Todos os testes especificados nesta lista devem ser aprovados para que o recurso seja suportado.

Cada descritor de teste nesta lista usa o ID do grupo de teste e um ou mais IDs de caso de teste para identificar os testes individuais a serem executados a partir de um grupo de teste específico. O descritor de teste usa o seguinte formato:

GroupId: group-id CaseIds: [test-id, test-id] # optional

Especifique umTestsouOneOfTestspara cada recurso noFeaturesLista.

OneOfTests

Opcional. A lista de descritores de teste. Pelo menos um dos testes especificados nesta lista deve ser aprovado para que o recurso seja suportado.

Cada descritor de teste nesta lista usa o ID do grupo de teste e um ou mais IDs de caso de teste para identificar os testes individuais a serem executados a partir de um grupo de teste específico. O descritor de teste usa o seguinte formato:

GroupId: group-id CaseIds: [test-id, test-id] # optional

Especifique umTestsouOneOfTestspara cada recurso noFeaturesLista.

IsRequired

O valor booleano que define se o recurso é necessário no relatório de teste. O valor padrão é false.

Teste de contexto de orquestrador

O contexto do orquestrador de teste é um documento JSON somente leitura que contém dados disponíveis para o orquestrador de teste durante a execução. O contexto do orquestrador de teste só é acessível a partir do orquestrador de teste e contém informações que determinam o fluxo de teste. Por exemplo, você pode usar informações configuradas por corredores de teste nauserdata.jsonarquivo para determinar se um teste específico é necessário para ser executado.

O contexto do orquestrador de teste usa o seguinte formato:

{ "pool": { <device-json-pool-element> }, "userData": { <userdata-json-content> }, "config": { <config-json-content> } }
pool

Informações sobre o pool de dispositivos selecionado para a execução de teste. Para um pool de dispositivos selecionado, essas informações são recuperadas do elemento de matriz de pool de dispositivos de nível superior correspondente definido nadevice.jsonfile.

userData

Informações do nouserdata.jsonfile.

config

Informações do noconfig.jsonfile.

Você pode consultar o contexto usando a notação JSONPath. A sintaxe para consultas JSONPath em definições de estado é{{query}}. Ao acessar dados do contexto do orquestrador de teste, certifique-se de que cada valor seja avaliado como uma string, um número ou umboleano.

Para obter mais informações sobre como usar a notação JSONPath para acessar dados do contexto, consulteUsar o contexto IDT.