Cómo probar un módulo PrestaShop en staging antes de instalarlo en producción

408 vistas

Cómo probar un módulo PrestaShop en staging antes de instalarlo en producción

Instalar un módulo no probado en una tienda PrestaShop en producción es una de las causas más comunes de tiempo de inactividad, flujos de pago rotos y pérdida de ingresos. Un entorno de staging te proporciona un sandbox seguro para validar cada módulo antes de que toque tu tienda de producción. Esta guía te lleva a través del proceso completo - desde la creación de una copia staging de tu tienda hasta las pruebas exhaustivas del módulo y el despliegue seguro en producción.

Por qué necesitas un entorno de staging

Un entorno de staging es una copia exacta de tu tienda en vivo que no es accesible al público. Refleja tu base de datos de producción, archivos, tema, configuración y módulos instalados. Probar en staging te permite detectar problemas que de otro modo afectarían a tus clientes.

Esto es lo que puede salir mal cuando te saltas el staging:

  • Conflictos de módulos - El nuevo módulo puede entrar en conflicto con un módulo existente, causando pantallas en blanco, errores JavaScript o funcionalidad rota en páginas específicas.
  • Incompatibilidad de tema - Las plantillas del módulo pueden no renderizarse correctamente con tu tema, especialmente si usas un tema personalizado o muy modificado.
  • Degradación del rendimiento - Algunos módulos añaden consultas pesadas a la base de datos, archivos CSS/JS adicionales o llamadas API externas que ralentizan los tiempos de carga.
  • Corrupción de la base de datos - Los módulos mal escritos pueden modificar tablas principales, añadir columnas sin gestión de migración adecuada, o crear triggers que interfieren con los datos existentes.
  • Interrupción de pagos - Si un módulo rompe el proceso de checkout o interfiere con tu pasarela de pago, pierdes ventas desde el momento de la instalación hasta que descubres y solucionas el problema.

Opción 1 - Configuración manual del staging (subdominio)

Este es el enfoque más común y funciona con cualquier proveedor de hosting. Creas un subdominio como staging.tutienda.com y copias allí tus archivos y base de datos de producción.

Paso 1 - Crear el subdominio

En tu panel de control de hosting (cPanel, Plesk o DirectAdmin), crea un nuevo subdominio. Apúntalo a un nuevo directorio.

Paso 2 - Copiar archivos de producción

