5 Hábitos para Tratar tu Código de Pruebas como Código de Producción

Rate this content
Bookmark

En esta charla, David hablará sobre 5 hábitos que puedes seguir para asegurar la misma calidad que tu código de producción y construir suites de pruebas que sean robustas, consistentes y te ayuden a depurar los problemas rápidamente.

- Viaje típico para equipos que adoptan la automatización de pruebas

- 5 hábitos a seguir al construir tu suite de pruebas

- Nuestros aprendizajes de una actividad reciente de refactorización

FAQ

Es crucial tratar el código de prueba con la misma seriedad que el código de producción para asegurar que las pruebas sean manejables, mantenibles y menos propensas a errores, lo que conduce a un software más confiable y de mayor calidad.

Las pruebas unitarias son fundamentales porque deben ser abundantes y ayudan a verificar la funcionalidad de los componentes individuales del código, reduciendo errores y mejorando la estabilidad del software.

Las pruebas de interfaz de usuario, al requerir más integración, tienden a ejecutarse más lentamente. Esto puede ralentizar el proceso de integración continua, que debería completarse idealmente en unos 10 minutos para un ciclo de retroalimentación rápido.

David Burns sugiere hacer pruebas más modulares, donde las pruebas unitarias, de integración y de interfaz de usuario se manejen por separado para aumentar la velocidad y reducir la inestabilidad de las pruebas complejas.

Mantener las dependencias de prueba actualizadas asegura que se aprovechen las nuevas características y mejoras en las herramientas de prueba, contribuyendo a la eficiencia y efectividad del proceso de prueba.

David Burns recomienda utilizar herramientas que mantengan a los desarrolladores y probadores en un 'flujo' consistente, como extensiones en VS Code, para ejecutar pruebas eficientemente sin distracciones y mantener alta la productividad.

David Burns
David Burns
22 min
03 Nov, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy se centra en los cinco hábitos para tratar el código de pruebas como código de producción. Se enfatiza la importancia de las pruebas modulares y descomponer las pruebas de interfaz de usuario en componentes más pequeños. Tratar a los SDETs como ingenieros de software es crucial para la calidad del código y las pruebas. También se discuten los desafíos de las pruebas de instantáneas y los beneficios de las pruebas de componentes, incluida la mejora de la eficiencia y la solución de problemas de asincronía y promesas anidadas.

1. Introducción

Short description:

Hoy voy a hablar sobre los cinco hábitos para tratar tu código de prueba como lo harías con el código de producción. Mi nombre es David Burns, soy el responsable de la Oficina de Programas de Código Abierto en Browserstack y soy el presidente del grupo de trabajo de pruebas de navegadores y herramientas del W3C. Al final del día, podrás llevar algo contigo y ver cómo puedes reorganizar todo lo que haces en el trabajo para facilitar tu vida.

Hola a todos. Hoy voy a hablar sobre los cinco hábitos para tratar tu código de prueba como lo harías con el código de producción. Así que, en primer lugar, ¿quién soy yo? Mi nombre es David Burns o como la mayoría de la gente me conoce, tester automatizado. Soy el responsable de la Oficina de Programas de Código Abierto en Browserstack. Soy el presidente del grupo de trabajo de pruebas de navegadores y herramientas del W3C. Soy un colaborador de Selenium y Nightwatch JS. Llevo tiempo en esta industria. Y espero que al final del día, puedas llevar algo contigo y ver cómo puedes reorganizar todo lo que haces en el trabajo para facilitar tu vida.

2. Enfoque de las pruebas y la Pirámide de pruebas

Short description:

En esta parte, discutiremos cómo las personas tienden a abordar las pruebas en los proyectos y cómo descomponer las pruebas para que sean manejables, mantenibles y menos propensas a errores. También exploraremos la importancia de tratar el código de prueba como código de producción y mejorar las herramientas. Además, examinaremos la pirámide de pruebas, que incluye pruebas unitarias, pruebas de servicio y pruebas de interfaz de usuario, y el equilibrio entre el aislamiento y la integración. Por último, abordaremos el problema de sobrecargar las pruebas unitarias y los desafíos resultantes para mantenerlas.

Aquí está nuestra agenda. Voy a analizar cómo las personas tienden a ver sus pruebas en los proyectos, cómo podemos descomponer las pruebas para que sean manejables, mantenibles y menos propensas a errores. Esa es la parte más importante. Cómo tratar tu código de prueba como código de producción. Entonces, qué hacemos con la última parte y cómo mejorar tus herramientas y en realidad por qué esto es importante. Te sorprenderás. Así que empecemos y veamos a dónde llegamos.

Ahora, he estado trabajando en pruebas durante muchos, muchos años y tiendo a ver cómo las personas ven las pruebas desde diferentes perspectivas. Y si lo vemos de la manera teórica, así es como deberían hacerlo las personas. En la parte inferior, tenemos aquí la pirámide de pruebas. En la parte inferior, tenemos las pruebas unitarias. La razón por la que eso es importante es porque la razón por la que es más amplia es que siempre debería haber muchas más de ellas que cualquier otro tipo de pruebas en nuestro código de prueba. Luego tenemos las pruebas de servicio. Estas son nuestras pruebas de integración. Estas son todas como si las pruebas unitarias fueran pequeñas, las pruebas de servicio tienden a ser medianas y comienzan a cerrar las brechas entre todos nuestros pequeños componentes de código o áreas atómicas de código. Y nos acerca a la siguiente parte, que son nuestras pruebas de interfaz de usuario. Ahora, una de las cosas que no incluí aquí es la prueba manual. Por lo general, tiendo a hablar sobre las pruebas automatizadas, pero esto no significa que menosprecie las pruebas manuales. Y si observas las flechas en el lateral, verás que en el lado izquierdo, a medida que miro la pantalla, hay más aislamiento y más integración. A medida que subes, necesitarás más integración y menos aislamiento. Sin embargo, el inconveniente de agregar más integración es que las cosas se volverán más lentas. Esto es simplemente ciencia de la computación, ¿verdad? Cuanto más código tenga que procesarse, más lento será, ¿verdad? Si haces un bucle dentro de otro bucle, sabes que será más lento que un solo bucle tratando de encontrar algo. Idealmente, debemos intentar hacer pruebas súper rápidas y muchas menos pruebas lentas. Desafortunadamente, especialmente por lo que veo, y aprecio que pueda haber mucho sesgo, después de haber trabajado en Selenium y NightwatchJS durante muchos, muchos años, es que las personas hacen pruebas unitarias. Estas generalmente son realizadas por tus desarrolladores, y se hacen con jest, Karma o cosas así, y las personas ponen mucho esfuerzo en ellas. Luego comenzarás a tener algunas pruebas de servicio o estas pruebas de integración, y así tomé mi imagen aquí del trabajo de Martin Fowler, y la he reorganizado un poco. Luego, especialmente ahora que veo esto en BrowserStack y hablo con los clientes, y cuando estaba en Mozilla, hablando con usuarios de Selenium, las personas tienden a arrojar todo, y quiero decir todo, a sus pruebas unitarias. Las llenarían, pondrían toneladas de pruebas, y luego, poco a poco, las pruebas se volverían inmantenibles.

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

Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
Desplegar una aplicación no es un proceso fácil. Te encontrarás con muchos problemas y puntos de dolor que resolver para que funcione correctamente. Lo peor es: ahora que puedes desplegar tu aplicación en producción, ¿cómo no vas a poder desplegar también todas las ramas del proyecto para tener acceso a vistas previas en vivo? ¿Y poder hacer un revert rápido a pedido?Afortunadamente, el clásico conjunto de herramientas de DevOps tiene todo lo que necesitas para lograrlo sin comprometer tu salud mental. Al mezclar expertamente Git, herramientas de Unix y llamadas a API, y orquestar todo ello con JavaScript, dominarás el secreto de los despliegues atómicos seguros.No necesitarás depender de servicios comerciales: ¡conviértete en el maestro perfecto de las herramientas y netlifica tu aplicación desde casa!
Pruebas de rendimiento efectivas para su servidor con Autocannon
TestJS Summit 2021TestJS Summit 2021
36 min
Pruebas de rendimiento efectivas para su servidor con Autocannon
Top Content
Experiencia en pruebas de rendimiento que se ha desarrollado durante mucho tiempo. Para medir el rendimiento de su servidor, necesita una herramienta que pueda simular eficientemente muchas habilidades y proporcionarle buenas mediciones según sus criterios de análisis.La biblioteca NPM de Autocannon me dio exactamente eso: esa biblioteca es muy fácil de instalar y tiene una API muy simple con la que trabajar. En un corto período de tiempo, puede comenzar a realizar pruebas de rendimiento en su aplicación y obtener buenas mediciones en el entorno de desarrollo y en sus laboratorios de rendimiento, y generar escenarios de prueba complicados.En esta charla presentaré Autocannon, explicaré cómo analizar eficientemente el rendimiento de su servidor con él y mostraré cómo me ayudó a entender problemas de rendimiento complicados en mis servidores Node.js. Al final de esta conferencia, los desarrolladores tendrán la capacidad de integrar una herramienta rápida y fácil para medir el rendimiento de su servidor.
Pruebas de integración encantadoras con Testcontainers
TestJS Summit 2022TestJS Summit 2022
21 min
Pruebas de integración encantadoras con Testcontainers
Top Content
Los servicios Dockerizados son una excelente herramienta para crear entornos aislados y repetibles ideales para pruebas de integración. En esta sesión, veremos las bibliotecas de Testcontainers que proporcionan una API flexible e intuitiva para controlar programáticamente el ciclo de vida de las dependencias de su servicio en contenedores Docker. Ejecutar bases de datos, Kafka, Elasticsearch e incluso tecnologías en la nube, directamente desde su código de prueba asegura que la configuración del entorno siempre esté actualizada y sea consistente durante el desarrollo local y en los pipelines de CI.Aprenderás todo lo necesario para comenzar a agregar pruebas de integración poderosas a tu base de código sin el dolor de cabeza de administrar dependencias de servicio externas manualmente!
Regresión Visual con Puppeteer, Playwright y Cypress
TestJS Summit 2021TestJS Summit 2021
9 min
Regresión Visual con Puppeteer, Playwright y Cypress
Top Content
Las pruebas de Regresión Visual se realizan a través de la coincidencia de capturas de pantalla. Mostraré cómo hacerlo en tres diferentes bibliotecas/marcos de trabajo. Además, utilizaré Storybook para extraer los componentes de tu elección de SPA.
¿Playwright puede hacer esto?
TestJS Summit 2022TestJS Summit 2022
23 min
¿Playwright puede hacer esto?
Garantizar que tu aplicación no se rompa mientras envías constantemente nuevas características es difícil. Obviamente, con una aplicación o sitio en constante crecimiento, no puedes probar todo manualmente todo el tiempo.La automatización de pruebas y el monitoreo son cruciales para evitar enviar aplicaciones y sitios rotos. Pero, ¿qué funcionalidad debes probar? ¿Cuándo debes ejecutar tus pruebas? ¿Y no son las suites de pruebas complejas muy lentas?En esta sesión, pondremos manos a la obra con Playwright, el marco de pruebas de extremo a extremo, y aprenderemos cómo automatizar navegadores sin cabeza para asegurarnos de enviar nuevas características con confianza.
La Guía del Desarrollador Perezoso: ¿Cómo Automatizar las Actualizaciones de Código?
DevOps.js Conf 2022DevOps.js Conf 2022
22 min
La Guía del Desarrollador Perezoso: ¿Cómo Automatizar las Actualizaciones de Código?
¿Cómo actualizar cientos de proyectos de una vez? Con el rápido crecimiento de las organizaciones, la demanda de escalabilidad de los equipos crece, lo que afecta directamente la estructura y propiedad de los proyectos. El dilema habitual es mono vs. multi-repos, pero... ¿Y si te digo que no importa mucho? Ambos enfoques pueden golpearte en algún momento, así que tal vez es mejor pensar de abajo hacia arriba.
Hoy te guiaré a través de algunos de los mayores desafíos que existen en ambos enfoques, como la gestión de dependencias en cientos de proyectos, las actualizaciones globales de código y muchas otras cosas. También te mostraré ejemplos de cómo resolvimos esto dentro de Infobip mediante la construcción de nuestras propias bibliotecas internas.

