stress-http-tester
v1.0.3
Published
Simple HTTP stress test library for Node.js
Maintainers
Readme
Stress HTTP Tester
🚀 Stress HTTP Tester es una herramienta ligera para realizar pruebas de estrés a APIs HTTP desde Node.js. Permite enviar múltiples peticiones concurrentes a un endpoint, validar respuestas y medir el rendimiento del servidor.
Puede usarse como:
- CLI (herramienta de terminal)
- Librería dentro de proyectos Node.js
Es ideal para:
- Pruebas de carga de APIs
- Medición de rendimiento
- Validación automática de respuestas
- Detectar endpoints lentos
- Pruebas antes de despliegues en producción
Características
- Enviar miles de peticiones HTTP
- Configurar concurrencia
- Validar código de estado HTTP
- Validar estructura de respuesta
- Generar valores aleatorios en payload
- Mostrar barra de progreso en consola
- Usar mediante CLI o como librería
- Configuración mediante JSON
Instalación
Ejecutar directamente con npx
npx stress-http-tester test.jsonInstalar globalmente
npm install -g stress-http-testerLuego ejecutar:
stress-http-tester test.jsonInstalar como librería
npm install stress-http-testerUso desde la terminal (CLI)
Ejemplo:
stress-http-tester config.json
stress-http-tester test.jsonArchivo de configuración
Debes crear un archivo JSON con la configuración del test.
Ejemplo test.json:
{
"url": "http://localhost:3000/api/test",
"method": "POST",
"requests": 100,
"concurrency": 10,
"headers": {
"Content-Type": "application/json"
},
"payload": {
"email": "test<random>@mail.com"
},
"expectedStatus": 200,
"expectedBody": {
"success": true
}
}Opciones de configuración
| Opción | Descripción | | -------------- | ------------------------------------ | | url | Endpoint de la API | | method | Método HTTP (GET, POST, PUT, DELETE) | | requests | Número total de peticiones | | concurrency | Número de peticiones concurrentes, simula varios usuarios al tiempo | | headers | Encabezados HTTP | | payload | Cuerpo de la petición | | expectedStatus | Código HTTP esperado | | expectedBody | Estructura esperada de la respuesta |
Valores aleatorios en el payload
Puedes usar el texto <random> dentro del payload.
Ejemplo:
{
"email": "usuario<random>@correo.com"
}Cada petición reemplazará <random> por un número diferente.
Ejemplo generado:
[email protected]
[email protected]
[email protected]Esto es útil para evitar datos duplicados en APIs.
Ejemplo de salida en consola
STRESS HTTP TESTER
**************************************************
_____ _______ _____ ______ _____ _____
/ ____|__ __| __ \| ____/ ____/ ____|
| (___ | | | |__) | |__ | (___| (___
\___ \ | | | _ /| __| \___ \\___ \
____) | | | | | \ \| |____ ____)|___) |
|_____/ |_| |_| \_\______|_____/_____/
STRESS HTTP TESTER TOOL
BY JOHN CASTIBLANCO
**************************************************
Iniciando prueba de estrés...
Progreso |████████████░░░░░░| 60% || 600/1000 Requests
RESULTADOS
Exitosas: 980
Fallidas: 20
Tiempo promedio: 120 ms
Requests por segundo (RPS): 850Detalle:
{
"exitosas": 0,
"fallidas": 100,
"tiempo_promedio_ms": 12520,
"criterio_exito": {
"status_esperado": 200,
"body_esperado_base": {
"success": true
}
},
"resumen_peticiones": [
{
"numero": 1,
"status": 200,
"tiempo_ms": 161,
"exito": false,
"motivo": "expectedBody dont Match"
},
{
"numero": 2,
"status": 200,
"tiempo_ms": 138,
"exito": false,
"motivo": "expectedBody dont Match"
}...
]Uso como librería
También puedes usar Stress HTTP Tester dentro de un proyecto Node.js.
const { stressTest } = require("stress-http-tester");
(async () => {
const resultado = await stressTest({
url: "http://localhost:3000/api/test",
method: "POST",
requests: 100,
concurrency: 10,
payload: {
email: "test<random>@mail.com"
},
expectedStatus: 200,
expectedBody: {
state: 'ok'
}
});
response.json(resultado)
})();Ejemplo de resultado
{
"exitosas": 100,
"fallidas": 0,
"tiempo_promedio_ms": 122.24,
"criterio_exito": {
"status_esperado": 200,
"body_esperado_base": {
"state": "ok"
}
},
"resumen_peticiones": [
{
"numero": 1,
"status": 200,
"tiempo_ms": 167,
"exito": true,
"motivo": null
},
{
"numero": 2,
"status": 200,
"tiempo_ms": 143,
"exito": true,
"motivo": null
}...
]
}Recomendaciones de rendimiento
Para pruebas de carga más altas:
- Aumentar la concurrencia
- Evitar guardar logs de todas las peticiones
Contribuciones
Las contribuciones son bienvenidas. Si encuentras un error o deseas proponer una mejora, puedes abrir un issue o enviar un pull request.
❤️ Apoya el proyecto
Si stress-http-tester te ayudó a probar tus APIs puedes apoyar su desarrollo.
Licencia
Uso personal y educativo únicamente. El uso comercial requiere autorización del autor. Ver archivo LICENSE para más información.
Autor
- John Castiblanco
- [email protected]
- https://waco.com.co