# Vía SSH (método más rápido)
cp -r /home/tuusuario/public_html/* /home/tuusuario/staging.tutienda.com/

# O crea primero un archivo comprimido
cd /home/tuusuario/public_html
tar czf /tmp/prestashop-backup.tar.gz --exclude='var/cache' --exclude='var/logs' .
cd /home/tuusuario/staging.tutienda.com
tar xzf /tmp/prestashop-backup.tar.gz

Paso 3 - Exportar e importar la base de datos

# Exportar la base de datos de producción
mysqldump -u dbuser -p production_db > /tmp/production_dump.sql

# Crear la base de datos staging
mysql -u root -p -e "CREATE DATABASE staging_db;"
mysql -u root -p -e "GRANT ALL ON staging_db.* TO 'dbuser'@'localhost';"

# Importar en staging
mysql -u dbuser -p staging_db < /tmp/production_dump.sql

Paso 4 - Actualizar la configuración de PrestaShop

# Editar app/config/parameters.php (PrestaShop 1.7+/8.x)
'database_name' => 'staging_db',

# Actualizar la URL de la tienda en la base de datos
mysql -u dbuser -p staging_db -e "
  UPDATE ps_shop_url 
  SET domain = 'staging.tutienda.com', 
      domain_ssl = 'staging.tutienda.com' 
  WHERE id_shop_url = 1;"

mysql -u dbuser -p staging_db -e "
  UPDATE ps_configuration 
  SET value = 'staging.tutienda.com' 
  WHERE name IN ('PS_SHOP_DOMAIN', 'PS_SHOP_DOMAIN_SSL');"

Paso 5 - Limpiar cachés

rm -rf var/cache/prod/* var/cache/dev/*
rm -rf var/cache/smarty/compile/* var/cache/smarty/cache/*

Paso 6 - Restringir acceso

AuthType Basic
AuthName "Acceso Staging"
AuthUserFile /home/tuusuario/.htpasswd
Require valid-user

Header set X-Robots-Tag "noindex, nofollow"

Opción 2 - Staging basado en Docker (Recomendado para desarrolladores)

Docker proporciona el entorno de staging más fiable porque puedes replicar exactamente tu versión PHP de producción, versión MySQL y configuración del servidor.

# docker-compose.yml
version: '3.8'
services:
  prestashop:
    image: prestashop/prestashop:8.1
    ports:
      - "8080:80"
    volumes:
      - ./html:/var/www/html
    environment:
      - DB_SERVER=db
      - DB_NAME=prestashop
      - DB_USER=prestashop
      - DB_PASSWD=tu_contrasena
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=contrasena_root
      - MYSQL_DATABASE=prestashop
      - MYSQL_USER=prestashop
      - MYSQL_PASSWORD=tu_contrasena
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:

Lista de verificación de pruebas para nuevos módulos

Fase 1 - Verificaciones pre-instalación

  • Leer la documentación del módulo - Comprende qué hace el módulo, qué hooks usa y cuáles son sus requisitos.
  • Verificar el contenido de los archivos - Antes de instalar, descomprime el módulo y revisa el código.
  • Crear una copia de seguridad de la base de datos - Incluso en staging, haz un backup antes de instalar.

Fase 2 - Pruebas de instalación

  1. Instalar el módulo a través del Back Office (Módulos > Gestor de módulos > Subir un módulo).
  2. Verificar errores de instalación - Después de la instalación, comprueba que el módulo aparece en la lista.
  3. Verificar cambios en la base de datos - Compara las tablas antes y después de la instalación.

Fase 3 - Pruebas funcionales

  • Página de configuración - ¿Puedes acceder y guardar todas las configuraciones sin errores?
  • Visualización front office - ¿El módulo se muestra correctamente en todas las páginas relevantes?
  • Responsividad móvil - Prueba en viewports móviles.
  • Soporte multilingüe - Si tu tienda usa varios idiomas, verifica la visualización correcta en cada uno.
  • Compatibilidad multitienda - Si usas la función multitienda, prueba el comportamiento en diferentes tiendas.

Fase 4 - Pruebas de conflictos

  • Verificar la consola del navegador - Abre las herramientas de desarrollo (F12) y busca errores JavaScript.
  • Probar el proceso de checkout - Añade un producto al carrito, recorre cada paso y completa un pedido de prueba.
  • Probar el procesamiento de pagos - Realiza pedidos de prueba con cada método de pago.
  • Verificar la funcionalidad de módulos existentes - Asegúrate de que los módulos críticos siguen funcionando.

Fase 5 - Pruebas de rendimiento

# Antes de instalar el módulo, medir la línea base
curl -o /dev/null -s -w "Tiempo: %{time_total}s\n" https://staging.tutienda.com/

# Después de la instalación, medir de nuevo y comparar
curl -o /dev/null -s -w "Tiempo: %{time_total}s\n" https://staging.tutienda.com/

Un módulo bien escrito debería añadir menos de 100ms a los tiempos de carga. Si ves un aumento de 500ms o más, investiga las consultas a la base de datos y la carga de assets del módulo.

Fase 6 - Prueba de desinstalación

  1. Desinstala el módulo desde el Back Office
  2. Verifica que todas las tablas específicas del módulo se eliminan
  3. Comprueba que no quedan hooks, archivos CSS o JavaScript huérfanos
  4. Verifica que el front office vuelve a su estado pre-módulo

Mover un módulo probado a producción

Paso 1 - Planificar el despliegue

Elige un período de bajo tráfico. Consulta tu Google Analytics para identificar cuándo tu tienda tiene menos visitantes.

Paso 2 - Crear una copia de seguridad de producción

mysqldump -u dbuser -p production_db > /tmp/production_backup_$(date +%Y%m%d_%H%M%S).sql

Paso 3 - Instalar en producción

Sube exactamente el mismo archivo ZIP del módulo que probaste en staging. No descargues una nueva versión.

Paso 4 - Aplicar la misma configuración

Configura el módulo con exactamente las mismas configuraciones que en staging.

Paso 5 - Monitorear durante 24-48 horas

Después del despliegue, monitorea activamente los logs de errores PHP, Google Analytics y la tasa de conversión de pedidos.

Trampas comunes del staging a evitar

  • Olvidar actualizar las URLs - Si copias la base de datos pero olvidas actualizar ps_shop_url, tu sitio staging redirigirá a producción.
  • Pasarelas de pago en modo live - Siempre cambia las pasarelas de pago a modo sandbox/test en staging.
  • Notificaciones por email enviadas a clientes - Desactiva el envío de emails en staging o redirige todos los emails a una dirección de prueba.
  • Indexación por motores de búsqueda - Siempre bloquea el staging para los motores de búsqueda.
  • Trabajos cron ejecutándose en staging - Desactiva todos los trabajos cron copiados de producción.

¿Le resultó útil esta respuesta?

¿Aún tiene preguntas?

Can't find what you're looking for? Send us your question and we'll get back to you quickly.

Cargando...
Volver arriba