DEV Community

Cover image for 🚀 Como Criar Testes de Carga com .NET e Cypress
Danilo O. Pinheiro, dopme.io
Danilo O. Pinheiro, dopme.io

Posted on

🚀 Como Criar Testes de Carga com .NET e Cypress

Embora o Cypress seja conhecido como uma ferramenta de testes de front-end e2e (End-to-End), é possível usá-lo em conjunto com uma API .NET para simular carga e avaliar o comportamento do sistema sob diferentes níveis de requisições.

Se você já trabalha com .NET para back-end e Cypress para automação de testes, unir os dois pode trazer validação integrada de performance, estabilidade e qualidade.


📖 Cenário

Vamos criar um projeto .NET 8 Web API e usar o Cypress para enviar várias requisições simultâneas, coletando métricas como:

  • Tempo médio de resposta
  • Taxa de sucesso
  • Comportamento sob carga

🛠️ Pré-requisitos


🏗️ Criando a API .NET

Vamos começar criando uma API simples:

dotnet new webapi -n ApiCarga cd ApiCarga 
Enter fullscreen mode Exit fullscreen mode

No Program.cs:

var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/api/produtos", () => { var produtos = Enumerable.Range(1, 100).Select(i => new { Id = i, Nome = $"Produto {i}", Preco = Random.Shared.Next(10, 500) }); return Results.Ok(produtos); }); app.Run(); 
Enter fullscreen mode Exit fullscreen mode

Execute:

dotnet run 
Enter fullscreen mode Exit fullscreen mode

A API estará disponível em https://localhost:5001/api/produtos.


📦 Configurando o Cypress

  1. Instale o Cypress no projeto:
npm init -y npm install cypress --save-dev 
Enter fullscreen mode Exit fullscreen mode
  1. Abra o Cypress:
npx cypress open 
Enter fullscreen mode Exit fullscreen mode

Ele criará a pasta cypress/ no projeto.


🧪 Criando Teste de Carga no Cypress

No Cypress, crie o arquivo:
cypress/e2e/carga.cy.js

describe('Teste de Carga na API .NET', () => { const totalRequests = 200; // quantidade de requisições simultâneas const endpoint = 'https://localhost:5001/api/produtos'; it('Executa múltiplas requisições e mede o tempo de resposta', () => { const startTime = Date.now(); let completed = 0; for (let i = 0; i < totalRequests; i++) { cy.request(endpoint).then((response) => { expect(response.status).to.eq(200); completed++; }); } cy.then(() => { const endTime = Date.now(); const totalTime = (endTime - startTime) / 1000; cy.log(`⏱️ Tempo total: ${totalTime}s para ${totalRequests} requisições`); }); }); }); 
Enter fullscreen mode Exit fullscreen mode

📌 Observações

  • O Cypress não é a ferramenta ideal para testes de carga de alta escala (o k6 ou JMeter são mais adequados para grande volume).
  • Essa abordagem é útil para validações rápidas de performance durante o desenvolvimento.
  • Para rodar sem interface e mais rápido, use:
npx cypress run --headless 
Enter fullscreen mode Exit fullscreen mode

📊 Melhorando Métricas

Podemos usar bibliotecas do Node.js para salvar métricas em CSV:

npm install fs 
Enter fullscreen mode Exit fullscreen mode

E no teste:

const fs = require('fs'); ... cy.request(endpoint).then((response) => { const duration = Date.now() - startTime; fs.appendFileSync('resultados.csv', `${i},${duration},${response.status}\n`); }); 
Enter fullscreen mode Exit fullscreen mode

Assim, você pode analisar os resultados no Excel ou Power BI.


✅ Conclusão

Integrar .NET e Cypress para testes de carga é uma forma prática de verificar o desempenho de APIs durante o desenvolvimento.
Embora não substitua ferramentas dedicadas de load testing, é excelente para detecção antecipada de problemas de performance.


🤝 Conecte-se Comigo

Se você trabalha com .NET moderno e quer dominar arquitetura, C#, DevOps ou interoperabilidade, vamos conversar:


Disse então ele: Vede não vos enganem, porque virão muitos em meu nome, dizendo: Eu sou o Cristo, e o tempo está próximo. Não vades, portanto, após eles.
Lucas 21:8

Top comments (0)