Workshops on related topic

Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
TestJS Summit 2021TestJS Summit 2021
85 min
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
Workshop
Bonnie Schulkin
Bonnie Schulkin
¿Incluyen tus pruebas automatizadas verificaciones de accesibilidad? Este masterclass cubrirá cómo comenzar con jest-axe para detectar violaciones de accesibilidad basadas en código, y Lighthouse CI para validar la accesibilidad de las páginas completamente renderizadas. Ninguna cantidad de pruebas automatizadas puede reemplazar las pruebas manuales de accesibilidad, pero estas verificaciones se asegurarán de que tus probadores manuales no estén haciendo más trabajo del necesario.
Automatización de pruebas utilizando WebdriverIO
TestJS Summit 2022TestJS Summit 2022
163 min
Automatización de pruebas utilizando WebdriverIO
Workshop
Kevin Lamping
Kevin Lamping
En este masterclass, cubro no solo lo que WebdriverIO puede hacer, sino también cómo lo utilizarás día a día. He construido los ejercicios en torno a escenarios del mundo real que demuestran cómo realmente configurar las cosas. No es solo "qué hacer", sino específicamente "cómo llegar allí". Cubriremos los fundamentos de las pruebas automatizadas de UI para que puedas escribir pruebas mantenibles y útiles para tu sitio web y/o aplicación web.
JS Automatización de Pruebas de Seguridad para Desarrolladores en Cada Compilación
TestJS Summit 2021TestJS Summit 2021
111 min
JS Automatización de Pruebas de Seguridad para Desarrolladores en Cada Compilación
WorkshopFree
Oliver Moradov
Bar Hofesh
2 authors
Como desarrollador, necesitas entregar rápido y simplemente no tienes tiempo para pensar constantemente en seguridad. Aún así, si algo sale mal, es tu trabajo arreglarlo, pero las pruebas de seguridad bloquean tu automatización, crean cuellos de botella y solo retrasan las versiones... pero no tiene por qué ser así...

