Monitorización Sintética y Pruebas de Extremo a Extremo - Dos Caras de la Misma Moneda

Rate this content
Bookmark
Slides

En los últimos años, se ha puesto gran énfasis en desplazar las pruebas hacia la izquierda, es decir, hacia etapas más tempranas del ciclo de desarrollo de software. Es genial que la aparición de tendencias como las pruebas de extremo a extremo nos haya permitido validar el flujo de trabajo del usuario de manera más temprana. Sin embargo, esto no elimina la necesidad de monitorear este flujo de trabajo en un sistema de producción en vivo. He observado que la segregación de los equipos de desarrollo y soporte lleva a que ambos equipos utilicen diferentes herramientas para construir automatizaciones similares que simplemente apuntan a diferentes entornos del mismo software.
Al unir fuerzas, podemos construir scripts automatizados que se pueden utilizar tanto para la monitorización en producción como para las pruebas dentro de CI. En esta charla, discutiré las causas de esta división cultural y por qué es necesario que esto cambie para poder desplazar las pruebas de usuario tanto hacia la izquierda como hacia la derecha. Además, mostraré cómo se puede lograr esto utilizando Playwright y Elastic Synthetics y también hablaré sobre los desafíos a los que te puedes enfrentar al desplazar las pruebas hacia la izquierda y hacia la derecha.

This talk has been presented at React Summit 2023, check out the latest edition of this React Conference.

FAQ

El monitoreo sintético se refiere a la ejecución de scripts programados para verificar la accesibilidad y funcionamiento de una aplicación, mientras que las pruebas de extremo a extremo implican la validación del recorrido del usuario a través de pruebas automatizadas para asegurar que la aplicación funcione correctamente en diferentes escenarios.

Las diferencias suelen deberse a la separación de departamentos con agendas en competencia, la falta de priorización común de los problemas y el uso de herramientas distintas para objetivos similares, lo que impide una colaboración efectiva y la unificación de los flujos de trabajo.

Elastic Synthetics permite utilizar un tooling común para ejecutar pruebas de extremo a extremo y monitoreo sintético, facilitando el uso de los mismos scripts tanto en pruebas como en herramientas de monitoreo, lo que mejora la colaboración y la eficiencia entre los equipos de desarrollo y SRE.

Utilizar una herramienta común como Elastic Synthetics ofrece beneficios como la documentación del recorrido del usuario, la mejora de la colaboración entre equipos, la detección temprana de defectos y la construcción de aplicaciones más robustas para los usuarios.

Las pruebas se ejecutan localmente o en las tuberías de CI durante el desarrollo, y luego se pueden implementar como monitores en la aplicación de producción a través de Elastic Synthetics, permitiendo que el equipo de SRE monitoree el estado y rendimiento en tiempo real.

Para comenzar con Elastic Synthetics, primero se debe instalar el envoltorio de Elastic Synthetics Playwright a través de NPM, utilizar el asistente de inicialización para crear un proyecto, y luego escribir pruebas basadas en los ejemplos proporcionados.

Carly Richmond
Carly Richmond
9 min
06 Jun, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Carly Richards analiza los desafíos de utilizar diferentes herramientas para la monitorización sintética y las pruebas de extremo a extremo, enfatizando la necesidad de un enfoque unificado con Playwright y Elastic Synthetics. La API de Playwright y Elastic Synthetics se pueden utilizar juntas para crear pruebas y herramientas de monitorización, asegurando una experiencia de usuario consistente y documentando las características de la aplicación. Al reunir a los equipos de desarrollo y SRE y utilizar una herramienta común, se puede mejorar la colaboración y la identificación de defectos.

1. Desafíos de las herramientas y la necesidad de unificación

Short description:

En esta parte, Carly Richards analiza los desafíos de utilizar diferentes herramientas para el monitoreo sintético y las pruebas de extremo a extremo. Explica cómo la falta de colaboración entre los equipos de desarrollo y operaciones, las prioridades diferentes y el uso de diferentes herramientas pueden obstaculizar los esfuerzos de automatización. Carly enfatiza la necesidad de un enfoque unificado e introduce playwright y Elastic Synthetics como solución. Al utilizar estas herramientas, los equipos pueden crear recorridos programados que sirven tanto como pruebas como herramientas de monitoreo, asegurando una experiencia de usuario consistente y documentando las características de la aplicación. Carly también proporciona una descripción general del proceso de implementación y destaca la importancia de mantener los monitores dentro de una estructura de proyecto.

