Testes em projetos Back-End: loading tests com k6, Postman + Newman em APIs REST | pt 1
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:
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:
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):