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
- .NET SDK 8.0+
- Node.js 18+
- Cypress
- Docker (opcional, para execução isolada)
🏗️ Criando a API .NET
Vamos começar criando uma API simples:
dotnet new webapi -n ApiCarga
cd ApiCarga
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();
Execute:
dotnet run
A API estará disponível em https://localhost:5001/api/produtos
.
📦 Configurando o Cypress
- Instale o Cypress no projeto:
npm init -y
npm install cypress --save-dev
- Abra o Cypress:
npx cypress open
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`);
});
});
});
📌 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
📊 Melhorando Métricas
Podemos usar bibliotecas do Node.js para salvar métricas em CSV:
npm install fs
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`);
});
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:
- ✍️ Medium
- 📬 contato@dopme.io
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)