Pruebas que te ayudan a encontrar defectos más rápido

Rate this content
Bookmark

Esta charla trata sobre los errores comunes que cometen las personas al escribir pruebas.


Mezclar múltiples aspectos dentro de las pruebas es tentador porque puede parecer que se está pintando todo el panorama. Sin embargo, esto oculta la causa raíz cuando una prueba falla. Los métodos de configuración son geniales, pero cuando los desarrolladores se centran demasiado en mantener sus pruebas DRY, pueden llevar fácilmente a la interdependencia de las pruebas. Por lo tanto, algunos principios que hemos aprendido para construir nuestro software debemos desaprenderlos cuando se trata de las pruebas.


La charla destaca otros aspectos como las pruebas infladas que dificultan comprender de qué se tratan y el uso adecuado de las afirmaciones para obtener mejores mensajes de error.

Especialmente si no trabajas con TDD, puede ser fácil crear una prueba que parezca buena pero que te obstaculice cuando falla.


La charla analizará los cuatro escenarios que mencioné anteriormente, explicará por qué tiene sentido pensar en ellos y ofrecerá sugerencias prácticas sobre cómo mejorar las pruebas.

FAQ

TDD significa Desarrollo Guiado por Pruebas. Es importante porque ayuda a los desarrolladores a organizar y abordar el desarrollo de software en pequeños pasos, asegurándose de que cada funcionalidad esté correctamente probada antes de avanzar.

Phil prefiere usar el estilo BDD en sus pruebas porque se alinea con su preferencia personal y la forma en que le gusta estructurar sus pruebas. BDD utiliza la palabra clave 'should', la cual facilita la redacción de pruebas que describen el comportamiento esperado de una manera clara.

Phil cree que no es necesario limitar estrictamente el número de afirmaciones por prueba a una sola. Según él, dependiendo de la situación, puede ser apropiado tener más de una afirmación para probar adecuadamente la funcionalidad.

La regla general de Phil es que si encuentras las palabras 'y' o 'o' en la descripción de una prueba, probablemente estás combinando demasiado en una sola prueba. Sugiere dividir estas pruebas en múltiples para mantenerlas enfocadas en un único caso de uso.

Usar afirmaciones específicas es importante porque proporcionan más contexto cuando una prueba falla. Esto ayuda a entender rápidamente qué fue lo que salió mal, sin necesidad de profundizar demasiado en el código para descubrir el problema.

Phil utiliza su pereza como una herramienta para mantener sus pruebas organizadas y eficientes, evitando la repetición innecesaria y extrayendo código común a métodos cuando se utiliza más de una vez. Esto ayuda a mantener el código de prueba limpio y fácil de entender.

Phil advierte que aplicar el principio DRY de manera demasiado rigurosa en las pruebas puede ser peligroso. Extraer demasiado código a funciones comunes puede llevar a un estado compartido involuntario entre pruebas, lo que puede causar fallos difíciles de rastrear si las pruebas se vuelven dependientes del orden de ejecución.

Philipp Giese
Philipp Giese
21 min
19 Nov, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla aborda pruebas que ayudan a encontrar defectos más rápido, centrándose en las afirmaciones de casos de prueba, mejorando el contexto de falla de las pruebas, la estructura del código de prueba y los peligros de extraer código en las pruebas. Se enfatiza la importancia de las pruebas pequeñas, el aislamiento de las pruebas y el uso de TDD. Se discuten los beneficios de TDD y la automatización probable, junto con la configuración de un flujo de trabajo de ingeniería y el uso de simulación. En general, la charla proporciona información valiosa sobre cómo escribir pruebas efectivas y garantizar la calidad del código.

1. Introducción a la Charla

Short description:

Bienvenidos a mi charla sobre pruebas que te ayudan a encontrar defectos más rápido. Soy Philip, CTO en Oution, y he aprendido de mis propios errores al escribir pruebas. Comenzaré discutiendo lo que esta charla no cubrirá, como la nomenclatura de las pruebas y el número de afirmaciones en un caso de prueba. Tanto los estilos Rspec como BDD son igualmente buenos, es cuestión de preferencia personal.

¡Hola y bienvenidos a mi charla, pruebas que te ayudan a encontrar defectos más rápido! Mi nombre es Philip, pero todos me llaman Phil. Así que tú también puedes hacerlo. Vivo en una ciudad llamada Potsdam en Alemania, justo al lado de Berlín. Pero aparte de los hipsters, también tenemos castillos. También soy CTO de una empresa llamada Oution y he ocupado roles de liderazgo técnico en los últimos años. He sido mentor de varios desarrolladores menos experimentados en el camino.

