🧪 Guía Completa de Testing Local - CreaRack Pro v5.0
Última actualización: 20-01-2026 Para: Testing exhaustivo antes de deploy a producción
📋 ÍNDICE
- Preparación del Entorno
- Carga de Datos de Prueba
- Checklist de Validación Funcional
- Casos de Uso a Probar
- Testing de Performance
- Troubleshooting
🚀 Preparación del Entorno
Paso 1: Iniciar Docker
cd CreaRack_Pro_app_Django
docker compose up -d
Paso 2: Verificar que todo funcione
# Ver logs
docker compose logs -f web
# Verificar servicios
docker compose ps
# Debería mostrar:
# - crearack_db (healthy)
# - crearack_cache (healthy)
# - crearack_web (running)
Paso 3: Acceder a la aplicación
- App: http://localhost:8000
- Admin: http://localhost:8000/admin
- API Docs: http://localhost:8000/api/docs
📦 Carga de Datos de Prueba
Opción 1: Script Automático (Recomendado)
# Ejecutar script de carga
docker exec crearack_web python scripts/load_test_data.py
Este script crea:
- 3 Organizaciones
- 5 Usuarios (diferentes roles)
- 5 Grupos de Racks
- 8 Racks
- 10 Dispositivos de red
- 6 Backups de configuración
- 5 Script Templates
- 2 Blueprints
Opción 2: Reset Completo (Empezar desde cero)
# En Git Bash o Linux/Mac
bash scripts/reset_database.sh
# O manualmente:
docker compose down
docker volume rm crearack_pro_app_django_pg_data
docker compose up -d
sleep 10
docker exec crearack_web python manage.py migrate
docker exec crearack_web python scripts/load_test_data.py
Usuarios de Prueba Creados
| Usuario | Password | Rol | Organización |
|---|---|---|---|
| admin | admin123 | Admin | ACME Corporation |
| operator1 | operator123 | Operator | ACME Corporation |
| viewer | viewer123 | Readonly | ACME Corporation |
| techstart_admin | admin123 | Admin | TechStart Inc |
| global_admin | admin123 | Admin | Global Networks |
✅ Checklist de Validación Funcional
1. Autenticación y Usuarios ✅
- Login con usuario admin funciona
- Login con usuario operator funciona
- Login con usuario readonly funciona
- Logout funciona correctamente
- Redirección correcta según rol
- Admin puede acceder a /admin
- Operator NO puede acceder a /admin
- Readonly NO puede acceder a /admin
Cómo probar:
1. Ir a http://localhost:8000
2. Login con admin / admin123
3. Verificar que puedes acceder a todas las funciones
4. Logout
5. Login con viewer / viewer123
6. Verificar que solo puedes VER datos (no crear/editar/eliminar)
2. Gestión de Racks ✅
- Listar racks existentes
- Ver detalles de un rack
- Crear nuevo rack
- Editar rack existente
- Eliminar rack (con confirmación)
- Clonar rack
- Renombrar rack
- Filtrar racks por grupo
- Buscar racks por nombre
Cómo probar:
1. Ir a sección de Racks
2. Ver lista de racks (RACK-A1-01, RACK-A1-02, etc.)
3. Click en "Nuevo Rack"
4. Crear rack TEST-RACK-01 (42U)
5. Editar nombre a TEST-RACK-UPDATED
6. Clonar rack → Verificar que se crea TEST-RACK-UPDATED-COPY
7. Eliminar TEST-RACK-UPDATED-COPY
8. Verificar que se eliminó correctamente
Endpoint API a probar:
# Listar racks
curl http://localhost:8000/api/racks
# Ver rack específico
curl http://localhost:8000/api/racks/1
# Crear rack
curl -X POST http://localhost:8000/api/racks \
-H "Content-Type: application/json" \
-d '{"name":"TEST-API","height_u":42,"organization":1}'
3. Gestión de Dispositivos ✅
- Listar dispositivos en un rack
- Ver detalles de dispositivo
- Crear nuevo dispositivo
- Editar dispositivo
- Mover dispositivo a otra posición (U)
- Mover dispositivo a otro rack
- Eliminar dispositivo
- Ver IP y credenciales de dispositivo
Cómo probar:
1. Abrir rack RACK-A1-01
2. Ver dispositivos (CORE-SWITCH-01, FIREWALL-01, etc.)
3. Click en dispositivo CORE-SWITCH-01
4. Ver detalles: IP 10.0.1.1, Vendor cisco_ios
5. Editar y cambiar notas
6. Crear nuevo dispositivo TEST-DEVICE en posición U10
7. Mover a posición U15
8. Eliminar dispositivo TEST-DEVICE
4. Network Management API ✅
4.1 Device Management
- GET /api/network/device/{id}/details - Ver info de dispositivo
- GET /api/network/device/{id}/credentials - Ver credenciales
Prueba:
# Ver detalles del dispositivo ID 1
curl http://localhost:8000/api/network/device/1/details
# Ver credenciales
curl http://localhost:8000/api/network/device/1/credentials
4.2 Backup Management
- GET /api/network/device/{id}/backups - Listar backups
- GET /api/network/backup/{id}/view - Ver contenido de backup
- POST /api/network/backup/compare - Comparar 2 backups
Prueba:
# Listar backups del dispositivo 1
curl http://localhost:8000/api/network/device/1/backups
# Ver backup específico
curl http://localhost:8000/api/network/backup/1/view
# Comparar backups
curl -X POST http://localhost:8000/api/network/backup/compare \
-H "Content-Type: application/json" \
-d '{"backup1_id":1,"backup2_id":2}'
4.3 Script Templates
- GET /api/network/scripts - Listar templates
- POST /api/network/scripts - Crear template (Admin/Operator)
- PUT /api/network/scripts/{id} - Actualizar template
- DELETE /api/network/scripts/{id} - Eliminar (Admin only)
- GET /api/network/scripts?language=cisco_ios - Filtrar
Prueba:
# Listar scripts
curl http://localhost:8000/api/network/scripts
# Crear script (requiere autenticación)
curl -X POST http://localhost:8000/api/network/scripts \
-H "Content-Type: application/json" \
-d '{"name":"Test Script","script_content":"show version","language":"cisco_ios"}'
# Filtrar por lenguaje
curl "http://localhost:8000/api/network/scripts?language=cisco_ios"
5. Terminal SSH (WebSocket) ✅
- Abrir terminal SSH
- Conectar a dispositivo único
- Conectar a cluster de dispositivos
- Enviar comandos
- Recibir output
- Resize de terminal
- Disconnect limpio
Cómo probar:
1. Ir a sección Terminal
2. Seleccionar dispositivo CORE-SWITCH-01
3. Click "Conectar"
4. Intentar enviar comando "show version"
5. Verificar WebSocket connection en DevTools
6. Cerrar terminal correctamente
Nota: Sin servidor SSH real, la conexión intentará pero fallará. Lo importante es verificar que:
- WebSocket se conecta
- No hay errores de JavaScript
- UI responde correctamente
6. Blueprints ✅
- Listar blueprints
- Crear nuevo blueprint
- Editar blueprint (canvas)
- Añadir racks al canvas
- Añadir dispositivos al canvas
- Dibujar conexiones
- Guardar cambios
- Eliminar blueprint
Cómo probar:
1. Ir a Blueprints
2. Ver "Datacenter A - Layout"
3. Abrir blueprint
4. Intentar añadir rack al canvas
5. Verificar que Konva.js carga correctamente
6. Guardar cambios
7. Crear nuevo blueprint "Test Blueprint"
8. Eliminar "Test Blueprint"
7. Library/Stencils ✅
- Listar categorías de stencils
- Ver stencils por categoría
- Crear stencil desde dispositivo
- Eliminar categoría (Admin only)
- Filtrar stencils
Cómo probar:
1. Ir a Library
2. Ver categorías predefinidas
3. Crear stencil desde CORE-SWITCH-01
4. Nombrar "My Cisco Switch Template"
5. Verificar que aparece en la biblioteca
6. Intentar eliminar categoría como Operator (debe fallar)
7. Login como Admin y eliminar categoría vacía
8. RBAC (Control de Acceso) ✅
Admin Role
- Puede crear/editar/eliminar todo
- Acceso a /admin
- Puede eliminar script templates
- Puede eliminar categorías
- Puede disparar backups manuales
Operator Role
- Puede crear/editar racks y dispositivos
- Puede crear script templates
- NO puede eliminar script templates
- NO puede acceder a /admin
- NO puede eliminar categorías
Readonly Role
- Solo puede VER datos
- NO puede crear nada
- NO puede editar nada
- NO puede eliminar nada
- NO acceso a /admin
Cómo probar:
1. Login como viewer / viewer123
2. Intentar crear rack → Debería dar error 403
3. Intentar editar dispositivo → Debería dar error 403
4. Logout
5. Login como operator1 / operator123
6. Crear rack TEST-OPERATOR → Debería funcionar
7. Intentar DELETE script → Debería dar error 403
8. Logout
9. Login como admin / admin123
10. DELETE script → Debería funcionar
9. Tests de Paridad Automatizados ✅
Hemos “blindado” la paridad con Flask mediante una suite de pruebas automatizadas que verifican:
- Tipos de datos en API Responses (especialmente
floatpara geometría) - Estructura de Schemas (contrato estricto con Frontend)
- Resolución de assets (stencils)
Ejecutar Suite de Paridad:
# Ejecutar toda la suite de paridad
docker compose exec web pytest tests/parity -vv
# Ejecutar solo tests de geometría
docker compose exec web pytest tests/parity/test_geometry.py -vv
# Ejecutar solo tests de esquemas
docker compose exec web pytest tests/parity/test_schemas.py -vv
🎯 Casos de Uso a Probar
Caso 1: Diseñar un Nuevo Datacenter
- Login como admin
- Crear grupo “Datacenter B - Production”
- Crear 3 racks: RACK-B-01, RACK-B-02, RACK-B-03
- Añadir dispositivos a cada rack:
- RACK-B-01: Core Switch, Firewall
- RACK-B-02: Distribution Switches
- RACK-B-03: Servers
- Crear blueprint “Datacenter B Layout”
- Añadir racks al blueprint
- Dibujar conexiones entre dispositivos
- Guardar blueprint
Validar:
- Todos los racks se ven en la lista
- Dispositivos aparecen en posiciones correctas
- Blueprint se guarda y recarga correctamente
Caso 2: Backup y Comparación de Configuraciones
- Seleccionar dispositivo CORE-SWITCH-01
- Ver backups existentes (debería haber 3)
- Abrir backup más reciente
- Ver contenido de configuración
- Comparar backup 1 vs backup 2
- Ver diff de cambios
- (Opcional) Disparar backup manual como Admin
Validar:
- Backups se listan correctamente
- Contenido se muestra formateado
- Diff muestra diferencias claras
- Fechas ordenadas correctamente
Caso 3: Gestión Multi-Tenant
- Login como admin (ACME Corporation)
- Crear rack RACK-ACME-01
- Logout
- Login como techstart_admin (TechStart Inc)
- Intentar ver RACK-ACME-01 → NO debería aparecer
- Crear rack RACK-TECH-01
- Logout
- Login como admin (ACME Corporation)
- Intentar ver RACK-TECH-01 → NO debería aparecer
Validar:
- Aislamiento perfecto entre organizaciones
- Cada usuario solo ve datos de su organización
- No hay cross-tenant data leakage
Caso 4: Scripts Templates Workflow
- Login como operator1
- Ir a Script Templates
- Ver templates existentes
- Filtrar por cisco_ios
- Crear nuevo script “Show CDP Neighbors”
- Content:
show cdp neighbors detail - Guardar
- Editar descripción
- Intentar eliminar → Debería fallar (403)
- Logout
- Login como admin
- Eliminar script creado → Debería funcionar
Validar:
- Operator puede crear y editar
- Operator NO puede eliminar
- Admin puede hacer todo
- Filtros funcionan correctamente
📊 Testing de Performance
1. Carga de Muchos Racks
# Script para crear 100 racks
docker exec crearack_web python manage.py shell -c "
from racks.models import Rack
from core.models import Organization
org = Organization.objects.first()
for i in range(100):
Rack.objects.create(name=f'PERF-TEST-{i:03d}', height_u=42, organization=org)
print('Created 100 racks')
"
# Medir tiempo de carga
time curl http://localhost:8000/api/racks
Objetivo: < 500ms para 100 racks
2. Queries N+1 (Validar Optimizaciones)
# Activar query logging
docker exec crearack_web python manage.py shell -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from django.db import connection
from django.test.utils import override_settings
# Ver queries
from racks.models import Device
devices = list(Device.objects.select_related('rack').all())
print(f'Total queries: {len(connection.queries)}')
for q in connection.queries:
print(q['sql'][:100])
"
Validar: Usar select_related reduce queries significativamente
3. WebSocket Performance
// En DevTools Console
const ws = new WebSocket('ws://localhost:8000/ws/terminal/test-123/');
ws.onopen = () => {
console.time('ping');
ws.send(JSON.stringify({action: 'ping'}));
};
ws.onmessage = (event) => {
console.timeEnd('ping');
console.log('Latency:', event.data);
};
Objetivo: < 50ms de latencia local
🐛 Troubleshooting
Problema: “No module named ‘scripts’”
# Asegurarse de que scripts/__init__.py existe
docker exec crearack_web ls -la scripts/
# Si no existe, crearlo
docker exec crearack_web touch scripts/__init__.py
Problema: “Database connection refused”
# Verificar que PostgreSQL está corriendo
docker compose ps db
# Ver logs
docker compose logs db
# Restart si es necesario
docker compose restart db
Problema: “Static files not found”
# Recopilar archivos estáticos
docker exec crearack_web python manage.py collectstatic --noinput
# Verificar
curl http://localhost:8000/static/js/main.js
Problema: “Tests failing”
# Ejecutar tests con verbose
docker exec crearack_web pytest -vv
# Ver logs detallados
docker exec crearack_web pytest --tb=long
# Ejecutar test específico
docker exec crearack_web pytest network/tests/test_api.py::TestDeviceManagementAPI -v
📝 Reporte de Bugs
Si encuentras bugs durante el testing, documenta:
- Pasos para reproducir
- Comportamiento esperado
- Comportamiento actual
- Screenshots (si aplica)
- Logs relevantes
Template:
## Bug: [Título descriptivo]
### Pasos para reproducir
1. Login como admin
2. Ir a Racks
3. Click en crear rack
4. ...
### Esperado
Debería crear el rack correctamente
### Actual
Error 500 en consola
### Logs
[logs aquí]
### Screenshots
[adjuntar]
✅ Checklist Final Pre-Deployment
Antes de considerar lista la migración, verifica:
- Todos los usuarios pueden login
- RBAC funciona correctamente (Admin, Operator, Readonly)
- CRUD de racks funciona
- CRUD de dispositivos funciona
- Network API responde correctamente (11/11 endpoints)
- Backups se listan y comparan
- Script templates funcionan (crear, editar, filtrar)
- Blueprints se cargan (aunque Konva.js es legacy)
- Library/Stencils funciona
- WebSocket se conecta (aunque falle SSH real)
- Multi-tenancy aísla datos correctamente
- Performance es aceptable (< 500ms para listas)
- No hay errores JavaScript en consola
- Admin Django funciona
- API Docs accesible
- Tests automatizados 23/23 pasando
Última actualización: 21-01-2026 Versión: v5.0.0-beta.2 Estado: Listo para Producción (API Certified & Optimized)
Véase también
- [[crearack-tech—guides—testing]] — guía de testing
- [[crearack-tech—guides—docker-guide]] — guía de Docker Compose
- [[crearack-tech—guides—production-deployment]] — deploy en producción Hetzner
- [[crearack-tech—guides—deploy-checklist]] — checklist de deploy Golden Path
- [[crearack-tech—agents—dev-core]] — perfil de subagente dev-core
- [[crearack-tech—backend—refactoring-guide]] — guía de refactoring