Respuestas modelo
Consulta aquí las respuestas correctas y explicaciones de las autoevaluaciones y los tests del manual. Ideal para repasar antes de un test o aclarar dudas.
4.08 · Testing Unitario y Documentación
16 preguntas con respuesta en este tema.
🎯 Autoevaluación (3)
¿Qué es un test unitario?
- A. Un test de todo el sistema
- B. Un test que verifica una unidad específica de código (función, clase) en aislamiento ✓ CORRECTA
- C. Un test del compilador
- D. Un test manual
Test unitario: prueba una unidad pequeña (función, método) de forma aislada. Base de la pirámide de tests.
¿Qué framework de testing se usa commonly en C++?
- A. JUnit
- B. Google Test (gtest) / Catch2 ✓ CORRECTA
- C. Selenium
- D. Mocha
Google Test (gtest) y Catch2 son populares en C++. Permiten escribir TEST() y EXPECT_EQ(), ASSERT_TRUE(), etc.
¿Por qué es importante documentar el código?
- A. No es importante
- B. Para que otros (y tu yo futuro) entiendan la intención, uso y decisiones de diseño ✓ CORRECTA
- C. Solo para libros
- D. Para hacerlo más largo
Documentación clara: reduce tiempo de onboarding, previene mal uso, mantiene el conocimiento en el equipo.
📝 Test · Sección A · Opción múltiple (10)
¿Qué es un test unitario?
- A. Test del sistema
- B. Test de una unidad (función, clase) en aislamiento ✓ CORRECTA
- C. Test de integración
- D. Test manual
Unit test: una unidad pequeña. Base de la pirámide de tests.
¿Qué es Google Test (gtest)?
- A. Un compilador
- B. Framework de testing para C++ ✓ CORRECTA
- C. Un IDE
- D. Un sistema operativo
gtest: framework popular de Google para C++. TEST(), EXPECT_EQ, ASSERT_TRUE, etc.
¿Qué es un mock en testing?
- A. Test real
- B. Objeto simulado que reemplaza dependencias reales ✓ CORRECTA
- C. Test de integración
- D. Un bug
Mock: simula el comportamiento de objetos reales para testear unidades aisladas.
¿Qué cobertura de código es razonable?
- A. 100% siempre
- B. 70-80% suele ser buena. 100% no garantiza ausencia de bugs ✓ CORRECTA
- C. 50%
- D. 0%
Cobertura: métrica útil pero no suficiente. Apuntar a 70-80% en código crítico.
¿Qué es TDD (Test-Driven Development)?
- A. Test al final
- B. Escribir el test ANTES del código ✓ CORRECTA
- C. No escribir tests
- D. Solo documentar
TDD: rojo (test falla) → verde (código mínimo que pasa) → refactor.
¿Para qué sirve la documentación del código?
- A. Decoración
- B. Para entender intención, uso y decisiones de diseño ✓ CORRECTA
- C. Compilar más rápido
- D. No es importante
Documentación: reduce tiempo de onboarding, previene mal uso.
¿Qué es Doxygen?
- A. Compilador
- B. Herramienta para generar documentación desde comentarios ✓ CORRECTA
- C. IDE
- D. Sistema operativo
Doxygen: genera docs HTML/PDF desde comentarios /** ... */ en el código.
Buenas prácticas de naming:
- A. Variables de 1 letra
- B. Nombres descriptivos: calcularPromedio, no cp ✓ CORRECTA
- C. Abreviaciones
- D. Números al final
Nombres claros: el código se lee más de lo que se escribe.
¿Qué es el principio DRY?
- A. Documentar
- B. Don't Repeat Yourself: evitar duplicación ✓ CORRECTA
- C. Solo en C++
- D. Compilar
DRY: cada conocimiento debe tener una representación única. Evitar código duplicado.
¿Por qué son importantes los tests de regresión?
- A. Reemplazan tests
- B. Detectan que código nuevo no rompa funcionalidades existentes ✓ CORRECTA
- C. Compilan
- D. Son lentos
Regresión: ejecutan tests anteriores después de cambios para asegurar que nada se rompió.
✍️ Test · Sección B · Preguntas abiertas (3)
Diseña un test unitario para una función que valida un email.
test_email_valido("user@example.com") == true. test_email_sin_arroba("userexample.com") == false. test_email_sin_dominio("user@") == false. test_email_vacio("") == false. test_email_con_espacios("user @example.com") == false. Casos límite: null, vacío, sin @, sin dominio, con espacios, con caracteres especiales.
¿Qué es la cobertura de ramas (branch coverage)? ¿Por qué es más estricta que la de líneas?
Cobertura de ramas: cada if/else debe ejecutarse tanto en el then como en el else. Líneas: cada línea ejecutada. Ramas es más estricta: 100% líneas puede tener 0% ramas si hay ifs no probados en una rama.
¿Por qué es importante la documentación de APIs? Da un ejemplo de buena y mala documentación.
Documentación: usuarios entienden cómo usar la API sin leer el código. Buena: descripción, parámetros con tipos, valor de retorno, excepciones, ejemplo de uso. Mala: solo el nombre de la función, sin descripción ni ejemplos.
📝 ¿Listo para evaluarte?
Regístrate o inicia sesión para tomar la autoevaluación o el test de este tema y registrar tu puntaje.