Novedades

Test Driven Development ¿Cómo hacer test eficientes?

El desarrollo guiado por pruebas (TDD) es un tipo o práctica de desarrollo consiste en escribir primero el test y luego el código fuente, que debe pasar esa prueba satisfactoriamente. Por lo tanto, se desarrolla el proyecto en función de los requisitos establecidos en el test. Con esto se consigue un código más robusto, seguro, mantenible y una mayor rapidez en el desarrollo.

Proceso de trabajo

El proceso sería el siguiente:

  1. Se determinan los requisitos y criterios de aceptación.
    Por ejemplo, si un cliente nos pide que desarrollemos una calculadora que sume números, el criterio de aceptación sería: si se introducen en la calculadora dos números y se escoge la operación sumar, la calculadora muestra en pantalla el resultado de la operación.
  2. Se definen las pruebas unitarias para todos los casos en los que puede fallar la funcionalidad.
    Partiendo de los criterios anteriores pensamos que vamos a necesitar una función llamada “suma”, que reciba dos parámetros de tipo numérico. Pensamos en todos los casos posibles en que pueda fallar: si no se le pasan los parámetros adecuados, comprobar que la operación sea conmutativa, etc.
  3. Se define una prueba en la que la funcionalidad pasa satisfactoriamente el test.
    Escribimos un código muy similar al anterior en el que dos números quedan correctamente sumados.
  4. Se escribe el código que hace pasar la prueba.
    Aquí creamos, por ejemplo, la clase calculadora con un método suma que devuelva un número entero o decimal y al cual se le pasan dos parámetros también de tipo entero o decimal. Dentro se realizaría la suma y se retornaría el número resultante.
  5. Se ejecutan todas las pruebas automatizadas, comprobando que pasan las que tienen que pasar y fallan las que tienen que fallar.
  6. Se refactoriza y se limpia el código, quitando los elementos que no sean necesarios.
  7. Se vuelven a pasar todas las pruebas para comprobar que todo sigue funcionando después de la limpieza de código.
Test Driven

Las pruebas Manuales o Automatizadas

Dentro de esta metodología de desarrollo, podemos diferenciar dos tipos de test:

Las pruebas manuales son las llevadas a cabo por personas que navegan e interactúan con el software. Requiere que la persona encargada configure un entorno para las pruebas y tenga un buen conocimiento del software. Estos test están expuestos a errores humanos.
Las pruebas automatizadas ejecutan un código destinado a verificar que las funcionalidades operan adecuadamente y devuelven los resultados esperados. Son más rápidas y confiables que las manuales, pero dependen de que su código esté bien desarrollado.

Tipos de test automatizados

Hay muchísimos tipos de pruebas para aplicar TDD. Aquí nombraremos sólo algunos:

Unit tests consisten en probar de forma individual las funciones, métodos, clases, componentes, etc.; que son usados en el proyecto.
Integration tests verifican que los diferentes módulos o servicios funcionen en armonía cuando trabajan en conjunto, interactuando entre ellos.
Property tests son los que validan propiedades del código.
Functional tests verifican la salida de una acción, su resultado, sin prestar atención a los estados intermedios mientras se lleva a cabo la ejecución.
End-to-end tests replican el comportamiento de los usuarios y verifican que los flujos que sigue el usuario trabajen como se espera. Pueden ser cosas tan simples como iniciar sesión o cargar una página, como verificar notificaciones vía email o pagos en línea.
Regression testing verifican un conjunto de escenarios que funcionaron correctamente en el pasado para asegurar que continúan ejecutándose así. Un fallo en uno de estos test significa que una nueva funcionalidad ha afectado a otra operatividad que iba bien anteriormente.
Smoke testing prueban la funcionalidad básica y general de una aplicación asegurando que las características más importantes se ejecutan como se espera.
Acceptance testing verifican que un sistema satisface los requisitos de negocio. Se suelen realizar cuando la fase de desarrollo ha finalizado.
Performance testing verifican como responde el sistema cuando éste se encuentra bajo una carga alta. Sirven, por ejemplo, para observar los tiempos de respuesta cuando se ejecuta un alto número de requests y ver la fiabilidad y estabilidad del sistema ante una cantidad significativa de datos.
Photo María Marín
María Marín
Full-stack developer en Virtusway

Descubra cómo podemos ayudarle

Déjenos su solicitud, uno de nuestros comerciales lo contactará a la brevedad.