04_Unidad4_Pruebas - vhcontre/inventario-2025 GitHub Wiki
✅ Pruebas y Calidad del Software
🎯 Objetivos
- Comprender la importancia de las pruebas en el desarrollo de software.
- Conocer los distintos tipos y niveles de pruebas.
- Aplicar estrategias de testing desde etapas tempranas del proyecto.
🔍 ¿Por qué probar?
El testing permite detectar errores, verificar funcionalidades, y aumentar la confianza en el sistema. Además, mejora la mantenibilidad del código y reduce costos a largo plazo.
🛠️ "No probar es asumir que todo funcionará bien en el primer intento."
🧪 Tipos de pruebas
Tipo | Propósito | En tu proyecto |
---|---|---|
Pruebas unitarias | Verificar funciones/clases aisladas | Métodos del dominio, servicios |
Pruebas de integración | Verificar interacción entre componentes | API + base de datos |
Pruebas funcionales | Validar requisitos funcionales | CRUD, reglas de stock |
Pruebas manuales | Verificación visual y uso por usuario | Vistas web, formularios |
Pruebas automatizadas | Validación continua sin intervención | CI con GitHub Actions |
🧬 Estrategia general
La pirámide de testing propone enfocar el esfuerzo así:
🔼 UI Tests (pocos, costosos)
⬆️ Integración (moderado)
⬆️ Unitarios (muchos, rápidos)
🔧 Herramientas
- pytest — Framework principal para pruebas en Python.
- httpx y TestClient — Pruebas de endpoints FastAPI.
- coverage — Medición de cobertura de pruebas.
- GitHub Actions — Corre pruebas automáticamente en cada push.
📌 Ejemplo simple
def sumar(a, b):
return a + b
def test_sumar():
assert sumar(2, 3) == 5
Y para pruebas de API:
from fastapi.testclient import TestClient
from app.main import app
client = TestClient(app)
def test_crear_producto():
response = client.post("/productos/", json={"nombre": "Mouse", "stock": 10})
assert response.status_code == 201
🔗 Relación con la planificación
Semana | Aplicación concreta |
---|---|
2 | Primeras pruebas unitarias en lógica de dominio |
3–4 | Pruebas sobre CRUD, validaciones y reglas de negocio |
5 | Endpoints protegidos: pruebas con autenticación |
6 | Pruebas de integración y cobertura automatizada |
9 | Pruebas combinadas web + backend |
📘 Recursos recomendados
- pytest docs
- FastAPI Testing: https://fastapi.tiangolo.com/tutorial/testing/
- Real Python: Testing in Python (artículos y videos)
📝 Actividades sugeridas
- Crear pruebas unitarias para métodos clave del dominio.
- Agregar al menos un test por endpoint.
- Configurar GitHub Actions para correr
pytest
automáticamente.
🧠 Cierre
“No es sólo cuestión de probar si el software funciona, sino si funciona correctamente en todos los casos previstos y ante errores.”