Testes de performance em APIs

Objetivo

Do que se trata os testes mencionados?

Por que utilizar Scala?

Utilização do VS Code

Instalando dependências

Logo após, deve-se instalar o Java 8 JDK, caso não tenha já instalado, o qual pode ser encontrado neste site: https://www.oracle.com/technetwork/java/javase/downloads/index.html

Após a instalação, abre-se o terminal e verifica-se a versão que instalou, se está realmente correta:

Versão do java instalada

Agora, necessita-se configurar o JAVA_HOME. Para isso, vá em ‘Painel de Controle’, ‘Sistema’ e ‘Configurações avançadas do sistema’. Irá ser aberto uma janela, seleciona-se a opção ‘Variáveis de Ambiente’:

Configurações avançadas do sistema

Após abrir a janela contendo as variáveis de ambiente, adiciona-se uma nova, caso não exista, chamada JAVA_HOME, contendo como valor o caminho do JDK instalado anteriormente:

Adicionando JAVA_HOME

Para executar programas feitos em Scala, precisa-se de um servidor para o mesmo. O próprio VS Code tem um plugin que disponibiliza tal recurso, encontrado no link: https://marketplace.visualstudio.com/items?itemName=dragos.scala-lsp. Basta clicar em ‘Instalar’ que será aberto o plugin no VS Code, onde deverá selecionar, também, a opção ‘Instalar’. Com o plugin instalado, reinicie a IDE.

Plugin servidor para Scala

Tendo como base a necessidade de executar os comandos do Scala em um terminal, tem-se que instalar uma ferramenta que se chama SBT, encontrada em: https://www.scala-sbt.org/download.html?_ga=2.81410135.1173509472.1539609934-542443654.1539609934. Basta baixá-la e executar o instalador.

Criando o projeto

— sbt new scala/hello-world.g8

Tal comando irá criar um projeto baseado no tamplete ‘hello-world’ do GitHub. Após executar o comando, o mesmo irá solicitar o nome do projeto, dá-se o nome de ‘teste-automatizado’.

Criação do projeto

Estrutura do projeto

Estrutura do projeto
  • project — utilizado para instalar plugins e dependências
  • 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

build.sbt

O qual servirá para adicionar as dependências necessárias para o desenvolvimento.

Além disso, cria-se o arquivo de nome ‘plugins.sbt’ dentro da pasta ‘project’ e insere-se o seguinte código:

project/plugins.sbt

Na estrutura do projeto, cria-se mais uma sub-pasta para desenvolvimento dos teste, ficando dessa maneira:

Estrutura para criação de testes

Após realizar todas as alterações. Executa-se o terminal, navega-se até o diretório onde o projeto se encontra e executa o seguinte comando

— sbt

Com isso o terminal reconhecerá todos os comandos referente a ferramenta SBT. Logo em seguida, executa-se o seguinte comando:

— compile

Isso fará com que todas as dependências do projeto sejam baixadas.

Criação do teste

Criação do teste
  • No arquivo coloca-se o nome do pacote, o qual é opcional
  • 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

Vale ressaltar que foi criada uma API simples como teste para a aplicação construída.

Com o código todo escrito, deve-se executar o seguinte comando:

— gatling:test

Com isso, executará o teste correspondente e o resultado final gerado será:

Resultado do teste executado

Como pode-se observar, o teste executou 5 requisições e para todas apresentou-se uma resposta com tempo menor que 800ms, sendo assim o teste resultou em sucesso.

Visualização de relatórios

Tipos de relatórios

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

Obs.: Relatórios podem ser gerados a partir do arquivo ‘simulation.log’, mesmo que o cenário tenha sido interrompido.

O código referente a aplicação criada se encontra em: https://github.com/alex250195/modelo.teste

Conclusão

Referências

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store