Testes em projetos Back-End: loading tests com k6, Postman + Newman em APIs REST | pt 1

Renato Groffe
4 min readNov 1, 2021

Neste novo artigo dou início a uma série focada na implementação e automação de testes envolvendo projetos Back-End, quer se tratem de REST APIs, jobs/serviços de execução contínua, aplicações serverless… Meu objetivo com essa iniciativa será trazer dicas, truques e ferramentas úteis, procurando assim auxiliar Desenvolvedores e profissionais da área de Quality Assurance (QA) na obtenção de aplicações com um comportamento mais confiável em produção.

E aproveito esta oportunidade para um convite…

Dia 03/11 (quarta) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Será uma live abordando dicas e truques para simplificar o desenvolvimento de soluções baseadas em mensageria com .NET.

Ao longo da apresentação serão cobertos diversos exemplos envolvendo tecnologias como .NET, Kafka, RabbitMQ, Azure Functions, Azure Event Grid e vários outros serviços que fazem parte da nuvem Microsoft.

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-mensageria-dotnet

Testes de carga com k6

O k6 é uma ferramenta open source e multiplataforma de linha de comando para a execução de testes de carga (loading tests). Destaca-se pela sua facilidade de configuração, além da capacidade de integração sem complicações com diversas soluções de automação, serviços em nuvem e tecnologias voltadas ao desenvolvimento Web.

Para a instalação do k6 em Windows podemos utilizar o gerenciador de pacotes Chocolatey:

choco install k6

Em ambientes Ubuntu/Debian há a possibilidade de uso de apt-get para a instalação, em macOS de Homebrew e até mesmo uma imagem Docker chamada loadimpact/k6 pode ser empregada na execução do k6… Maiores informações sobre opções de como instalar esta ferramenta podem ser encontradas no link:

https://k6.io/docs/getting-started/installation/

Os testes executados com o k6 são codificados em JavaScript. No exemplo a seguir temos configuradas estas verificações para o envio de solicitações GET a um endpoint de uma API REST (http://localhost:5000/contador) durante 10 segundos (duration), emulando 30 usuários simultâneos (vus) e checando ainda se o retorno das requisições será o código 200 (OK):

A execução deste script aconteceu por meio da instrução:

k6 run tests-apicontagem.js

Na imagem seguinte podemos observar o k6 em execução:

Já a próxima imagem traz o resultado final da execução desses testes, indicando seu sucesso e diversas estatísticas coletadas durante este procedimento:

A aplicação que utilizei neste teste foi disponibilizada no GitHub:

https://github.com/renatogroffe/ASPNETCore6_RC2-REST_API-ContagemAcessos

O potencial do k6 vai muito além do que foi demonstrado nesta seção. Podemos incluir num script de testes thresholds, que nada mais são do que critérios indicando o sucesso ou falha na execução das verificações (recurso extremamente útil em processos de automação). Há também integrações com soluções como Azure DevOps, GitHub Actions, Postman, Apache Kafka, Visual Studio Code e Grafana.

A documentação do k6 pode ser acessada através do link:

https://k6.io/docs/

Aproveito este espaço para agradecer ao Ramon Durães (Microsoft MVP, DevPrime) pela indicação desta ferramenta, muito flexível e capaz de atender aos mais variados envolvendo testes de Web Apps.

Automatizando testes de APIs REST com Postman + Newman

Podemos certamente adaptar o uso frameworks convencionais de testes para validação de APIs REST, mas e se fosse possível ir além utilizando uma tecnologia projetada especificamente para este fim?

Muitos profissionais desconhecem tal fato, mas o Postman pode ser uma resposta a esta pergunta. Gratuito e com recursos que vão muito além de sua popular interface gráfica, podemos elaborar com o Postman roteiros de testes complexos (Collections) e executá-los através da ferramenta de linha de comando Newman.

Isto abre caminho para automatizar o processamento de testes de APIs REST dentro de soluções como Azure DevOps e GitHub Actions, chegando até mesmo à geração de relatórios detalhando os resultados!

Já abordei a automação de testes de APIs REST com Postman e Newman em 2 artigos neste blog:

Automatizando testes de APIs REST com Postman + Newman

Postman + Newman: automatizando testes de APIs REST com Azure DevOps e GitHub Actions

E também em uma live no Canal .NET com o Vinicius Moura (Microsoft MVP, MTAC):

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker