Testes de performance em APIs

Objetivo

Criar uma aplicação, personalizada e customizável, voltada para testar APIs de maneira simples e prática. Onde ter-se-á, visualmente, um relatório sobre os testes executados.

Do que se trata os testes mencionados?

São testes que simulam transações/requisições de uma grande quantidade e usuários em um determinado tempo.

Por que utilizar Scala?

Scala é uma linguagem orientada a objetos e funcional, baseada fortemente em Java. Com ela você consegue utilizar a ferramenta Gatling, a qual é uma ferramenta para realizar testes de performance.

Utilização do VS Code

Editor de texto criado pela Microsoft que tem um grande potencial. Muitas funcionalidades são adicionadas, modificadas e melhoradas constantemente, além disso, permite adição de diversos plugins, possibilitando programar em diversas linguagens.

Instalando dependências

Primeiramente, baixa-se a IDE a ser utilizada que, no caso, será o VS Code, onde pode ser encontrado no link: https://code.visualstudio.com/

Versão do java instalada
Configurações avançadas do sistema
Adicionando JAVA_HOME
Plugin servidor para Scala

Criando o projeto

Abre-se o terminal e navega-se até a pasta onde deseja criar o projeto. Feito isso, digita-se o seguinte comando:

Criação do projeto

Estrutura do projeto

Estrutura do projeto
  • src/main/scala — contém todo o código em scala desenvolvido
  • src/main/scala/Main.scala — ponto inicial do projeto
  • build.sbt — arquivo de definição e compilação

Customizando projeto

Com a estrutura já criada, altera-se o arquivo build.sbt para o seguinte código:

build.sbt
project/plugins.sbt
Estrutura para criação de testes

Criação do teste

No diretório ‘src/test/scala’ cria-se um arquivo chamado ‘Test.scala’. Nele é que se programa os testes de performance e, com isso, insere-se o seguinte algoritmo:

Criação do teste
  • Importação das bibliotecas necessárias para execução
  • Declaração da classe, onde a mesma deve herdar de Simulation
  • httpConf — configuração comum para todas as requisições
    (nesta classe, consegue-se cabeçalhos, linguagem, tipo de agente, etc)
  • scenario(“TESTE”) — definição do cenário
  • exec(http(“REQUEST”) — requisição HTTP, onde é informado um nome o qual será apresentado ao executar o teste
  • .get(“/”)) — url destinada para o método GET
  • setUp( — configuração dos cenários a serem simulados
  • scn.inject(atOnceUsers(5)) — injetando no cenário 5 usuários para simulação
  • .protocols(httpConf) — anexando configuração HTTP declarada acima

Execução do teste

Resultado do teste executado

Visualização de relatórios

Para visualização do relatório gerado pela ferramenta Gatling, basta acessar o diretório ‘target\gatling\’, no diretório terá diversas sub-pastas referentes aos testes executados, a cada teste executado uma nova pasta é criada contendo informações para gerar o relatório. Sendo assim, basta acessar alguma das pastas e selecionar o arquivo index.html (presente dentro da pasta).

Tipos de relatórios

Os dados exibidos abaixo é referente ao teste criado.

Tempos de respostas das execuções distribuídas entre intervalos padronizados.
Exibe o número de solicitações que obtiveram sucesso e as que não obtiveram.
Estatísticas padrões como valores mínimos, máximos, média, desvio padrão e percentuais globais e por solicitação.
Usuários ativos durante a simulação (total e por cenário)
Distribuição dos tempos de resposta
Percentual do tempo de resposta ao longo do tempo, apenas para solicitações bem sucedidas
Número de solicitações enviadas por segundo ao longo do tempo
Número de respostas por segundo ao longo do tempo

Conclusão

Nota-se uma grande facilidade em criar testes de performance customizados de maneira simples e prática. Onde, com poucas linhas de código, tem-se toda a aplicação de testes construída.

Referências

Bachelor in Computer Science, MBA in Software Architecture and .NET Developer.

Bachelor in Computer Science, MBA in Software Architecture and .NET Developer.