Módulo 03: Gestión de Pruebas con TestLink
Objetivos del módulo
- Comprender qué es TestLink y su rol en la gestión de pruebas
- Instalar y configurar TestLink
- Crear proyectos, planes de prueba y casos de prueba
- Ejecutar pruebas y generar informes
- Integrar TestLink con Jira
1. ¿Qué es TestLink?
TestLink es una herramienta open source para la gestión de casos de prueba. Permite planificar, organizar y hacer seguimiento de las pruebas.
| Característica | Descripción |
|---|---|
| Open source | Gratuito (PHP + MySQL) |
| Gestión centralizada | Todos los casos de prueba en un lugar |
| Planes de prueba | Organizar ejecuciones por versión/sprint |
| Resultados | Registrar pass/fail/blocked con evidencia |
| Reportes | Informes de ejecución, métricas de cobertura |
| Integraciones | Jira, Redmine, Mantis para enlazar bugs |
TestLink vs otras herramientas
| Herramienta | Tipo | Coste |
|---|---|---|
| TestLink | Open source | Gratis |
| TestRail | Comercial | De pago |
| Zephyr | Plugin Jira | De pago |
| qTest | Comercial | De pago |
| Xray | Plugin Jira | De pago |
2. Instalación
Opción 1: Docker (recomendada)
# Crear red Docker
docker network create testlink-net
# Base de datos MariaDB
docker run -d --name mariadb \
--network testlink-net \
-e MARIADB_ROOT_PASSWORD=root123 \
-e MARIADB_DATABASE=testlink \
-e MARIADB_USER=testlink \
-e MARIADB_PASSWORD=testlink123 \
mariadb:10
# TestLink
docker run -d --name testlink \
--network testlink-net \
-p 8080:8080 \
-e TESTLINK_DATABASE_HOST=mariadb \
-e TESTLINK_DATABASE_NAME=testlink \
-e TESTLINK_DATABASE_USER=testlink \
-e TESTLINK_DATABASE_PASSWORD=testlink123 \
bitnami/testlink:latest
Accede a http://localhost:8080 → Usuario: user / Contraseña: bitnami
Opción 2: XAMPP (alternativa manual)
- Instala XAMPP (Apache + MySQL + PHP)
- Descarga TestLink de testlink.org
- Extrae en
xampp/htdocs/testlink/ - Inicia Apache y MySQL desde XAMPP
- Accede a
http://localhost/testlink/install/ - Sigue el asistente de instalación
3. Conceptos clave
Jerarquía de TestLink
graph TD
P[Proyecto de prueba] --> TP1[Plan de prueba 1<br/>v1.0]
P --> TP2[Plan de prueba 2<br/>v2.0]
P --> TS[Test Suite<br/>Carpeta]
TS --> TC1[Caso de prueba 1]
TS --> TC2[Caso de prueba 2]
TS --> TC3[Caso de prueba 3]
TP1 --> B1[Build 1.0.0]
TP1 --> B2[Build 1.0.1]
style P fill:#9C27B0,color:white
style TP1 fill:#2196F3,color:white
style TS fill:#FF9800,color:white
style TC1 fill:#4CAF50,color:white
| Concepto | Descripción |
|---|---|
| Test Project | El proyecto principal (ej: “Mi Aplicación”) |
| Test Suite | Carpeta para organizar casos (ej: “Login”, “Pagos”) |
| Test Case | Un caso de prueba individual con pasos |
| Test Plan | Plan para una versión/sprint con casos asignados |
| Build | Versión específica que se está probando |
| Execution | La ejecución real de un caso: Pass, Fail, Blocked |
4. Crear un proyecto de prueba
Paso 1: Crear el Test Project
- Menú Test Project Management → Create
- Nombre:
Tienda Online - Prefijo:
TO - Descripción:
Pruebas de la aplicación de tienda online - Opciones: ✅ Enable Requirements, ✅ Enable Testing Priority
Paso 2: Crear Test Suites
Organiza los casos por funcionalidad:
Tienda Online (Proyecto)
├── 📁 Autenticación
│ ├── 📁 Login
│ └── 📁 Registro
├── 📁 Catálogo
│ ├── 📁 Búsqueda
│ └── 📁 Filtros
├── 📁 Carrito
│ ├── 📁 Añadir productos
│ └── 📁 Checkout
└── 📁 Administración
├── 📁 Gestión de productos
└── 📁 Gestión de usuarios
5. Escribir casos de prueba
Estructura de un caso de prueba
| Campo | Descripción |
|---|---|
| ID | Generado automáticamente (TO-1, TO-2…) |
| Título | Nombre descriptivo y único |
| Resumen | Descripción breve del objetivo |
| Precondiciones | Condiciones previas necesarias |
| Pasos | Acciones numeradas |
| Resultado esperado | Qué debe pasar en cada paso |
| Prioridad | Alta, Media, Baja |
| Tipo de ejecución | Manual o Automatizado |
Ejemplo: Caso de prueba para Login
ID: TO-1
Título: Login exitoso con credenciales válidas
Suite: Autenticación > Login
Prioridad: Alta
Tipo: Manual
Precondiciones:
- Usuario registrado: test@mail.com / Password123!
- Navegador Chrome actualizado
- Aplicación en http://localhost:3000
Pasos:
┌─────┬──────────────────────────────────────┬──────────────────────────────────────┐
│ # │ Acción │ Resultado esperado │
├─────┼──────────────────────────────────────┼──────────────────────────────────────┤
│ 1 │ Abrir http://localhost:3000/login │ Se muestra el formulario de login │
│ 2 │ Escribir "test@mail.com" en email │ El campo muestra el email │
│ 3 │ Escribir "Password123!" en password │ El campo muestra puntos/asteriscos │
│ 4 │ Hacer clic en "Iniciar sesión" │ Redirección al dashboard │
│ 5 │ Verificar la URL │ URL = /dashboard │
│ 6 │ Verificar mensaje de bienvenida │ Se muestra "Bienvenido, test" │
└─────┴──────────────────────────────────────┴──────────────────────────────────────┘
Ejemplo: Caso negativo
ID: TO-2
Título: Login fallido con contraseña incorrecta
Suite: Autenticación > Login
Prioridad: Alta
Precondiciones:
- Usuario registrado: test@mail.com / Password123!
Pasos:
┌─────┬──────────────────────────────────────┬──────────────────────────────────────┐
│ # │ Acción │ Resultado esperado │
├─────┼──────────────────────────────────────┼──────────────────────────────────────┤
│ 1 │ Abrir /login │ Formulario visible │
│ 2 │ Escribir "test@mail.com" en email │ Campo con email │
│ 3 │ Escribir "incorrecta" en password │ Campo con puntos │
│ 4 │ Clic en "Iniciar sesión" │ Mensaje "Credenciales incorrectas" │
│ 5 │ Verificar que sigue en /login │ URL = /login │
│ 6 │ Verificar intentos restantes │ "4 intentos restantes" │
└─────┴──────────────────────────────────────┴──────────────────────────────────────┘
Buenas prácticas para casos de prueba
| Práctica | Ejemplo |
|---|---|
| Un caso = un escenario | No mezclar login exitoso y fallido |
| Pasos claros y concretos | “Escribir ‘test@mail.com’” no “Escribir un email” |
| Resultado esperado verificable | “URL = /dashboard” no “Funciona bien” |
| Independientes | Cada caso funciona sin depender de otro |
| Datos concretos | Usar valores reales, no “un email válido” |
| Precondiciones explícitas | Qué debe existir antes de empezar |
6. Planes de prueba
Crear un plan de prueba
- Menú Test Plan Management → Create
- Nombre:
Plan v1.0 — Sprint 1 - Descripción:
Pruebas de funcionalidad básica: login, registro, catálogo - Activo: ✅
Asignar casos al plan
- Ir al plan → Add/Remove Test Cases
- Seleccionar las test suites y casos relevantes
- Asignar tester a cada caso
Crear builds
Plan: v1.0 — Sprint 1
Build 1.0.0 (2024-01-15) — Primera versión
Build 1.0.1 (2024-01-22) — Corrección de bugs login
Build 1.0.2 (2024-01-29) — Correcciones finales
7. Ejecución de pruebas
Proceso de ejecución
- Ir a Execute Tests
- Seleccionar el plan y el build
- Para cada caso:
- Leer los pasos
- Ejecutar en la aplicación
- Marcar resultado: Pass ✅, Fail ❌, Blocked 🚫
- Añadir notas o evidencia
Estados de ejecución
| Estado | Significado | Cuándo usar |
|---|---|---|
| ✅ Passed | Funciona correctamente | Todos los pasos dan el resultado esperado |
| ❌ Failed | Hay un defecto | Algún paso no da el resultado esperado |
| 🚫 Blocked | No se puede ejecutar | Problema de entorno o dependencia |
| ⬜ Not Run | Sin ejecutar | Pendiente de ejecución |
Al reportar un Fail
- Marcar como Failed
- Indicar en qué paso falló
- Describir el resultado actual
- Adjuntar captura de pantalla
- Crear un bug en Jira y enlazarlo
8. Reportes
Tipos de reportes en TestLink
| Reporte | Información |
|---|---|
| Test Report | Resumen general de ejecución |
| Metrics | Porcentaje de pass/fail/blocked |
| Requirements Coverage | Cobertura de requisitos por pruebas |
| Platform Report | Resultados por plataforma (Chrome, Firefox) |
Ejemplo de métricas
Plan: v1.0 — Sprint 1
Build: 1.0.2
Total de casos: 45
✅ Passed: 38 (84.4%)
❌ Failed: 4 (8.9%)
🚫 Blocked: 1 (2.2%)
⬜ Not Run: 2 (4.4%)
Bugs encontrados: 4
Críticos: 1
Mayores: 2
Menores: 1
Criterios de salida
Define cuándo considerar que las pruebas están “suficientes”:
Criterios de salida:
✅ 100% de casos ejecutados
✅ ≥ 95% de casos pasados
✅ 0 bugs críticos abiertos
✅ ≤ 2 bugs mayores abiertos (con workaround)
✅ Pruebas de regresión pasadas
9. Integración con Jira
Configurar la integración
- En TestLink: System → Issue Tracker Management
- Tipo: JIRA (REST interface)
- Configurar:
- URL:
https://tu-empresa.atlassian.net - Credenciales de API (API Token)
- Proyecto Jira asociado
- URL:
Flujo integrado
graph LR
A[Caso falla<br/>en TestLink] --> B[Crear bug<br/>en Jira]
B --> C[Dev corrige<br/>el bug]
C --> D[QA re-ejecuta<br/>en TestLink]
D --> E{¿Pasa?}
E -->|Sí| F[Cerrar bug<br/>en Jira]
E -->|No| B
style A fill:#f44336,color:white
style F fill:#4CAF50,color:white
10. Ejercicios prácticos
Ejercicio 1: Diseñar test suites
Para una aplicación de gestión de tareas (tipo Trello), diseña la estructura de test suites (carpetas):
- Al menos 4 suites principales
- Al menos 2 sub-suites por suite
Ejercicio 2: Escribir casos de prueba
Escribe 5 casos de prueba completos para la funcionalidad de crear una tarea en la app del ejercicio 1. Incluye: positivo, negativo, límites, campos vacíos.
Ejercicio 3: Plan de pruebas
Crea un plan de pruebas (en documento) para el Sprint 1, que incluya:
- Alcance (qué se prueba y qué no)
- Criterios de entrada y salida
- Riesgos
- Calendario
Ejercicio 4: Instalar TestLink
Instala TestLink con Docker, crea un proyecto y añade los casos del ejercicio 2.
Resumen
| Concepto | Descripción |
|---|---|
| TestLink | Herramienta open source para gestión de pruebas |
| Test Suite | Carpeta de organización de casos |
| Test Case | Pasos + resultado esperado para verificar un escenario |
| Test Plan | Planificación de ejecución para una versión |
| Build | Versión específica a probar |
| Ejecución | Pass / Fail / Blocked por cada caso |
| Reportes | Métricas de cobertura y resultados |