Hola a todos. Es genial verlos en el React Summit. Mi nombre es Carly Richards, soy una defensora del desarrollo en Elastic. Y quiero hablar sobre el monitoreo sintético y las pruebas de extremo a extremo. Tal vez se pregunten por qué estas cosas pueden parecer construcciones totalmente diferentes. Pero a pesar de la aparición de DevOps y las prácticas de SRE, y de tratar de unir los flujos de trabajo personalizados, descubro que, por diversas razones, todavía estamos utilizando diferentes herramientas para tratar de lograr niveles de automatización bastante similares, aunque en diferentes puntos del ciclo de desarrollo.

Voy a hablar sobre mis propias experiencias y por qué creo que esto sucede. Y luego mostraré cómo podemos unirnos mediante un tooling común utilizando pruebas de extremo a extremo integradas en un tooling de monitoreo sintético, para permitirnos básicamente hacer ambas cosas utilizando los mismos recorridos programados. Así que solía trabajar en un banco antes de unirme a Elastic, y durante la mayor parte de ese tiempo, descubrí que el desarrollo y las operaciones no estaban tan unidos como nos gustaría decir. Básicamente eran facciones en guerra con intereses en competencia, y las mejores prácticas emergentes de SRE y DevOps que surgían en el espacio de la observabilidad a menudo eran adoptadas por la gestión de producción, pero nunca permeaban fácilmente hacia el lado del desarrollo. Y se necesitó mucha persuasión para que eso sucediera. Y honestamente creo que eso se debió a tres razones clave que, lamentablemente, creo que todavía existen en cierta medida hoy en día. La primera es que a menudo tenemos el desarrollo y SRE como departamentos separados o equipos separados, en lugar de ser parte de un equipo multidisciplinario. Y con los departamentos separados y agendas en competencia, la falta de comunicación y empatía tiende a acumularse, lo que puede ser un gran problema porque hace que cada grupo sienta que cuando alguien propone la idea de colaborar juntos, estamos lanzando cosas al otro lado de la cerca para que el otro las recoja y rompa el flujo y básicamente cuestione la dirección en la que sabíamos que debíamos construir como desarrolladores o como SRE. La segunda es que a menudo no hay una priorización común entre estos dos grupos. SRE a menudo puede encontrar defectos menores o tener ideas para la automatización o mejoras en el ecosistema de la aplicación pero con frecuencia se les da una prioridad baja y en su lugar, un propietario del producto presiona por nuevas características para los usuarios que los desarrolladores estarán encantados de construir y nunca abordamos este equilibrio. Y el último desafío que también he visto de primera mano es que a menudo los equipos de desarrollo y producción utilizan diferentes herramientas para lograr objetivos similares. Así que en mi último trabajo en el banco, estábamos utilizando activamente cypress para desarrollar pruebas de extremo a extremo mientras que los colegas de SRE estaban escribiendo automatizaciones similares en Selenium porque se integraba en su plataforma de observabilidad y podían usarlo para monitoreo periódico y verificaciones en la aplicación de producción. Y eso significaba que no podíamos usar realmente las pruebas de extremo a extremo en producción sin que alguno de nosotros cambiara a una nueva tooling. Y la realidad es que las pruebas de extremo a extremo utilizando marcos de automatización para validar el recorrido del usuario a través de pruebas automatizadas y el monitoreo sintético, donde ejecutamos scripts periódicos para verificar la accessibility o los puntos finales o la capacidad de lograr el comportamiento del usuario para asegurarnos de que siga funcionando correctamente, son efectivamente dos caras de la misma moneda. Y si nos unimos mediante un tooling común, podemos utilizar estos mismos scripts no solo como pruebas y herramientas de monitoreo en las mismas suites de aplicaciones en diferentes entornos, sino que también podemos utilizarlos como una forma común de documentar el recorrido del usuario y cómo esperamos que los usuarios utilicen las características de la aplicación. Así que podemos hacer eso utilizando playwright y Elastic Synthetics. La forma en que esto funciona como verán en gris a través de cada uno de los cuadros es que tendremos archivos de recorrido en JavaScript y TypeScript que básicamente utilizarán playwright para automatizar esas interacciones y ejecutarlas localmente como pruebas de extremo a extremo contra una aplicación web que se esté ejecutando localmente. Luego, a través de la revisión de pares, podemos ejecutar los mismos monitores como pruebas de extremo a extremo dentro del pipeline de CI de GitHub o cualquier otro proveedor de CI que estén utilizando. Una vez que llegamos a la etapa de implementación de nuestra aplicación, podemos enviar estos mismos monitores utilizando nuestra propia clave de API al lugar correspondiente, ya sea la ubicación específica de Elastic o nuestra propia ubicación privada en ejecución, para hacer el monitoreo en lugar de la aplicación web de producción, que luego almacenará los resultados dentro de Elasticsearch y pondrá a disposición los paneles en Kibana para que podamos ver qué está sucediendo. Entonces, ¿cómo comenzamos con esto? Bueno, necesitamos crear un proyecto para alojar estos monitores para que puedan mantenerse dentro de el control de origen utilizando ambas partes. La forma más fácil de hacerlo es utilizando el asistente de inicialización después de instalar el envoltorio de Elastic Synthetics Playwright a través de NPM. Le dará una estructura de proyecto de muestra que se verá así, e incluirá configuraciones sintéticas para la configuración específica del proyecto y algunos monitores de ejemplo, incluidos los recorridos en TypeScript que pueden ver allí en la carpeta de recorridos. Luego podemos escribir nuestras propias pruebas de comportamiento basándonos en los ejemplos utilizando Elastic Synthetics. Verán aquí en la parte superior que el objeto de página que es el objeto de página de playwright se expone dentro de nuestro recorrido y también dentro de cada palo.