Y al hacerlo, he aprendido sobre los diferentes errores que cometen las personas y los problemas en los que se meten al escribir pruebas de software. Como disfruto mucho escribir pruebas, soy un gran fanático de TDD, porque me ayuda a organizarme y trabajar en pequeños pasos. Pensé que esta sería una buena oportunidad para compartir algunos de esos conocimientos. Obviamente, yo mismo he cometido la mayoría de esos errores en los últimos años, lo suficiente como para analizarlos y ver qué es realmente importante y qué no lo es. Lo cual me lleva también a mi primer punto. Me gustaría comenzar esta charla no con un tema, sino con los temas que no se tratarán en esta charla. Y lo primero será la nomenclatura de las pruebas, ¿verdad? Hay varios estilos diferentes para escribir nombres de pruebas y descripciones de pruebas. Solo para darte un ejemplo, voy a ejecutar algunos aquí para que veas cómo se ven en un ejecutor de pruebas. Por ejemplo, hay un estilo llamado Rspec, donde básicamente lees todos los describe hasta el it, y luego esto forma una oración completa. Por ejemplo, aquí se puede identificar a un usuario. Esta es una forma de hacerlo, obviamente, ¿verdad? También hay un estilo diferente, BDD, Desarrollo Guiado por el Comportamiento, donde se usa mucho la palabra clave should, así que aquí he usado usuario simplemente como un nombre para un grupo. Y luego el nombre de la prueba debería ser posible identificar a un usuario. Ahora, el punto importante aquí es que ambos son igualmente buenos, ¿verdad? No hay uno mejor que el otro. Es solo una cuestión de gusto personal, lo que te gusta más, lo que funciona para ti. Por eso no quiero hacer un problema de esto aquí. En esta charla voy a usar mucho el estilo BDD, should, pero no creo que sea mejor si prefieres escribir tus pruebas de manera diferente. Eso está perfectamente bien, así que eso no es realmente de lo que trata esta charla.

2. La Importancia de las Afirmaciones en los Casos de Prueba

Short description:

Esta charla no trata de reglas arbitrarias para el número de afirmaciones en un caso de prueba. Hay pros y contras en el uso de una o varias afirmaciones. Es importante encontrar un enfoque que funcione para ti. Los ejemplos utilizados son intencionalmente simples para ilustrar los puntos principales.

Lo segundo de lo que trata esta charla no es sobre ciertas reglas arbitrarias cuando se trata de cuántas afirmaciones deberían haber en un caso de prueba, ¿verdad? Hay reglas vinculadas que dicen que cada prueba solo debe tener una afirmación y no creo que siempre sea, ya sabes, correcto. Por ejemplo, estos dos son exactamente iguales. El primero usa una afirmación donde, ya sabes, queremos afirmar que un objeto de usuario tiene cierta estructura, por lo que podemos usar el objeto de coincidencia para comparar todas esas propiedades. Y si algo falta, entonces falla, pero podríamos escribir la misma prueba exacta también con dos afirmaciones donde verificamos las propiedades individualmente. Probablemente haya pros y contras en cualquiera de estos enfoques, pero no diría, ya sabes, que uno es particularmente mejor o uno es peor. Así que también aquí, ya sabes, esto no es algo de lo que me gustaría hablar. Encuentra algo que funcione para ti y sigue con eso, ¿verdad? Y obviamente... entonces de lo que tampoco trata esta charla es de, espero, de buscarle problemas a mi ejemplo. He elegido ejemplos deliberadamente simples para, ya sabes, transmitir la idea general. Obviamente no son del mundo real, ¿verdad? Probablemente no los encontrarías exactamente así en un escenario del mundo real, a veces incluso pueden contradecir ciertas reglas que menciono, pero siempre es para, ya sabes, transmitir mejor el punto del que estoy hablando.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Solicitudes de Red con Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Solicitudes de Red con Cypress
Top Content
Ya sea que estés probando tu UI o API, Cypress te proporciona todas las herramientas necesarias para trabajar y gestionar solicitudes de red. Esta tarea de nivel intermedio demuestra cómo usar los comandos cy.request y cy.intercept para ejecutar, espiar y simular solicitudes de red mientras pruebas tu aplicación en el navegador. Aprende cómo funcionan los comandos, así como los casos de uso para cada uno, incluyendo las mejores prácticas para probar y simular tus solicitudes de red.
Testing Pyramid Makes Little Sense, What We Can Use Instead
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Top Content
Featured Video
Gleb Bahmutov
Roman Sandler
2 authors
The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress ha tomado al mundo por sorpresa al traer una herramienta fácil de usar para pruebas de extremo a extremo. Sus capacidades han demostrado ser útiles para crear pruebas estables para aplicaciones de frontend. Pero las pruebas de extremo a extremo son solo una pequeña parte de los esfuerzos de prueba. ¿Qué pasa con tu API? ¿Qué pasa con tus componentes? Bueno, en mi charla me gustaría mostrarte cómo podemos comenzar con pruebas de extremo a extremo, profundizar con pruebas de componentes y luego subir a probar nuestra API, circ
Desarrollo Efectivo de Pruebas
TestJS Summit 2021TestJS Summit 2021
31 min
Desarrollo Efectivo de Pruebas
Top Content
Los desarrolladores quieren dormir tranquilos sabiendo que no rompieron la producción. Las empresas quieren ser eficientes para satisfacer las necesidades de sus clientes más rápido y obtener una ventaja competitiva antes. TODOS queremos ser coste efectivos... o debería decir... ¡PRUEBA EFECTIVA!¿Pero cómo hacemos eso?¿Nos sirve bien la terminología de "unidad" e "integración"?¿O es hora de un cambio? ¿Cuándo deberíamos usar cada estrategia para maximizar nuestra "efectividad de prueba"?¡En esta charla te mostraré una nueva forma de pensar sobre las pruebas coste efectivas con nuevas estrategias y nuevos términos de prueba!¡Es hora de ir MÁS PROFUNDO!
Playwright Test Runner
TestJS Summit 2021TestJS Summit 2021
25 min
Playwright Test Runner
Top Content
Todos pueden escribir pruebas fácilmente
TestJS Summit 2023TestJS Summit 2023
21 min
Todos pueden escribir pruebas fácilmente
Echemos un vistazo a cómo Playwright puede ayudarte a escribir tus pruebas de extremo a extremo con herramientas como Codegen que generan pruebas basadas en la interacción del usuario. Exploraremos el modo UI para una mejor experiencia de desarrollador y luego repasaremos algunos consejos para asegurarnos de que no tengas pruebas inestables. Luego hablemos de cómo poner en marcha tus pruebas en CI, depurar en CI y escalar usando fragmentos.

