Title: Guia de Exposicion
Course: 2025 - LI - Pruebas de Software 3-1 y 3-2 > Section: Unidad 3 - Pruebas unitarias e integración

Guía de Exposición: Pruebas Unitarias

🧠 1. Principios y Buenas Prácticas

Las pruebas unitarias son aquellas que validan el funcionamiento correcto de las unidades más pequeñas del código, normalmente funciones o métodos.
Los alumnos deben explicar:

- Qué es una unidad dentro del software.
- Qué son las pruebas automatizadas y cómo se diferencian de las manuales.
- Los principios fundamentales: independencia de pruebas, repetibilidad, aislamiento, velocidad y claridad.
- Las buenas prácticas:
  - Usar nombres descriptivos para las pruebas.
  - Probar un solo comportamiento por prueba.
  - Mantener independencia entre pruebas.
  - Automatizar la ejecución con scripts o pipelines.
  - Usar datos de prueba controlados.

Ejemplo que pueden mencionar:
Probar una función simple de suma o login, validando si devuelve el resultado esperado.

⚙️ 2. Herramientas Comunes (JUnit, NUnit, PyTest, etc.)

En esta parte deben investigar los frameworks más usados para pruebas unitarias en distintos lenguajes de programación, y explicar sus características principales.

- JUnit (Java) → framework más popular para pruebas unitarias en Java.
  - Usa anotaciones como @Test.
  - Permite agrupar y automatizar pruebas fácilmente.
