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.
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.
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 :).
Quarto passo:
Agora chegamos na parte em que executamos os testes de performance e coletamos os resultados.
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
Depois de instalarmos o plugin criaremos um novo projeto no 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.
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)
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
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.
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:
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.