Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine uma ponte. Antes de abri-la ao público, engenheiros realizam testes de carga para garantir que ela suporte o tráfego esperado. Testes de performance em APIs são similares: assegurando que sua aplicação aguente a demanda, evitando colapsos e garantindo uma experiência fluida para os usuários. Em APIs modernas, com alta demanda e expectativas de baixa latência, testes de performance são imprescindíveis para o sucesso.
Nesta aula, vamos construir testes de performance robustos usando as ferramentas Artillery e k6, focando em cenários práticos e aplicáveis em produção com Node.js/Express.js, considerando as particularidades de um ambiente como o HostGator Plano M.
Conceito Fundamental (7 min)
Teste de performance avalia a estabilidade, escalabilidade e responsividade de uma API sob diferentes níveis de carga. Utilizamos métricas como latência, requisições por segundo (RPS) e tempo de resposta para mensurar a performance. Em produção, esses testes são essenciais para identificar gargalos e otimizar a infraestrutura.
Casos de uso comuns incluem simular picos de acesso durante promoções, validar a capacidade do sistema em lidar com o crescimento da base de usuários e garantir a qualidade da experiência mesmo em condições adversas. Essas ferramentas se integram facilmente com outras tecnologias, como sistemas de CI/CD, permitindo automatizar os testes.
Vantagens: Identificação precoce de problemas de performance, otimização de recursos, garantia da qualidade da experiência do usuário.
Desvantagens: Curva de aprendizado inicial, necessidade de planejamento adequado dos testes, possível custo de ferramentas premium.
Implementação Prática (10 min)
Vamos criar um teste de carga simples para uma rota /hello em um servidor Express.js.
// server.js
const express = require('express');
const app = express();
const port = 3000;
app.get('/hello', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(Servidor rodando em http://localhost:${port});
});
// artillery.yml
config:
target: "http://localhost:3000"
phases:
- duration: 10
arrivalRate: 10
scenarios:
- name: "Hello endpoint"
flow:
- get:
url: "/hello"
Instalação do Artillery
📚 Informações da Aula
Curso: API Completo - Node.js & Express
Tempo estimado: 25 minutos
Pré-requisitos: JavaScript básico
npm install -g artillery
Executando o teste
artillery run artillery.yml
// k6.js
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('http://localhost:3000/hello');
sleep(1);
}
Instalação do k6
k6 run k6.js
Os arquivos artillery.yml e k6.js definem os cenários de teste, especificando a URL alvo, duração do teste e a taxa de requisições. A configuração para HostGator Plano M envolve garantir que a porta 3000 esteja aberta e que o servidor Express.js esteja configurado corretamente. O error handling é gerenciado pelas próprias bibliotecas. A documentação inline e os comentários explicam cada passo.
Alternativamente, você pode utilizar diferentes métodos HTTP (POST, PUT, DELETE) e configurar cabeçalhos customizados nos seus testes.
Exercício Hands-On (5 min)
Modifique o script k6.js para simular 50 usuários virtuais acessando a rota /hello durante 30 segundos. Utilize a opção --vus e --duration do k6.
k6 run --vus 50 --duration 30s k6.js
Solução: Observe as métricas geradas pelo k6, como a latência média e o número de requisições por segundo. Caso ocorram erros, verifique a configuração do seu servidor e a conexão com a internet. Próximos passos incluem explorar cenários mais complexos, como testes de stress e testes de soak, e integrar os testes de performance ao seu pipeline de CI/CD. Considere também a utilização de um banco de dados para cenários mais realistas.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!