Lección 1: Introducción
Cuando hablamos del testing nos queremos referir a pruebas empíricas para mejorar la calidad de nuestro código. Un conjunto de técnicas que nos evaluarán la resistencia a los fallos de manera fehaciente. Existe una gran cantidad de opciones, Frameworks y guías en la actualidad. Entre los más importantes nos podemos encontrar:
Filosofías
- Desarrollo guiado por pruebas (
TDD
). - Desarrollo guiado por el comportamiento (
BDD
). - Diseño guiado por el dominio (DDD)
Pruebas dependiendo de la visibilidad
- Pruebas de caja blanca.
- Pruebas de caja gris.
- Pruebas de caja negra.
Pruebas dependiendo de la ejecución de las aplicaciones
- Pruebas estáticas.
- Pruebas dinámicas.
Pruebas Funcionales:
- Pruebas de unidad.
- Pruebas de integración.
- Pruebas de aceptación.
- Pruebas de extremo a extremo (
E2E
).
Pruebas no Funcionales
- Pruebas de rendimiento.
- Pruebas de de seguridad.
- Pruebas aleatorias (
Fuzzing
).
Pruebas según el número de pruebas a realizar
- Pruebas de humo (Smoke test).
- Pruebas de sanidad (Sanity Check).
- Pruebas de regresión/sistema (Regression test).
Si es un trabajo corto habrá una inversión de tiempo inicial, pero a medida que crezca el flujo aumentará la productividad al ser más lineal y controlado. Antes de que te digas “no voy a hacer testing porque es demasiado pequeño”, quiero hacerte recordar que todo proyecto empieza siendo pequeño. Después no encontrarás energías ya que será demasiado grande para testear o documentar.
¿Qué ventajas tiene hacer testing?:
- Aumenta la calidad del proyecto y código.
- Reduce los errores al añadir nuevas características.
- Menor tiempo a la hora de reparar errores.
- Incrementa el uso de buenas prácticas.
¿Contras?:
- Incrementa el tiempo de desarrollo.
- Aumenta la complejidad.
- Muchos desarrolles no tiene hábito, por lo que existirá cierto rechazo al principio y necesidad de formación.
- Es dificil hacer testing de código viejo.
Obiamente la calidad de nuestro código no se verá comprometida. Si el cliente trabaja con nuestra aplicación no experimentará problemas tecnicos. Tal vez no le termine de gustar el tamaño de un botón o el color de un texto, pero no nos llamará a la puerta con una lista de errores. Y por consiguiente dormiremos profundamente.
Pruebas de caja blanca
Son pruebas centradas en el código fuente, sabiendo que introducimos y que resultados esperamos. Siempre usando diferentes valores de entrada y sabiendo de antemano los valores de vuelta.
Niveles
- Prueba unitaria (
Unit Testing
): Se testea una función u objeto de forma individual. - Pruebas integrales (
Integration Testing
): Se testea un conjunto funciones u objetos que interactuan entre ellos. - Pruebas de sistemas (
System Integration Testing
): Se testea todo el software al completo.
Material de apoyo
En el siguiente tema desarrollaremos las Unit Testing.
Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.
¿Me invitas a un café? ☕
Puedes hacerlo usando el terminal.
ssh customer@andros.dev -p 5555
Comentarios
Nuevo comentario
Nueva replica {{ formatEllipsisAuthor(replyComment.author) }}
Escribe el primer comentario
{{ comments.length }} comentarios