El escáner de seguridad de NeuraLegion, enfocado en los desarrolladores, Dynamic Application Security Testing (DAST), permite a los desarrolladores detectar, priorizar y remediar problemas de seguridad de manera TEMPRANA, en cada confirmación, sin falsos positivos/alertas, sin ralentizarte.

¡Únete a esta masterclass para aprender diferentes formas en que los desarrolladores pueden acceder a Nexploit y comenzar a escanear sin salir de la terminal!

Recorreremos la configuración de principio a fin, mientras configuramos un pipeline, ejecutamos pruebas de seguridad y analizamos los resultados.

Tabla de contenidos:
- Qué es realmente DAST (Dynamic Application Security Testing) enfocado en los desarrolladores y cómo funciona
- Ver dónde y cómo encaja un DAST moderno y preciso en el CI/CD
- Integrar el escáner Nexploit de NeuraLegion con GitHub Actions
- Comprender cómo se pueden probar las aplicaciones modernas, las API y los mecanismos de autenticación
- Hacer un fork de un repositorio, configurar un pipeline, ejecutar pruebas de seguridad y analizar los resultados
Automatización de pruebas de seguridad para desarrolladores en cada compilación
GraphQL Galaxy 2021GraphQL Galaxy 2021
82 min
Automatización de pruebas de seguridad para desarrolladores en cada compilación
WorkshopFree
Oliver Moradov
Bar Hofesh
2 authors
Como desarrollador, necesitas entregar rápido y simplemente no tienes tiempo para pensar constantemente en seguridad. Aún así, si algo sale mal, es tu trabajo arreglarlo, pero las pruebas de seguridad bloquean tu automatización, crean cuellos de botella y solo retrasan las versiones, especialmente con graphQL... pero no tiene por qué ser así...

El escáner de seguridad de NeuraLegion, enfocado en los desarrolladores, permite detectar, priorizar y remediar problemas de seguridad de manera temprana, en cada confirmación, sin falsos positivos o alertas, sin ralentizarte.

Únete a esta masterclass para aprender diferentes formas en las que los desarrolladores pueden acceder al escáner de seguridad de NeuraLegion y comenzar a escanear sin salir de la terminal!

Recorreremos la configuración de principio a fin, mientras configuramos un pipeline para un objetivo GraphQL vulnerable, ejecutamos pruebas de seguridad y analizamos los resultados.

Tabla de contenidos:
- Qué es realmente el escáner de seguridad de NeuraLegion enfocado en los desarrolladores (Dynamic Application Security Testing) y cómo funciona
- Ver dónde y cómo encaja un escáner moderno y preciso enfocado en los desarrolladores en el CI/CD
- Integrar el escáner de NeuraLegion con GitHub Actions
- Comprender cómo se pueden probar las aplicaciones modernas, GraphQL y otras API y mecanismos de autenticación
- Hacer un fork de un repositorio, configurar un pipeline, ejecutar pruebas de seguridad y analizar los resultados