Como gerar mais valor à execução de testes automatizados com o Report Builder

Como utilizar, instalar, otimizar para análise de casos de testes com falha e todas as vantagens da biblioteca.

Tiago Koubo
Accenture Digital Product Dev

--

Introdução

Muitas vezes não conseguimos transmitir tudo aquilo que queremos para o cliente e para o time interno apenas com o report nativo do Cucumber. Também pode acontecer que nosso pipeline no CI (Continuous Integration) precise de um toque, digamos, mais apresentável e organizado no final da execução dos testes, que demonstre gráficos, números, etc. Diante deste cenário, encontrei o Report Builder e apliquei no meu contexto de trabalho. Nos tópicos a seguir vou mostrar como utilizar, instalar, otimizar para análise de casos de testes com falha e as vantagens, além de um exemplo de como gerar relatórios automáticos após cada execução.

O que é o Report Builder

É uma biblioteca que faz o merge do Cucumber JSON Reports e gera um Report de Test em Html.

Contexto de uso

Quando escrevi este post estava utilizando o Report Builder nos testes automatizados de mobile, com o Framework Appium e a linguagem de programação Ruby. Portanto, todos os exemplos de como aplicar e implementar vão ser mostrados com essa configuração.

Como é o Report Nativo do Cucumber

O report nativo do Cucumber apresenta a quantidade de passos e de cenários, a situação de cada um (se passou, falhou, etc.), o tempo de execução, a descrição dos cenários e os passos dos casos testes com seu respectivo StackTrace em caso de falha, conforme a imagem a seguir:

Comparação com o Report Builder

O Report Builder, por sua vez, possibilita visualizar as informações com maior clareza e organização, e é possível ter uma visão geral das funcionalidades e cenários que passaram e falharam em um gráfico. Além disso, podemos navegar entre overview, features, summary e errors, o que torna o report bem mais organizado. Vamos passar por cada uma dessas funcionalidades:

Overview: visão geral do que passou ou falhou em um gráfico.

Overview do Report Builder

Features: exibe todas as features com seus respectivos casos e passos de testes e o que falhou e passou. Aqui tudo é dinâmico, um expande o outro quando é clicado. A ordem de abertura é Funcionalidade>Cenários>Passos.

Features no Report Builder

Summary: exibe um sumário das features e scenarios com seus respectivos status e erros. É possível fazer uma pesquisa específica e colocar em ordem crescente ou decrescente.

Summary no Report Builder

Errors: todos os cenários que falharam, organizados pelo mesmo tipo de erro. Quando clicamos no erro aparece uma lista dos cenários, com os passos e o StackTrace.

Errors no Report Builder

Como instalar

Simples. Só usar o comando:

gem install report_builder

Como gerar relatórios automáticos a cada Execução

No parâmetro “input_path”, devemos inserir o nome do .json que será consumido pela biblioteca para gerar o HTML. Isso acontece dentro do arquivo hooks, no método at_exit, que é responsável pelo encerramento do Driver. No parâmetro “report_path” informamos para qual lugar queremos que o relatório seja exportado. Veja o exemplo:

at_exit do  $driver.driver_quitReportBuilder.input_path = "cucumber.json"ReportBuilder.configure do |config|
config.report_path = "reports/run"
config.report_types = [:json, :html]
options = {
report_title: "Automacao QA"
}
ReportBuilder.build_report options
end

Não podemos esquecer que para executarmos os testes é necessário exportar o nome do .json exatamente como foi configurado no código.

cucumber -p android features/ --format json --out cucumber.json

Gerando mais valor com print screen quando falhar o teste

Talvez seja ineficiente e desgastante analisar os casos de testes que falharam somente pelo StackTrace. Portanto, para facilitar, seria bom termos um print screen da tela referente ao momento da falha. Para isso, temos este exemplo de código, que tira um print screen somente quando o passo falha e anexa ao report:

After do |scenario|
if scenario.failed?
screenshot 'image.png'
embed("image.png", 'image/png')
end
end

Conclusão

Sempre é possível encontrar uma solução melhor para valorizar nosso trabalho, dar visibilidade a ele e gerar mais valor. Para isso às vezes é reciso só sair do comum e buscar um novo caminho. Espero que este post tenha te ajudado de alguma forma neste sentido. Tem alguma contribuição? Aproveite e deixe um comentário! Até a próxima.

--

--

Tiago Koubo
Accenture Digital Product Dev

Formado em Sistemas de Informação — + 7 anos de experiência em Testes de Software — Certificado CBTS, CTFL-AT e CTAL-TAE