Volver a la wiki

🧪 Guía Completa de Testing Local - CreaRack Pro v5.0

🧪 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

  1. Preparación del Entorno
  2. Carga de Datos de Prueba
  3. Checklist de Validación Funcional
  4. Casos de Uso a Probar
  5. Testing de Performance
  6. 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


📦 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:

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

UsuarioPasswordRolOrganización
adminadmin123AdminACME Corporation
operator1operator123OperatorACME Corporation
viewerviewer123ReadonlyACME Corporation
techstart_adminadmin123AdminTechStart Inc
global_adminadmin123AdminGlobal Networks

✅ Checklist de Validación Funcional

1. Autenticación y Usuarios ✅

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 ✅

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 ✅

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

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

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

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) ✅

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:


6. Blueprints ✅

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 ✅

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

Operator Role

Readonly Role

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:

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

  1. Login como admin
  2. Crear grupo “Datacenter B - Production”
  3. Crear 3 racks: RACK-B-01, RACK-B-02, RACK-B-03
  4. Añadir dispositivos a cada rack:
    • RACK-B-01: Core Switch, Firewall
    • RACK-B-02: Distribution Switches
    • RACK-B-03: Servers
  5. Crear blueprint “Datacenter B Layout”
  6. Añadir racks al blueprint
  7. Dibujar conexiones entre dispositivos
  8. Guardar blueprint

Validar:


Caso 2: Backup y Comparación de Configuraciones

  1. Seleccionar dispositivo CORE-SWITCH-01
  2. Ver backups existentes (debería haber 3)
  3. Abrir backup más reciente
  4. Ver contenido de configuración
  5. Comparar backup 1 vs backup 2
  6. Ver diff de cambios
  7. (Opcional) Disparar backup manual como Admin

Validar:


Caso 3: Gestión Multi-Tenant

  1. Login como admin (ACME Corporation)
  2. Crear rack RACK-ACME-01
  3. Logout
  4. Login como techstart_admin (TechStart Inc)
  5. Intentar ver RACK-ACME-01 → NO debería aparecer
  6. Crear rack RACK-TECH-01
  7. Logout
  8. Login como admin (ACME Corporation)
  9. Intentar ver RACK-TECH-01 → NO debería aparecer

Validar:


Caso 4: Scripts Templates Workflow

  1. Login como operator1
  2. Ir a Script Templates
  3. Ver templates existentes
  4. Filtrar por cisco_ios
  5. Crear nuevo script “Show CDP Neighbors”
  6. Content: show cdp neighbors detail
  7. Guardar
  8. Editar descripción
  9. Intentar eliminar → Debería fallar (403)
  10. Logout
  11. Login como admin
  12. Eliminar script creado → Debería funcionar

Validar:


📊 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:

  1. Pasos para reproducir
  2. Comportamiento esperado
  3. Comportamiento actual
  4. Screenshots (si aplica)
  5. 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:


Ú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

Subir