Lección 1: Introducción

Testing

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:

Si es un trabajo corto habrá una inversión de tiempo inicial, pero a medida que creezca 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.

Grafico de porque hay que hacer testing

¿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.

que ocurre sin testing

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

  1. Prueba unitaria (Unit Testing): Se testea una función u objeto de forma individual.
  2. Pruebas integrales (Integration Testing): Se testea un conjunto funciones u objetos que interactuan entre ellos.
  3. Pruebas de sistemas (System Integration Testing): Se testea todo el software al completo.

Diferencias entre testings

En el siguiente tema desarrollaremos las Unit Testing.