Deixando o Jenkins fazer o trabalho manual - Parte 1

Olá pessoal, tudo bem? :)
Este é o primeiro post de uma série falando um pouco sobre Jenkins. No dia 24/06/2016 estarei no Scrum Gathering falando sobre este tema, por isso resolvi abordar alguns posts sobre o assunto.
Testes de performance muitas vezes são negligenciados, porém são testes muito importantes, por isso vamos aprender como executar estes testes no Jenkins.

Vamos dividir em passos:

Primeiro passo:

Criaremos nossas requisições para a execução do teste de performance. Para a utilização, vou mostrar um simples exemplo em uma API chamada "Academico", que foi desenvolvida por mim e com ajuda de um membro do meu time: Diego Coronel :). Essa API é bem simples: Cadastra alunos, Disciplinas, Professores, Realiza matrícula de alunos e Atribui professor para as disciplinas. Vamos por a mão na massa.

Definição das requisições

Criamos uma requisição simples, passando um objeto que contém Nome, Carga Horária, Horário e Período da disciplina. Adicionamos um Gerenciador de cabeçalho "http" para adicionar o Content-Type: application/json.

Segundo passo:

Criaremos as demais requisições e adicionamos ouvintes(relatórios) e asserts para verificar o status da requisição e o retorno da requisição.

Adicionando mais requisições Adicionando mais requisições

Terceiro passo:

Agora adicionamos a quantidade de usuários virtuais e o tempo de intervalo entre cada requisição. Definir nesse momento um valor qualquer, pois como é uma API simples e para testes, não tenho requisitos não funcionais :).

Definindo uma quantidade de usuários virtuais

Quarto passo:

Agora chegamos na parte em que executamos os testes de performance e coletamos os resultados.

Execução dos testes

Até esse momento fizemos um passo a passo simples para executar os testes de performance em uma API, porém foram feitas várias alterações na API para adicionar a parte do histórico do aluno para lançar notas e verificar se o aluno está aprovado, reprovado ou em prova final.
Preciso rodar os testes de performance mais uma vez, manual. E se ao invés de rodar os testes de forma manual, colocássemos o Jenkins para fazer esse trabalho?
Vamos ver como colocar o nosso amigo Jenkins para fazer esse trabalho.

Primeiro passo é adicionar o plugin performance

Add plugin performance

Depois de instalarmos o plugin criaremos um novo projeto no Jenkins.

Tela configuração jenkins

Criaremos um projeto freestyle, e adicionaremos as configurações para a execução dos testes de performance pelo Jenkins.

Iremos configurar agora os testes para ser executado pelo Jenkins.

Tela configuração jenkins

Configuramos o caminho de onde está o JMeter e o nosso arquivo .jmx (criado na suíte do JMeter).

Definimos onde está o arquivo .jtl (resultado de execução dos testes do JMeter)

Resultado execucao

Precisamos definir limites de erros para nosso build falhar ou ficar instável. No exemplo coloquei -1, ou seja qualquer erro que apresentar nos testes o build irá falhar.

Executar o build do projeto

Logs jenkins Projeto com os testes de performance

Podemos observar os gráficos ao abrir o projeto no Jenkins, neste exemplo, não temos nenhum erro nas requisições. Podemos ver melhor os gráficos clicando sobre eles.

Gráficos

Nesses gráficos é possível observar que o "Adicionar Alunos" está com o tempo de resposta de 200ms. A cada build gerado no Jenkins é possível verificar esses gráficos de performance do projeto.

Agora podemos agendar a execução dos testes:

Agendamento jenkins

Os testes serão executados todos os dias às 22:30, essa foi a configuração definida, mas é possível fazer outras configurações como por exemplo:

# todo minuto
* * * * *
# no minuto 5 de cada hora (ou seja '2:05,3:05,...') 
5 * * * *

Espero que tenham gostado do post, como vimos é simples colocar o nosso amigo Jenkins para fazer o trabalho manual. Até o próximo post onde falarei sobre a execução de testes web com o Selenium no Jenkins.

Rafael Chiavegatto

Analista de testes na FPF tech, possui mais de 7 anos de experiência em testes. Conhecimento em metodologias ágeis, automatização de testes, agile testing e da cultura DevOps.

Manaus - Amazonas