Docker es uno de esos términos que aparece cada vez más en las ofertas de trabajo de QA y en las conversaciones del equipo de desarrollo. Y si no lo has usado antes, puede sonar intimidante. En este artículo te lo explico desde cero enfocado en lo que realmente necesitas saber como QA Engineer.
Qué es Docker
Docker es una plataforma que permite empaquetar una aplicación junto con todas sus dependencias en una unidad llamada contenedor. Ese contenedor se puede ejecutar en cualquier máquina de forma idéntica, independientemente del sistema operativo o la configuración del entorno.
La idea fundamental es resolver el problema más clásico del desarrollo de software: «en mi máquina funciona». Si la aplicación está en un contenedor Docker, funciona exactamente igual en tu portátil, en el servidor de staging y en producción.
Contenedores vs máquinas virtuales
Antes de Docker, la forma de aislar entornos era con máquinas virtuales. Una máquina virtual emula un ordenador completo — incluido el sistema operativo — lo que la hace muy pesada y lenta de arrancar.
Un contenedor Docker es mucho más ligero porque comparte el sistema operativo del host y solo aísla la aplicación y sus dependencias. Un contenedor arranca en segundos, una máquina virtual puede tardar minutos.
Los conceptos clave de Docker
Imagen — es la plantilla de solo lectura que define cómo es el contenedor. Contiene el sistema operativo base, las dependencias y el código de la aplicación. Es como una receta.
Contenedor — es una instancia ejecutándose de una imagen. Puedes tener múltiples contenedores corriendo a partir de la misma imagen. Es como un pastel hecho siguiendo la receta.
Dockerfile — es el archivo de texto que define cómo se construye una imagen, paso a paso.
Docker Hub — es el registro público de imágenes Docker. Como un GitHub para imágenes. Puedes descargar imágenes de aplicaciones populares como bases de datos, servidores web o entornos de Python.
Docker Compose — es una herramienta para definir y ejecutar aplicaciones con múltiples contenedores. Por ejemplo, tu aplicación web más su base de datos más su servidor de caché, todos arrancando a la vez con un solo comando.
Por qué Docker es importante para un QA Engineer
Docker cambia el trabajo del QA de varias formas concretas.
Entornos reproducibles — con Docker puedes garantizar que el entorno donde ejecutas los tests es exactamente igual al entorno de producción. Se acabó el «en staging funciona pero en producción falla» por diferencias de configuración.
Tests en CI/CD — GitHub Actions usa contenedores Docker para ejecutar los workflows. Cuando configuras tus tests de Playwright en GitHub Actions, se ejecutan dentro de un contenedor Docker con el entorno exacto que defines.
Levantar servicios para tests — necesitas probar tu aplicación contra una base de datos real. Con Docker puedes levantar una base de datos PostgreSQL o MySQL en segundos para los tests y destruirla cuando terminen.
Consistencia entre el equipo — si tú y tu equipo usáis el mismo contenedor Docker para ejecutar los tests, todos obtenéis exactamente los mismos resultados.
Cómo se usa Docker en proyectos QA reales
La forma más común en que un QA Engineer se encuentra con Docker en el día a día es a través de GitHub Actions.
Cuando configuras un workflow de GitHub Actions para ejecutar tus tests de Playwright, el runner de GitHub Actions ejecuta cada paso dentro de un contenedor Ubuntu. El archivo de workflow que defines le dice a Docker qué instalar y cómo ejecutar los tests.
yaml
jobs:
test:
runs-on: ubuntu-latest # Esto es un contenedor Docker
steps:
- uses: actions/checkout@v3
- name: Instalar Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Instalar dependencias
run: pip install -r requirements.txt
- name: Instalar Playwright
run: playwright install --with-deps
- name: Ejecutar tests
run: pytest tests/ -v
Cada vez que ejecutas este workflow, GitHub crea un contenedor nuevo, instala todo desde cero y ejecuta los tests. Eso garantiza que los tests siempre se ejecutan en el mismo entorno limpio.
Instalar Docker en Windows
Si quieres empezar a usar Docker en tu máquina, el proceso en Windows es sencillo.
Descarga Docker Desktop desde docker.com e instálalo. Docker Desktop incluye todo lo que necesitas — el motor de Docker y una interfaz gráfica para gestionar contenedores e imágenes.
Una vez instalado verifica que funciona:
powershell
docker --version
docker run hello-world
El comando docker run hello-world descarga una imagen de prueba y la ejecuta — si ves un mensaje de bienvenida Docker está funcionando correctamente.
Ejecutar tus tests de Playwright en Docker
Una vez que tienes Docker instalado puedes ejecutar tus tests de Playwright dentro de un contenedor usando la imagen oficial de Playwright:
powershell
docker run --rm -v ${PWD}:/tests mcr.microsoft.com/playwright/python:latest pytest tests/ -v
Este comando hace tres cosas. Descarga la imagen oficial de Playwright con Python ya instalado. Monta tu carpeta de tests dentro del contenedor. Ejecuta pytest dentro del contenedor.
El resultado es que tus tests se ejecutan en un entorno idéntico al que usaría cualquier otra máquina o el servidor de CI/CD.
Docker Compose para levantar entornos de prueba completos
Cuando necesitas probar tu aplicación completa — frontend, backend y base de datos — Docker Compose te permite levantarlo todo con un solo comando.
Un ejemplo de docker-compose.yml para un entorno de testing:
yaml
version: '3.8'
services:
app:
image: mi-aplicacion:latest
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:14
environment:
POSTGRES_DB: testdb
POSTGRES_USER: testuser
POSTGRES_PASSWORD: testpass
tests:
image: mcr.microsoft.com/playwright/python:latest
volumes:
- ./tests:/tests
depends_on:
- app
command: pytest /tests -v
Con docker-compose up arrancas la aplicación, la base de datos y ejecutas los tests todo a la vez. Con docker-compose down lo destruyes todo limpiamente.
Lo que necesitas saber de Docker como QA Junior
No necesitas ser un experto en Docker para trabajar en QA. Lo que sí necesitas entender es qué es un contenedor y por qué se usa, cómo leer e interpretar un Dockerfile básico, cómo funciona el runs-on: ubuntu-latest en GitHub Actions y cómo ejecutar comandos básicos de Docker.
Con eso cubres el 90% de las situaciones que te vas a encontrar como QA Engineer en empresas que trabajan con metodologías modernas.
Si quieres saber más sobre CI/CD con GitHub Actions puedes leer GitHub Actions para QA: automatiza tus tests o cómo ejecutar tests en paralelo con pytest.
Y si necesitas ayuda para configurar un entorno de testing en tu proyecto puedes ver mis servicios en fatimaqa.com.