2. Uso de la API de Playwright y Elastic Synthetics

Short description:

Podemos utilizar la API de Playwright para localizar elementos, realizar acciones y realizar afirmaciones para garantizar los resultados esperados. Estas pruebas se pueden ejecutar localmente y en tuberías de CI, y las mismas definiciones se pueden implementar en producción utilizando Elastic Synthetics. El equipo de SRE puede monitorear el estado y realizar un seguimiento del rendimiento a lo largo del tiempo. Al unir los equipos de desarrollo y SRE y utilizar una herramienta común, podemos colaborar, identificar defectos y construir mejores aplicaciones. ¡Gracias por asistir a React Summit!

Y podemos hacer uso de la API de Playwright para realizar acciones como localizar elementos mediante el selector CSS, que puedes ver en la línea 16, utilizando los diversos atributos auxiliares introducidos en las versiones 2017 y posteriores, como obtener por ID de prueba. Podemos realizar clics y acciones que un usuario haría en estos elementos HTML apropiados y luego podemos realizar diversas afirmaciones para ver que el resultado apropiado se muestra allí. Y luego podemos ejecutar estas pruebas localmente y asegurarnos de que todos los cambios asociados con nuestra nueva función se aprueben. Luego podemos ejecutar las mismas pruebas en nuestras tuberías de CI y luego podemos implementar esas mismas definiciones en producción en la ubicación de Elastic Synthetics que le permitirá ejecutar esas mismas pruebas como monitores en su aplicación de producción.

Luego, el equipo de SRE puede monitorear el estado. Pueden ver los pings básicos, pueden ver como se destaca en el fondo de estas tarjetas cuál ha sido la duración a lo largo del tiempo utilizando el gráfico en el fondo. Luego, cuando las cosas salen mal, podemos ver los pasos individuales, podemos ver qué expectativas o errores particulares ocurrieron y luego podemos hacer cosas inteligentes como tener alertas o detecciones de anomalías para intentar detectar si hay una degradación en el rendimiento si estas pruebas particulares están tardando más según nuestras tendencias. Para mí, DevOps siempre ha significado unir a las facciones de desarrollo y SRE. Necesitamos dejar atrás esa carga cultural que ha estado presente durante tanto tiempo y trabajar juntos, y si usamos una herramienta común, hay algunos grandes beneficios en términos de documentar el recorrido del usuario, colaborar juntos, detectar defectos en las pruebas y en producción y, en general, construir mejores aplicaciones para los usuarios. Así que muchas gracias, ha sido genial hablar aquí en React Summit. Espero poder encontrarte en la conferencia y, si no, no dudes en consultar el ejemplo de código en el código QR de la pantalla o también puedes contactarme con cualquier pregunta en currentlyellrichmond. ¡Adiós!

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

