Executor de testes

O processo “Executor de testes” permite a execução de testes contidos em arquivos gravados na Virtual File System (VFS) ou em arquivos locais do sistema operacional. Este processo foi criado unicamente para a visualização de falhas ou sucessos dos testes, assim como os testes são criados unicamente para reportar, quando executados, o sucesso ou falha apenas do que está sendo testado. Este entendimento é importante para que não haja uma falsa expectativa de garantia de funcionamento dos elementos testados no restante do Sistema.

Há dois tipos de testes no sistema:

  • Testes unitários: arquivos de extensão “.iut” da VFS ou arquivos locais com nomes terminados em “_test.js”.
  • Testes de integração: arquivos de extensão “.it” da VFS ou arquivos locais com nomes terminados em “_i-test.js”.

A diferença entre testes unitários e de integração no sistema é que os primeiros não permitem a realização de operações de consultas, alterações, inserções ou exclusões na base de dados. Eles possibilitam apenas testes isolados sobre métodos, propriedades ou funções. Testes de integração, por outro lado, permitem qualquer modificação na base de dados, exigindo que todas as modificações realizadas sejam desfeitas via logs transacionais após a execução de um caso de testes. Essa proteção torna a execução dos testes de integração mais lenta que as dos testes unitários e, por esse motivo, deve ser dada preferência à criação de testes unitários.

Apresentação do processo

O processo é aberto com duas grades, a grade “Opções” e a grade “Testes”. Além das grades, o processo também dispõe de três botões, os quais serão detalhados na seção “Botões do processo e botões da grade Testes” mais abaixo.

A grade “Opções” define os testes que devem ser executados e o modo de execução. Ela possui os seguintes campos:

  • Cluster: cluster de Engines que executará os testes selecionados de forma distribuída. O uso do cluster requer que os testes de integração executados não tenham concorrência de alterações de registros comuns entre eles. Atualmente, os testes de integração não têm essa garantia, restringindo o uso dessa opção para a execução completa dos testes do sistema.
  • Modo de execução: indica como o executor de testes deve se comportar ao encontrar uma falha em um caso de testes. Valores possíveis: “Continuar execução se um teste falhar” e “Parar execução se um teste falhar”.
  • Diretório VFS: define o diretório (classe) da VFS onde devem ser pesquisados os arquivos de definição dos testes.
  • Caminho local: define o caminho de um diretório ou arquivo do sistema operacional onde devem ser pesquisadas as definições dos testes. O caminho informado é relativo ao Engine em execução.

A grade “Testes” é a principal grade do processo e é através dela que se pode visualizar o resultado da execução dos testes. Ela apresenta as seguintes colunas:

  • Nome: exibe uma árvore que deve ser utilizada para a localização dos testes que se deseja executar. O conceito de agrupamento pode ser utilizado e, caso se deseje que um grupo de testes seja executado a partir de um dado nó, basta selecionar o nó que todos os testes, a partir dele, estarão selecionados para execução. Dessa forma, se for desejada a execução de todos os testes, basta selecionar o nó raiz identificado pelo nome “Todos”.
  • Resultado: mensagem de sucesso ou falha de cada nó.
  • Tempo Execução: tempo de execução de cada nó no formato hh:mm:ss.
  • Sucessos: totaliza a quantidade de testes bem-sucedidos a partir do nó em que o número está sendo apresentado.
  • Falhas: semelhante ao comportamento da coluna “Sucessos”, esta coluna totaliza a quantidade de testes malsucedidos a partir do nó em que o número está sendo apresentado.

Botões do processo e botões da grade Testes

Os botões da grade “Testes”, por uma simples questão de facilidade, são repetidos na área de botões do processo. Abaixo, segue o detalhamento de cada botão e seu significado:

  • Executar selecionados: Este botão, naturalmente, dispara a execução dos testes selecionados na grade “Testes”. Este botão está disponível tanto na grade quanto na área de botões do processo.
  • Selecionar testes que falharam: Após uma execução de testes onde alguns tenham falhado, é comum que o desenvolvedor corrija as falhas e volte para o processo selecionando os testes que falharam para nova execução. Este botão junta estas duas ações finais, ou seja, ele descarta a seleção anterior selecionando apenas os testes que falharam e, ao mesmo tempo, re-dispara a execução destes testes. Este botão também está disponível na grade “Testes”.
  • Exibir relatório: Através deste botão, é possível exportar o resultado da execução dos testes selecionados para um relatório em árvore. Diferentemente dos botões anteriormente citados, este não está presente na grade “Testes”.

Abertura e re-abertura do processo:

No intuito de simplificar a experiência do usuário ao máximo, este processo salva todo o ambiente para reuso em uma segunda abertura. O ambiente salvo consta da última expansão feita nos nós da árvore da coluna “Nome” e os últimos registros selecionados. Assim, quando o processo é novamente aberto, a tela que é apresentada será a mesma tela exibida quando o processo foi fechado pela última vez.

Atualização dinâmica das últimas alterações de códigos

É automática a reflexão imediata de cada alteração feita pelo desenvolvedor em qualquer teste ou códigos associados. Em outras palavras, o processo executor dos testes não precisa ser recarregado para que ele passe a ser afetado pelas últimas edições de código.