¿Qué es el testing unitario? Por qué DEBERÍAS aprenderlo + Ejemplos fáciles de entender
Summary
TLDREl video ofrece una visión detallada sobre la importancia del testing unitario en el desarrollo de software, un tema que a menudo intimida a los desarrolladores principiantes. Se desmiente la idea de que el testing unitario requiere un conocimiento profundo, y se muestra cómo es una herramienta valiosa para quienes comienzan. Se explica que el testing unitario implica examinar partes pequeñas y comprovables de una aplicación, llamadas unidades, de forma individual para asegurar su correcto funcionamiento. Se utiliza Python como ejemplo debido a su sintaxis clara y seguidilla, aunque el concepto es independiente del lenguaje de programación. Además de corregir errores tempranos y ahorrar costos, el testing unitario ayuda a los desarrolladores a comprender y modificar el código con confianza. Se discuten también los 'test doubles', objetos que reemplazan a otros para mantener la independencia en las pruebas, y se introduce la práctica TDD (Test-Driven Development), que implica escribir los tests antes del código, lo que asegura una cobertura de pruebas y permite un diseño de implementación. Finalmente, se destaca que, aunque puede parecer que el testing unitario retrasa el desarrollo, en realidad se ahorra tiempo en etapas posteriores, y se recomienda su implementación en todos los proyectos.
Takeaways
- 🧪 El testing unitario es una herramienta valiosa para los desarrolladores principiantes, no solo para los experimentados.
- 📚 La comprensión de los conceptos básicos, como el de la página text target, ayuda a desmitificar el testing unitario.
- 🔍 Las unidades más pequeñas de un programa, generalmente funciones o métodos, son examinadas individualmente para verificar su correcto funcionamiento.
- 🐍 Seleccionar un lenguaje de programación claro y sencillo, como Python, facilita la creación y comprensión de pruebas unitarias.
- ✅ Las pruebas unitarias son fundamentales para detectar y corregir errores en las etapas tempranas del desarrollo, lo que ahorra costos.
- 🛠️ Los tests unitarios también ayudan a los desarrolladores a comprender rápidamente el código y a realizar cambios con confianza.
- 🔄 La reutilización de código es más fácil cuando se tienen pruebas unitarias, lo que es útil para la migración de proyectos.
- 🤖 Los dobles de prueba (mocks, stubs, fakes, spies, y dummies) son esenciales para probar funciones de manera independiente.
- 📝 La práctica TDD (Test-Driven Development) implica escribir los tests antes del código, lo que asegura que cada función tenga una prueba asociada y promueve un diseño mejorado.
- 🚀 A pesar de que escribir pruebas unitarias puede parecer que retrasa el desarrollo, a largo plazo se ahorra tiempo y se mejora la calidad del código.
- 📚 Es recomendable tener una guía de buenas prácticas y utilizar bibliotecas específicas del lenguaje para realizar pruebas unitarias y TDD.
Q & A
¿Qué es el testing unitario y por qué puede resultar intimidante para los desarrolladores principiantes?
-El testing unitario es un proceso de prueba de software donde se examinan las partes más pequeñas o unidades de una aplicación de forma individual y independiente para verificar su correcto funcionamiento. Puede intimidar a los desarrolladores principiantes porque creen que requiere un conocimiento profundo para entenderlo, pero en realidad es una herramienta útil para quienes están comenzando.
¿Por qué las pruebas unitarias son especialmente útiles para los desarrolladores que están empezando?
-Las pruebas unitarias son útiles para los desarrolladores principiantes porque les ayudan a comprender rápidamente cómo funciona el código y a realizar cambios sin miedo a que rompan algo, ya que si ocurre un error, es probable que algún test falle y les notifique el problema.
¿Cómo se ve un test unitario utilizando el lenguaje de programación Python?
-Un test unitario en Python comienza definiendo una función de prueba, estableciendo una variable con el resultado esperado, invocar la función con los argumentos deseados y finalmente, verificar que el resultado obtenido coincida con el resultado esperado.
¿Cómo pueden las pruebas unitarias ayudar en la fase temprana de desarrollo de software?
-Las pruebas unitarias ayudan a corregir errores en las etapas tempranas de desarrollo, lo que puede ahorrar costos. Si una función no es testeada correctamente y se encuentra un error en la fase de despliegue, podría requerir actualizar y desplegar nuevamente varias capas de la aplicación, lo que es costoso y tiempo-consuming.
¿Cómo facilitan las pruebas unitarias la reutilización de código?
-Las pruebas unitarias facilitan la reutilización de código al asegurar que las funcionalidades previamente desarrolladas y probadas funcionen correctamente en un nuevo contexto. Si se migran los tests junto con el proyecto, y estos funcionan bien en el nuevo entorno, se puede estar seguros de que la migración fue exitosa.
¿Qué son los test doubles y cuál es su propósito en el testing unitario?
-Los test doubles son objetos que reemplazan a otros objetos en pruebas unitarias para mantener la independencia de la prueba. Permiten probar una función sin necesidad de ejecutar las funciones que dependen de ella,模拟不同的行为 y/o mantener un estado para verificar ciertos aspectos de la función que se está probando.
¿Cuáles son los cinco tipos de test doubles mencionados en el script?
-Los cinco tipos de test doubles son: Stubs (que simulan lo que retorna una función), Mocks (similares a los Stubs pero también comprueban si ciertas funciones fueron llamadas), Dummies (objetos que no hacen nada pero satisfacen las necesidades de una función), Fakes (objetos que simulan diferentes objetos con una implementación distinta) y Spies (Stubs que mantienen información sobre su estado).
¿Qué es TD (Test-Driven Development) y cómo se relaciona con el testing unitario?
-TD, o Desarrollo Guiado por Tests, es una práctica de programación que implica escribir los tests primero (los tres pasos TDD: Red, Green, Refactor) y luego el código que se está probando. Ayuda a definir claramente los objetivos deseados y asegura que cada función esté acompañada de un test, mejorando la calidad del código y su diseño.
¿Cómo afecta el uso de TD en el proceso de desarrollo de software?
-El uso de TD puede parecer que retrasa el proceso de desarrollo al requerir escribir tests antes del código. Sin embargo, en realidad se ahorra tiempo en etapas posteriores al detectar errores temprano y permitir un diseño más sólido y previo a la implementación del código.
¿Por qué es recomendable tener un conjunto mínimo de tests para cada cambio realizado en un proyecto?
-Es recomendable tener un conjunto mínimo de tests para cada cambio porque garantiza que cualquier modificación en el código no introduzca errores y que el código siga funcionando correctamente según lo previsto. Además, facilita la identificación rápida de problemas en caso de que un test falle.
¿Cómo pueden las buenas prácticas y las librerías específicas del lenguaje de programación ayudar en la realización de pruebas unitarias?
-Las buenas prácticas y las librerías específicas del lenguaje de programación pueden facilitar y estandarizar el proceso de testing unitario. Proporcionan estructuras y utilidades para escribir tests de manera más eficiente, legible y efectiva, adaptadas a las características y particularidades del lenguaje en cuestión.
¿Por qué es importante compartir y discutir los conceptos de testing unitario y TD con otros desarrolladores?
-Compartir y discutir estos conceptos es importante porque promueve la mejora continua del código y la calidad del software. Ayuda a los desarrolladores a aprender técnicas y prácticas efectivas de testing, a entender los beneficios de estos en el desarrollo de software y a incorporarlos en sus proyectos, lo que lleva a un código más robusto y confiable.
Outlines
😀 Introducción al testing unitario y su importancia
Este primer párrafo introduce el tema de testing unitario y cómo a menudo puede intimidar a los desarrolladores principiantes. Sin embargo, se aclara que no solo es un mito que requiere un conocimiento profundo, sino que es una herramienta especialmente útil para quienes comienzan. Se menciona el concepto de 'text target' y se describe la definición de un proyecto de desarrollo de software que examina las unidades más pequeñas de una aplicación de forma individual y independiente. Se utiliza Python como ejemplo para demostrar cómo se ve un test unitario, destacando su independencia del lenguaje de programación y su utilidad en la fase de desarrollo para detectar errores temprano y ahorrar costos.
📚 Pruebas unitarias y su impacto en la reutilización de código y desarrollo
El segundo párrafo profundiza en los beneficios de las pruebas unitarias, destacando cómo pueden ayudar a corregir errores en las etapas tempranas de desarrollo y a ahorrar costos en el largo plazo. Se da un ejemplo hipotético de cómo un error en una biblioteca no testeada podría tener un costo elevado en términos de actualizaciones y despliegues. Además, se discute cómo las pruebas unitarias ayudan a los desarrolladores a comprender el código y a realizar cambios sin miedo a romper cosas, ya que los tests fallarán y alertarán sobre los problemas. También se introduce el concepto de 'dobles' o 'mocks', que son objetos que reemplazan a otros objetos para mantener la independencia de los tests. Se describen los diferentes tipos de dobles y cómo funcionan. Finalmente, se habla sobre TDD (Desarrollo Guiado por Pruebas) como una práctica que implica escribir los tests primero y luego el código, lo que permite un diseño de implementación y asegura que cada cambio venga acompañado de un test.
Mindmap
Keywords
💡Testing unitario
💡Pruebas inmunizantes
💡Doble (Mocks, Stubs, Dummies, Fakes, Spies)
💡TDD (Desarrollo orientado a pruebas)
💡Python
💡Funciones
💡Errores
💡Reutilización de código
💡Lenguajes de programación
💡Buenas prácticas
Highlights
El video aborda el tema del testing unitario y cómo a menudo intimida a los desarrolladores principiantes.
Se refuta la idea de que se necesita mucho conocimiento para entender el testing unitario, y se lo presenta como una herramienta útil para los recién llegados.
Se define la unidad de prueba en el desarrollo de software como las partes más pequeñas de una aplicación que se examinan individualmente.
Se utiliza Python como el lenguaje de programación para demostrar un test unitario debido a su sintaxis clara y su facilidad de uso.
Se muestra un ejemplo de un test unitario para una función que suma dos números.
Se destaca la importancia de los tests unitarios en la fase de desarrollo para detectar errores tempranos y ahorrar costos.
Se discute cómo la falta de testing unitario puede resultar en un costo elevado en el despliegue y la necesidad de actualizar múltiples bibliotecas y servicios.
Los tests unitarios ayudan a los desarrolladores a entender el código rápidamente y a realizar cambios sin miedo a romper algo, debido a la seguridad que brindan.
Se menciona la ayuda que los tests unitarios proporcionan para la reutilización de código y la migración de proyectos.
Se introduce el concepto de 'dobles' o 'mocks' en pruebas unitarias para simular la ejecución de otras bibliotecas o funciones.
Se describen los cinco tipos de 'mocks' o 'dobles' que se utilizan en pruebas unitarias: stubs, mocks, dummies, fakes y spies.
Se explica la práctica TDD (Test-Driven Development), que consiste en escribir los tests antes del código.
Se ilustra cómo TDD permite definir claramente los objetivos de la función que se está escribiendo y asegurar que cada función tenga un test asociado.
Se proporciona un ejemplo práctico de TDD aplicado a una función de resta en un script.
Se discute cómo TDD puede influir en el diseño de la implementación incluso antes de escribir el código.
Se aboga por la realización de testing en todos los proyectos y se recomienda tener un conjunto mínimo de tests para cada cambio realizado.
Se sugiere que los desarrolladores revisen las buenas prácticas y documentaciones de las herramientas de testing unitario específicas del lenguaje que utilicen.
Se destaca que, aunque puede parecer que escribir tests unitarios retrasa el proceso de desarrollo, a largo plazo se gana tiempo.
Transcripts
hola muchachos bienvenidos a un nuevo
vídeo para el canal en esta oportunidad
vamos a hablar de testing unitario y tv
este tema suele darle mucho miedo a los
desarrolladores que empiezan porque
piensan que hay que saber mucho para
entenderlo pero hoy vamos a demostrar
que esto no solamente es falso sino que
además es una herramienta especialmente
útil para la gente que empieza que este
es inmunitario vamos a leer el concepto
de la página text target que es uno de
los conceptos más completos que he leído
y uni testing es un proyecto de
desarrollo de software en el que las
partes comprobables más pequeñas una
aplicación llamadas unidades se examinan
de forma individual e independiente para
comprobar su correcto funcionamiento
entonces vamos a probar que unidades
pequeñas de nuestro código hagan lo que
se supone que tienen que hacer y cómo se
ven estas unidades pues normalmente son
funciones o métodos de clase vamos a ver
cómo se vería un test unitario
utilizando el lenguaje de paita porque
escogí python porque es uno de los más
sencillos con la sintaxis más clara y es
el lenguaje con el que trabajo
actualmente pero realmente este concepto
es agnóstico de los lenguajes de
programación bien tenemos una función
que se llama at que lo que va a hacer es
sumar dos números en este caso a y b y
va a retornar en resultados el test
unitario de esta función se vería de
manera definir una función text
definimos una variable con nuestro
resultado esperado que en este caso es 3
luego ejecutamos o invocamos la función
pasándole los argumentos que queremos en
este caso 1 y 2 y por último hacemos un
hacer de que el resultado que estamos
esperando es realmente el resultado que
llegó y esto es todo si ejecutamos esta
función nos daremos cuenta que el
proceso se ejecutó de manera correcta
ahora si cambiamos a esta función y le
cambiamos el comportamiento y volvemos a
ejecutar el test nos daremos cuenta que
se va a haber levantado una acción error
lo cual quiere decir que en nuestro test
ha fallado y así es como se realiza un
test unitario el test inmunitario se
realiza en la fase de desarrollo y es un
paso importante ya que si se implementa
de manera correcta puede ayudarnos en
los siguientes puntos las pruebas
unitarias ayudan a corregir errores en
las etapas tempranas de desarrollo y
ahorrar costos imaginemos que la función
que acabamos de testear llamada app la
convertimos en una librería esta
librería es utilizada por otra librería
llamada mud que realiza multiplicación y
a su vez esta librería de multiplicación
es utilizada en un micro servicio que
ayuda a calcular el carrito de compras y
la librería no es testeado correctamente
y se encuentra un error por ejemplo en
la fase de despliegue esto significaría
que la librería that tiene que ser
corregida y luego subida una versión lo
que significaría que la librería mud
tendría que crear una nueva versión
apuntando la nueva versión de la
librería y a su vez el micro servicio
que realiza la comprobación del carrito
de compras tendría que subir una versión
nueva apuntando a la nueva versión de la
librería de moody como ven todo esto es
sumamente costoso y esto es un ejemplo
muy sencillo pero existen casos
realmente complicados además de esto
ayuda a los desarrolladores a entender
el code veis rápidamente y a realizar
cambios nada más como charlé un vistazo
a la suite de un proyecto podríamos
entender todas las cosas que se realizan
en el mismo y además de esto ayuda a los
desarrolladores a realizar cambios sin
miedos porque saben que si rompen algo
probablemente algún test va a fallar y
lo va a respaldar además de esto las
pruebas unitarias ayudan a la
reutilización de código si se migra un
proyecto y a su vez emigran los tests
que se realizaron para probar este
proyecto sólo hace falta asegurarse de
que los tests funcionen correctamente
para saber que la migración con éxito
ahora vamos a ver un concepto muy
importante relacionado a las pruebas
unitarias llamadas de dobles o dobles de
text vamos a volver al caso de la
librería mud que utilizaba la librería
that para realizar una multiplicación al
momento de querer testear esta librería
nos damos cuenta que para que funcione
en nuestra librería es necesario la
correcta ejecución de la librería pero
si recordamos el concepto del principio
un test unitario debería aprobar esta
función de manera individual e
independiente por lo tanto queremos que
nuestro test pruebe esta función muy sin
tener que ejecutar la función a para
esto utilizamos los test de bus que no
son más que objetos que reemplazan a
otros objetos para lograr que nuestro
ustedes sean independientes existen
cinco tipos de texto bus los stops que
son objetos que simulan lo que retorna
la función que vas a probar los mods que
son similares a los stops pero también
puedes comprobar que ciertas funciones
fueron llamadas y los dormis que son
objetos que realmente no hacen
absolutamente nada pero permiten
satisfacer las necesidades de una
función los fakes que son objetos que
simulan diferentes objetos mediante una
implementación distinta como por ejemplo
un sistema de auténticas y por último
los tres países que son stops pero que
mantienen información sobre el estado
del mismo y por último en este vídeo
vamos a hablar sobre ted describe nivel
td es una práctica de programación que
consiste en escribir los tres primeros y
luego escribir el código que se está
probando de esta manera puedes definir
claramente los objetivos que buscas a
realizar el código que estás escribiendo
y además de esto te aseguras que no
existan ninguna función que no esté
debidamente acompañada de un test bien
vamos a ver cómo se ve esto de td en la
práctica problemas nuestro ejemplo de la
función y ahora digamos que queremos que
este pequeño script realice más
funciones que no sólo sea la suma
queremos que por ejemplo también realice
resta re nombramos nuestro archivo de
atacar y real nombramos también el test
antes acá lo que normalmente haríamos
definir en este archivo la función
sustrato por ejemplo y luego iríamos a
los tests y 2 y tendríamos el test que
lo prueba con td en lo que tendríamos
que hacer es empezar de hecho por el de
ficción que son un poquito extraño y
confusos y no los trabajaba antes pero
veremos que tiene todo el sentido del
mundo empezamos definiendo nuestro test
en este caso lo vamos allá artes como
vibración de subte a veces el copa y lo
que están fastidiando en este caso
nuestro spector crisol podría ser igual
3 en este caso el copiloto nos está
completando su y vamos a hacer el mismo
caso bueno vamos a decir 5 menos 2 y
correctamente y luego de último hacemos
un hacer de que actual es igual a
spector sol y lo que tendríamos que
hacer es llamar a esta función bien si
ejecutamos este archivo nos daremos
cuenta que hay un atributo error y dice
el módulo calc no tienen atributos sub
porque porque realmente no lo hemos
implementado pero cuando trabajamos con
td esto es realmente lo que queremos que
nuestro test falle primero porque porque
no hemos realizado ningún código que
respalde este test después que tenemos
nuestros tres fallando ahora sí podemos
implementar la función sub que es la que
falta nos vamos a nuestro hogar a
nuestro módulo ponemos sub de aire igual
y dejamos que compay lo complete bien
muy bien y ahora si ejecutamos nuestro
módulo de nuevo nos daremos cuenta que
todo se ejecutó perfectamente y se fijan
cuando realizamos el test sin saber o
sin tener la función primero de alguna
manera realizamos un poquito de diseño
sobre cómo iba a ser nuestra
implementación pusimos el nombre a la
función sub que todaví existía por lo
tanto utilizar t no sólo te permite
tener siempre un test sino además te
permite hacer un poquito de diseño de
implementación a nivel de test inclusive
antes de escribir ningún tipo de código
y ya para finalizar sé que probablemente
estás pensando que escribir tests
unitarios hace que se retrase el proceso
de desarrollo pero en realidad estás
ganando tiempo en etapas posteriores por
lo tanto es recomendable realizar
testing en todos los proyectos que
trabajes con respecto a td no es
necesariamente estricto que lo
implementas en tu tipo de desarrollo no
es mandatorio que empieces cada cosa que
realices a través de un test a veces
esto suele ser realmente complicado pero
lo que sí es recomendable es que tengas
un main set de que todo cambio que
realices debe venir acompañado de un
test además de esto dependiendo del
lenguaje con el que tú trabajes existen
distintas librerías para realizar este
tipo de test además existen distintas
librerías para implementar los test op
adicional a esto cada lenguaje tiene sus
buenas prácticas de cómo realizar el
test así que te animo a que revisen las
documentaciones de estas herramientas
esto fue todo por el vídeo de hoy antes
de despedirme me gustaría que te
suscribas al canal que le des me gusta
si disfrutaste estos vídeos y que lo
compartas con amigos desarrolladores nos
vemos en un próximo vídeo y happy
calling
[Música]
[Aplausos]
[Música]
Посмотреть больше похожих видео
Ep1 | ¿Qué es probar? Fundamentos de ISTQB en español #CTFL #Probar #QA #ISTQB
Aprende a TRIANGULAR en TDD para pasar de rojo a verde #TestDrivenDevelopment
Conversión de unidades por Factor Unitario
Cómo EMBEBER UN GPT en una página WEB [Tutorial paso a paso]
Cómo Saber Si Una Estrategia De Trading Funciona Sin Perder Ni $1
📊Cómo funcionan las ECONOMÍAS DE ESCALA? Ejemplos
5.0 / 5 (0 votes)