Pruebas de Aplicaciones Web con Playwright
TestJS Summit 2022TestJS Summit 2022
20 min
Pruebas de Aplicaciones Web con Playwright
Top Content
Testing web applications with Playwright, a reliable end-to-end testing tool. Playwright offers fast execution, powerful tooling, and support for multiple languages. It provides precise selectors, web-first assertions, and code generation for easy testing. Playwright also offers features like live debugging, tracing, and running tests on CI. The future of Playwright aims to make testing easy and fun, with a focus on creating frustration-free web experiences.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress is a powerful tool for end-to-end testing and API testing. It provides instant feedback on test errors and allows tests to be run inside the browser. Cypress enables testing at both the application and network layers, making it easier to reach different edge cases. With features like AppActions and component testing, Cypress allows for comprehensive testing of individual components and the entire application. Join the workshops to learn more about full circle testing with Cypress.
Todos pueden escribir pruebas fácilmente
TestJS Summit 2023TestJS Summit 2023
21 min
Todos pueden escribir pruebas fácilmente
Playwright is a reliable end-to-end testing tool for modern web apps that provides one API, full isolation, fast execution, and supports multiple languages. It offers features like auto-weighting, retrying assertions, seamless testing of iframes and shadow DOM, test isolation, parallelism, and scalability. Playwright provides tools like VS Code extension, UiMode, and Trace Viewer for writing, debugging, and running tests. Effective tests prioritize user-facing attributes, use playwright locators and assertions, and avoid testing third-party dependencies. Playwright simplifies testing by generating tests, providing code generation and UI mode, and allows for easy running and debugging of tests. It helps in fixing failed tests and analyzing DOM changes, fixing locator mismatches, and scaling tests. Playwright is open source, free, and continuously growing.
Pruebas pequeñas, grandes resultados
TestJS Summit 2022TestJS Summit 2022
21 min
Pruebas pequeñas, grandes resultados
Automated atomic tests are a great way to improve UI tests by making them less brittle and faster. The tests focus on testing a single feature or component and have minimal UI interactions. The Talk explores examples of automated atomic tests and their implementation on web applications. It also discusses the analysis of atomic tests, login tests, and working with JSON Web Tokens for authentication and authorization. The Talk concludes by highlighting the use of UI and web requests in automated atomic testing.
Quizá No Necesitemos Pruebas de Componentes
Vue.js Live 2024Vue.js Live 2024
26 min
Quizá No Necesitemos Pruebas de Componentes
Component testing is a gray area between integration and unit testing. The demo app focuses on the cart component and writing test cases for Playwright component test and VTest. The first cart test encounters a bug with the invisible method in View Test.
Prueba del Servicio de Correo con Playwright
TestJS Summit 2022TestJS Summit 2022
17 min
Prueba del Servicio de Correo con Playwright
Top Content
This Talk discusses how to test mail service with Playwright, covering e-mail verification, reset password user journey, and more. It explores the use of third-party providers for reliable e-mail delivery and demonstrates how Playwright can help perform checks on e-mail content. The Talk also introduces the concept of a fake SMTP server and showcases how fixtures can be used to access the SMTP server and perform assertions on the HTML body of emails. Playwright's HTML rendering feature allows for interaction with email content as if it were a regular web page. It highlights the ability to render HTML from API calls, perform assertions on the rendered page, and exclude dynamically generated data from visual regression tests.

Workshops on related topic

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
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.
Construyendo una suite de pruebas significativa que no sea todo E2E
TestJS Summit 2023TestJS Summit 2023
89 min
Construyendo una suite de pruebas significativa que no sea todo E2E
Workshop
David Burns
David Burns
Todos somos enseñados a seguir la Pirámide de Pruebas pero la realidad es que construimos el Árbol de Pruebas de Navidad. En esta masterclass, David te explicará cómo desglosar proyectos y poner las pruebas donde necesitan estar. Al final de la masterclass, podrás actualizar tus proyectos para que cualquiera y todos puedan empezar a contribuir y realmente vivir según "La calidad es el trabajo de todos".
Te guiará a través de:- Pruebas de Componentes- Pruebas de API- Pruebas de Regresión Visual- Pruebas A11Y
También te explicará cómo configurar todo esto en tu pipeline de CI/CD para que puedas obtener ciclos de feedback más cortos y rápidos.
Depuración en vivo de pruebas de extremo a extremo para una aplicación serverless distribuida
TestJS Summit 2021TestJS Summit 2021
146 min
Depuración en vivo de pruebas de extremo a extremo para una aplicación serverless distribuida
WorkshopFree
Serkan Ozal
Oguzhan Ozdemir
2 authors
En este masterclass, construiremos un entorno de pruebas para una aplicación preconstruida, luego escribiremos y automatizaremos pruebas de extremo a extremo para nuestra aplicación serverless. Y en el último paso, demostraremos lo fácil que es entender la causa raíz de una prueba errónea utilizando pruebas distribuidas y cómo depurarla en nuestro pipeline de CI/CD con Thundra Foresight.

Tabla de contenidos:
- Cómo configurar y probar tu infraestructura en la nube
- Cómo escribir y automatizar pruebas de extremo a extremo para tus cargas de trabajo serverless
- Cómo depurar, rastrear y solucionar problemas de fallas en las pruebas con Thundra Foresight en tus pipelines de CI/CD
Infraestructura Uniforme de Automatización de Navegadores
TestJS Summit - January, 2021TestJS Summit - January, 2021
127 min
Infraestructura Uniforme de Automatización de Navegadores
Workshop
Ivan Krutov
Ivan Krutov
En este masterclass, te mostraré cómo implementar y utilizar rápidamente una infraestructura de automatización de navegadores con la solución Moon. Comenzaremos implementando todo en tu estación de trabajo y pronto podrás ejecutar pruebas de Selenium, Playwright y Puppeteer en paralelo en el mismo clúster. Luego, te demostraré cómo ofrecer la misma experiencia de manera sencilla para tu equipo utilizando un clúster remoto en la plataforma de la nube.