Jonatan Matajonmatum.com
conceptosnotasexperimentosensayos
© 2026 Jonatan Mata. All rights reserved.v2.1.1
Conceptos

Estrategias de Testing

Enfoques y niveles de testing para validar que el software funciona correctamente, desde unit tests hasta tests end-to-end y testing en producción.

seed#testing#unit-tests#integration#e2e#tdd#quality

¿Qué es?

Las estrategias de testing definen qué tipos de tests escribir, cuántos, y cómo organizarlos para maximizar la confianza en el código con el menor costo de mantenimiento.

Pirámide de testing

        /\        E2E (pocos, lentos, frágiles)
       /  \
      /----\      Integration (algunos)
     /      \
    /--------\    Unit (muchos, rápidos, estables)

Tipos de tests

TipoQué pruebaVelocidadFragilidad
UnitFunción/clase aisladaMuy rápidoBaja
IntegrationComponentes juntosMedioMedia
E2EFlujo completo de usuarioLentoAlta
ContractAPIs entre serviciosRápidoBaja

Enfoques

EnfoqueMecanismoCuándo usar
TDDEscribir test antes del códigoLógica de negocio, algoritmos
BDDTests como especificaciones de comportamientoRequisitos de usuario, aceptación
Property-basedGenerar inputs aleatorios, verificar invariantesParsers, serialización, edge cases
SnapshotComparar output con versión guardadaUI components, respuestas de API

Testing en producción

  • Feature flags para rollout gradual
  • Canary deployments
  • Observabilidad para detectar problemas

¿Por qué importa?

Una estrategia de testing efectiva equilibra velocidad, cobertura y confianza. Demasiados tests unitarios sin integración dan falsa seguridad. Demasiados tests e2e son lentos y frágiles. La pirámide de testing proporciona el framework para encontrar el balance correcto.

Referencias

  • Testing Trophy — Kent C. Dodds.
  • The Practical Test Pyramid — Ham Vocke, 2018. Guía práctica de la pirámide de testing.
  • Testing Library — Testing Library, 2024. Herramientas de testing centradas en el usuario.

Contenido relacionado

  • CI/CD

    Continuous Integration y Continuous Delivery/Deployment — prácticas que automatizan la integración de código, testing y entrega a producción. Fundamento de la ingeniería de software moderna.

  • Calidad de Código

    Prácticas, herramientas y métricas para mantener código legible, mantenible, testeable y libre de defectos a lo largo del tiempo.

  • Accesibilidad

    Práctica de diseñar y desarrollar productos digitales que puedan ser usados por todas las personas, incluyendo aquellas con discapacidades visuales, auditivas, motoras o cognitivas.

  • Ejemplo de Pipenv con Pytest

    Ejemplo de proyecto Python con Pipenv, Pytest, pre-commit hooks, CI/CD con GitHub Actions y generación de badges.

  • Ingeniería del Caos

    Disciplina de experimentar en sistemas de producción para descubrir debilidades antes de que causen incidentes, inyectando fallos controlados.

Conceptos