- NUnit (C#/.NET) → framework para pruebas en entornos Microsoft.
  - Permite definir conjuntos de pruebas y ver resultados en reportes.
- PyTest (Python) → simple y potente, ideal para proyectos grandes o pequeños.
  - Detecta automáticamente funciones de prueba.
  - Soporta fixtures, mocks y reportes detallados.
- Otros ejemplos opcionales: Jest (JavaScript), Mocha, PHPUnit (PHP).

Deben incluir:

- En qué lenguaje se utiliza cada uno.
- Cómo se ejecutan las pruebas.
- Qué ventajas ofrece.
- Ejemplo básico de cómo luce una prueba (puede ser solo visual).

🧱 3. Mocks, Stubs y Dobles de Prueba

Estos son componentes simulados que se usan cuando no es posible o conveniente usar el código real durante una prueba.

Deben explicar:

- Mock: simula un objeto o dependencia para verificar interacciones (por ejemplo, una API o base de datos).
- Stub: devuelve datos predefinidos, sin lógica real (por ejemplo, simular que un usuario ya existe).
- Dummy: valores falsos que no se usan realmente, pero completan la estructura del código.
- Fake: una versión funcional simplificada del objeto real.

Ejemplo:
Cuando pruebas un método que depende de una base de datos, puedes usar un mock para no conectarte realmente a la BD, sino simular la respuesta.

Deben incluir:

- Qué son.
- En qué situaciones se usan.
- Diferencias entre cada tipo.
- Ejemplo visual o esquema que lo represente.

🔄 4. Integración Continua y Pipelines de Prueba

Las pruebas unitarias se vuelven mucho más útiles cuando se integran en un proceso automatizado llamado Integración Continua (CI).

Deben explicar:

- Qué es Integración Continua: práctica donde los desarrolladores integran código frecuentemente y se ejecutan pruebas automáticamente.
- Qué es un pipeline de pruebas: una secuencia automatizada de pasos (por ejemplo: compilar código → ejecutar pruebas → generar reportes).
- Qué herramientas permiten esta automatización (por ejemplo, GitHub Actions, Jenkins, GitLab CI/CD, CircleCI).
- Cómo las pruebas unitarias se ejecutan automáticamente cada vez que se sube código nuevo al repositorio.

Ejemplo visual sugerido:
Un flujo que muestre: push al repositorio → ejecución de pruebas unitarias → reporte de resultados.

Deben incluir:

- Qué beneficios aporta automatizar las pruebas.
- Cómo ayuda a detectar errores antes de lanzar una versión.
- Ejemplo o diagrama explicativo del proceso.

📘 Recomendación final para los equipos

Cada equipo puede dividirse de la siguiente forma:

- Un integrante presenta principios y buenas prácticas.
- Otro explica las herramientas comunes.
- Otro desarrolla mocks, stubs y dobles de prueba.
- El último (si hay) explica la integración continua y pipelines.

Guía de Exposición: Pruebas Unitarias

🧠 1. Principios y Buenas Prácticas

Las pruebas unitarias son aquellas que validan el funcionamiento correcto de las unidades más pequeñas del código, normalmente funciones o métodos.
Los alumnos deben explicar:

- Qué es una unidad dentro del software.
- Qué son las pruebas automatizadas y cómo se diferencian de las manuales.
- Los principios fundamentales: independencia de pruebas, repetibilidad, aislamiento, velocidad y claridad.
- Las buenas prácticas:
  - Usar nombres descriptivos para las pruebas.
  - Probar un solo comportamiento por prueba.
  - Mantener independencia entre pruebas.
  - Automatizar la ejecución con scripts o pipelines.
  - Usar datos de prueba controlados.

Ejemplo que pueden mencionar:
Probar una función simple de suma o login, validando si devuelve el resultado esperado.

⚙️ 2. Herramientas Comunes (JUnit, NUnit, PyTest, etc.)

En esta parte deben investigar los frameworks más usados para pruebas unitarias en distintos lenguajes de programación, y explicar sus características principales.

- JUnit (Java) → framework más popular para pruebas unitarias en Java.
  - Usa anotaciones como @Test.
  - Permite agrupar y automatizar pruebas fácilmente.
- NUnit (C#/.NET) → framework para pruebas en entornos Microsoft.
  - Permite definir conjuntos de pruebas y ver resultados en reportes.
- PyTest (Python) → simple y potente, ideal para proyectos grandes o pequeños.
  - Detecta automáticamente funciones de prueba.
  - Soporta fixtures, mocks y reportes detallados.
- Otros ejemplos opcionales: Jest (JavaScript), Mocha, PHPUnit (PHP).

Deben incluir:

- En qué lenguaje se utiliza cada uno.
- Cómo se ejecutan las pruebas.
- Qué ventajas ofrece.
- Ejemplo básico de cómo luce una prueba (puede ser solo visual).

🧱 3. Mocks, Stubs y Dobles de Prueba

Estos son componentes simulados que se usan cuando no es posible o conveniente usar el código real durante una prueba.

Deben explicar:

- Mock: simula un objeto o dependencia para verificar interacciones (por ejemplo, una API o base de datos).
- Stub: devuelve datos predefinidos, sin lógica real (por ejemplo, simular que un usuario ya existe).
- Dummy: valores falsos que no se usan realmente, pero completan la estructura del código.
- Fake: una versión funcional simplificada del objeto real.

Ejemplo:
Cuando pruebas un método que depende de una base de datos, puedes usar un mock para no conectarte realmente a la BD, sino simular la respuesta.

Deben incluir:

- Qué son.
- En qué situaciones se usan.
- Diferencias entre cada tipo.
- Ejemplo visual o esquema que lo represente.

🔄 4. Integración Continua y Pipelines de Prueba

Las pruebas unitarias se vuelven mucho más útiles cuando se integran en un proceso automatizado llamado Integración Continua (CI).

Deben explicar:

- Qué es Integración Continua: práctica donde los desarrolladores integran código frecuentemente y se ejecutan pruebas automáticamente.
- Qué es un pipeline de pruebas: una secuencia automatizada de pasos (por ejemplo: compilar código → ejecutar pruebas → generar reportes).
- Qué herramientas permiten esta automatización (por ejemplo, GitHub Actions, Jenkins, GitLab CI/CD, CircleCI).
- Cómo las pruebas unitarias se ejecutan automáticamente cada vez que se sube código nuevo al repositorio.

Ejemplo visual sugerido:
Un flujo que muestre: push al repositorio → ejecución de pruebas unitarias → reporte de resultados.

Deben incluir:

- Qué beneficios aporta automatizar las pruebas.
- Cómo ayuda a detectar errores antes de lanzar una versión.
- Ejemplo o diagrama explicativo del proceso.

📘 Recomendación final para los equipos

Cada equipo puede dividirse de la siguiente forma:

- Un integrante presenta principios y buenas prácticas.
- Otro explica las herramientas comunes.
- Otro desarrolla mocks, stubs y dobles de prueba.
- El último (si hay) explica la integración continua y pipelines.