logo cosasdedevs
¿Qué es el testing de software?

¿Qué es el testing de software?



My Profile
Oct 05, 2022

El testing en programación es una herramienta que se utiliza para validar el correcto funcionamiento de las distintas partes que contiene una aplicación y puede ayudar a localizar posibles errores en esta.

Por qué utilizar tests

  • Nos ayuda a asegurarnos de que al realizar un cambio en un componente de nuestro proyecto, este sigue funcionando correctamente.
  • Disminuyen los riesgos de cometer errores.
  • Ayuda a la hora de encontrar problemas y errores.
  • Mejora los tiempos a la hora de realizar subidas a producción, ya que las pruebas manuales se reducen o eliminan completamente.

Tipos de tests más comunes

Test unitarios

Los tests unitarios se encargan de validar el correcto funcionamiento de un componente de nuestra aplicación, como por ejemplo una función o un método de una clase.

Este tipo de tests son los que más podemos encontrar en un proyecto, ya que es el tipo de test más rápido y solo abarcan un caso de uso.

Mocks en test unitarios

Mockear una interacción o mocks significa crear una versión falsa de un servicio externo o interno y que pueda sustituir al real para ayudar a que las pruebas se ejecuten más rápidamente.

Pueden aparecer casos en los que al realizar un test unitario, estemos testando una funcionalidad que se conecte a una base de datos, API externa, etc. Esto puede ralentizar nuestros tests por lo que se recomienda en estos casos mockear esta interacción.

Por ejemplo, para ahorrarnos la conexión a una base de datos, podemos crear datos de prueba en un archivo con formato JSON y que nuestro método o función a testar interactúe con estos en vez de con la información de una base de datos.

Test de integración

Este tipo de tests se encargan de validar la integración con elementos externos a nuestra aplicación (bases de datos, APIs...) por lo que no se debería mockear esta interacción.

En este caso, si por ejemplo queremos hacer pruebas con elementos que interactúen con la base de datos y para no comprometer los datos de la base de datos real, podemos crear una base de datos de prueba con la misma estructura que la original y generar datos o replicar datos de producción para confirmar su correcto funcionamiento.

Es recomendable crear al menos uno de estos tests para cada elemento externo que interactúe con nuestra aplicación.

Un ejemplo puede ser testar un método que se encargue de la creación de un usuario.

Test de aceptación

Los tests de aceptación son los que se encargan de testar un proceso completo en nuestra aplicación. Por ejemplo, en el caso de tener un formulario de contacto, el test debería emular desde el punto en el que accedemos a la página de contacto, rellenamos los datos, los enviamos y realiza los pasos que podrían ser guardar la información en la base de datos y devolver la respuesta esperada al finalizar la acción.

Ya que estos tests deben emular esta iteración, lo ideal será que utilicemos la infraestructura más real y cercana posible a nuestro entorno de producción como conexiones a bases a datos, etc. Debemos tener en cuenta también las versiones de librerías y del lenguaje de programación.

Para mejorar su velocidad debemos evitar todas las dependencias que no necesitemos y si por ejemplo tenemos que comunicarnos con una API externa, tal vez puede ser mejor opción crear un entorno similar para evitar que un test falle porque esa API no esté funcionando en ese momento.

Este tipo de test tienen un tiempo de ejecución mucho más elevado que los demás tests, ya que cubren el flujo completo de la aplicación, por lo que se recomienda utilizar este tipo de tests para funcionalidades más críticas de nuestra aplicación.

Ejemplo de funcionalidad crítica vs. funcionalidad estándar

Para ver un ejemplo y clarificar donde podríamos usar estos tests, vamos a fijarnos en YouTube. Para mí una funcionalidad crítica puede ser que se pueda visualizar un vídeo sin problemas al acceder a él, ya que cuando se reproduce un vídeo se muestra la publicidad que es una de las partes por las que genera ingresos YouTube. Por lo tanto, sería interesante que al realizar una modificación en esta funcionalidad, tuviera un test de aceptación.

Por el contrario, una funcionalidad más estándar podrían ser los botones me gusta y no me gusta. En este caso, no sería crítico que estos botones no funcionasen hasta que se resolviera el problema.

Conclusiones

Los tests nos pueden salvar de más de un quebradero de cabeza y si además nos lo curramos para que sean los más claros posibles, se pueden convertir en una documentación adicional de nuestra aplicación, por lo que te recomiendo que los uses en todos tus proyectos 💪.

Espero que este post te ayude y como siempre, te recomiendo seguirme en Twitter para estar al tanto de los nuevo contenido. Ahora también puedes seguirme en Instagram donde estoy subiendo tips, tutoriales en vídeo e información sobre herramientas para developers.

Por último os dejo mi guía para aprender a trabajar con APIs donde explico todo el funcionamiento de una API, el protocolo HTTP y veremos como construir una API con arquitectura REST.

Nos leemos 👋.

1447 vistas

🐍 Sígueme en Twitter

Si te gusta el contenido que subo y no quieres perderte nada, sígueme en Twitter y te avisaré cada vez que cree contenido nuevo 💪
Luego ¡Te sigo!

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para recopilar y analizar datos sobre la interacción de los usuarios con cosasdedevs.com. Ver política de cookies.