Workshops on related topic

React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
Cómo empezar con Cypress
TestJS Summit 2022TestJS Summit 2022
146 min
Cómo empezar con Cypress
Featured WorkshopFree
Filip Hric
Filip Hric
La web ha evolucionado. Finalmente, también lo ha hecho el testing. Cypress es una herramienta de testing moderna que responde a las necesidades de testing de las aplicaciones web modernas. Ha ganado mucha popularidad en los últimos años, obteniendo reconocimiento a nivel mundial. Si has estado esperando aprender Cypress, ¡no esperes más! Filip Hric te guiará a través de los primeros pasos sobre cómo empezar a usar Cypress y configurar tu propio proyecto. La buena noticia es que aprender Cypress es increíblemente fácil. Escribirás tu primer test en poco tiempo y luego descubrirás cómo escribir un test de extremo a extremo completo para una aplicación web moderna. Aprenderás conceptos fundamentales como la capacidad de reintentar. Descubre cómo trabajar e interactuar con tu aplicación y aprende cómo combinar pruebas de API y de UI. A lo largo de todo este masterclass, escribiremos código y realizaremos ejercicios prácticos. Saldrás con una experiencia práctica que podrás aplicar a tu propio proyecto.
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Masterclass de Pruebas de API con Postman
TestJS Summit 2023TestJS Summit 2023
48 min
Masterclass de Pruebas de API con Postman
Top Content
WorkshopFree
Pooja Mistry
Pooja Mistry
En el panorama siempre en evolución del desarrollo de software, garantizar la fiabilidad y funcionalidad de las API se ha vuelto primordial. "Pruebas de API con Postman" es una masterclass completa diseñada para equipar a los participantes con los conocimientos y habilidades necesarios para sobresalir en las pruebas de API utilizando Postman, una herramienta poderosa ampliamente adoptada por profesionales en el campo. Esta masterclass profundiza en los fundamentos de las pruebas de API, avanza a técnicas de prueba avanzadas y explora la automatización, las pruebas de rendimiento y el soporte multiprotocolo, proporcionando a los asistentes una comprensión holística de las pruebas de API con Postman.
Únete a nosotros para esta masterclass para desbloquear todo el potencial de Postman para las pruebas de API, agilizar tus procesos de prueba y mejorar la calidad y fiabilidad de tu software. Ya seas un principiante o un probador experimentado, esta masterclass te equipará con las habilidades necesarias para sobresalir en las pruebas de API con Postman.
Pruebas de Aplicaciones Web utilizando Cypress
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Pruebas de Aplicaciones Web utilizando Cypress
WorkshopFree
Gleb Bahmutov
Gleb Bahmutov
Este masterclass te enseñará los conceptos básicos de cómo escribir pruebas de extremo a extremo utilizando Cypress Test Runner.
Cubriremos la escritura de pruebas, abarcando todas las características de la aplicación, estructurando las pruebas, interceptando solicitudes de red y configurando los datos del backend.
Cualquier persona que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir el masterclass.