{"id":17226,"date":"2024-03-18T16:00:00","date_gmt":"2024-03-18T19:00:00","guid":{"rendered":"https:\/\/es.abstracta.us\/blog\/?p=17226"},"modified":"2024-05-22T19:48:50","modified_gmt":"2024-05-22T23:48:50","slug":"modelo-piramide-automatizacion-pruebas-performance","status":"publish","type":"post","link":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/","title":{"rendered":"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance"},"content":{"rendered":"\n<p>\u00bfAlguna vez pensaste si el modelo de la pir\u00e1mide de automatizaci\u00f3n es aplicable tambi\u00e9n para optimizar la estrategia de testing de performance? En este art\u00edculo, compartimos una mirada innovadora, \u201cla pir\u00e1mide de automatizaci\u00f3n para pruebas de performance\u201d, un modelo que creamos a partir de la famosa pir\u00e1mide de Cohn para pruebas automatizadas funcionales, y te servir\u00e1 de referencia para mejorar tu estrategia hol\u00edstica de pruebas de performance.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/modelo-piramide-automatizacion-pruebas-performance-1024x574.png\" alt=\"\" class=\"wp-image-17227\" srcset=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/modelo-piramide-automatizacion-pruebas-performance-1024x574.png 1024w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/modelo-piramide-automatizacion-pruebas-performance-300x168.png 300w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/modelo-piramide-automatizacion-pruebas-performance-768x430.png 768w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/modelo-piramide-automatizacion-pruebas-performance-18x10.png 18w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/modelo-piramide-automatizacion-pruebas-performance.png 1255w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"ac19\"><strong><em>Por&nbsp;<\/em><\/strong><a href=\"https:\/\/www.linkedin.com\/in\/federicotoledo\/\" rel=\"noreferrer noopener\" target=\"_blank\"><strong><em>Federico Toledo<\/em><\/strong><\/a><strong><em>&nbsp;(Abstracta) y&nbsp;<\/em><\/strong><a href=\"https:\/\/www.linkedin.com\/in\/leandromelendez\/\" rel=\"noreferrer noopener\" target=\"_blank\"><strong><em>Leandro Melendez<\/em><\/strong><\/a><strong><em>&nbsp;(Grafana k6)<\/em><\/strong><\/p>\n\n\n\n<p id=\"810c\">Las&nbsp;<strong>automatizaciones de diversos tipos de pruebas de software han generado grandes beneficios<\/strong>, tales como la mejora de la eficiencia, la reducci\u00f3n de errores humanos, la aceleraci\u00f3n de procesos de pruebas, reducci\u00f3n de costos, y mayor cobertura.<\/p>\n\n\n\n<p id=\"87e7\">En definitiva,&nbsp;<strong>han revolucionado la forma en que abordamos el control de calidad en el desarrollo de software.<\/strong><\/p>\n\n\n\n<p id=\"4789\">Dentro de las pruebas que es necesario automatizar, las de&nbsp;<a href=\"https:\/\/es.abstracta.us\/blog\/tipos-pruebas-performance\/#:~:text=Tests%20de%20Rendimiento-,Pruebas%20de%20Carga,-Las%20pruebas%20de\" target=\"_blank\" rel=\"noreferrer noopener\">carga<\/a>&nbsp;se destacan por su importancia en ayudarnos a preparar los sistemas para momentos cr\u00edticos, de alta demanda. Nos permiten comprender c\u00f3mo se comportan al ser accedidos por muchas personas de manera concurrente, y as\u00ed prevenir posibles problemas de rendimiento.<\/p>\n\n\n\n<p id=\"a1fc\">En contextos \u00e1giles, donde las aplicaciones est\u00e1n en constante evoluci\u00f3n, es esencial subrayar la importancia&nbsp;<strong>del mantenimiento de&nbsp;<em>scripts<\/em>&nbsp;de pruebas automatizadas de performance<\/strong>.<\/p>\n\n\n\n<p id=\"d98d\">Los sistemas que probamos evolucionan y cambian a medida que ejecutamos las pruebas de performance durante las iteraciones de desarrollo. Por ello, las nuevas funcionalidades se liberar\u00e1n a testing regularmente, requiriendo nuevas pruebas, as\u00ed como la ejecuci\u00f3n de las existentes.<\/p>\n\n\n\n<p id=\"2f97\">Esto llevar\u00e1 a que el c\u00f3digo de pruebas tenga que ser mantenido de igual forma que el c\u00f3digo de la aplicaci\u00f3n.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p id=\"ccaa\"><strong>Es entonces cuando entra en juego la automatizaci\u00f3n de&nbsp;<a href=\"https:\/\/es.abstracta.us\/blog\/testing-performance-llave-maestra-mejorar-calidad-software\/\" target=\"_blank\" rel=\"noreferrer noopener\">pruebas de performance<\/a>, en consideraci\u00f3n de distintos aspectos, tales como su facilidad de preparaci\u00f3n, su mantenibilidad, posibilidad de ejecuci\u00f3n recurrente, etc.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p id=\"3414\">Aun as\u00ed, tambi\u00e9n encontramos algunas de las mismas desventajas de la automatizaci\u00f3n funcional en las pruebas de performance, cuando no se siguen las buenas pr\u00e1cticas. Hay aspectos que es importante tener en cuenta para crear automatizaci\u00f3n de calidad.<\/p>\n\n\n\n<p id=\"bb1e\"><strong>Si no dise\u00f1amos y organizamos nuestras automatizaciones adecuadamente, pueden llegar a ser contraproducentes, ya que nos llevar\u00e1 m\u00e1s costo el mantenimiento que el beneficio de contar con esas pruebas.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bb88\"><strong>\u00bfC\u00f3mo automatizar pruebas de performance de manera eficiente?<\/strong><\/h2>\n\n\n\n<p id=\"44e4\"><strong>El modelo de la pir\u00e1mide de automatizaci\u00f3n, o \u201cPir\u00e1mide Azteca de Sacrificios de la Automatizaci\u00f3n\u201d (como la llama Leandro), nos ofrece lineamientos para que los equipos optimicen los esfuerzos y resultados que obtienen de sus pruebas automatizadas, tanto las funcionales como las de performance.<\/strong><\/p>\n\n\n\n<p id=\"96c8\">Esta estrategia es \u00fatil tanto para cuando se abordan las pruebas de performance en metodolog\u00edas&nbsp;<em>waterfall<\/em>&nbsp;como en metodolog\u00edas \u00e1giles.<\/p>\n\n\n\n<p id=\"8406\">A continuaci\u00f3n, compartimos un modelo que puede servir para guiar el momento de definir una estrategia de pruebas de performance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"f09e\"><strong>El modelo de la pir\u00e1mide aplicado a performance<\/strong><\/h3>\n\n\n\n<p id=\"68d3\">A partir de&nbsp;la <a href=\"https:\/\/federico-toledo.com\/en-que-nivel-conviene-automatizar\/\" target=\"_blank\" rel=\"noreferrer noopener\">famosa pir\u00e1mide de Cohn para pruebas automatizadas funcionales<\/a>, ambos (tanto Leandro como Federico)&nbsp;<strong>coincidimos en que el modelo,&nbsp;<\/strong>tal como se explica con el tri\u00e1ngulo como una pir\u00e1mide,&nbsp;<strong>aplica a las pruebas de performance.<\/strong><\/p>\n\n\n\n<p id=\"5b01\">Este modelo ofrece pautas sobre la priorizaci\u00f3n de los tipos de automatizaci\u00f3n. \u00bfC\u00f3mo lo hace? Si bien hay distintas versiones e interpretaciones, en general indica que se debe dar una mayor prioridad y abundancia a las automatizaciones a nivel unitario. Luego, a las pruebas de integraci\u00f3n (o de API o servicios) y, en una categor\u00eda de menor prioridad, las automatizaciones a nivel de<em>&nbsp;Front End&nbsp;<\/em>o GUI (del ingl\u00e9s, interfaz gr\u00e1fica de usuario), que llamaremos&nbsp;<em>end-to-end<\/em>, ya que prueban todo el sistema de punta a punta.<\/p>\n\n\n\n<p id=\"badc\"><strong>En la siguiente imagen, mostramos las equivalencias entre el modelo de Cohn y el de la pir\u00e1mide de performance.&nbsp;<\/strong>En ella, podemos ver claramente qu\u00e9 corresponder\u00eda a cada nivel.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-software-1024x574.png\" alt=\"Pir\u00e1mide de automatizaci\u00f3n de pruebas de software\" class=\"wp-image-17228\" srcset=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-software-1024x574.png 1024w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-software-300x168.png 300w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-software-768x430.png 768w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-software-18x10.png 18w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-software.png 1162w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p id=\"ecfb\">A continuaci\u00f3n, observamos cu\u00e1les son las ventajas y desventajas de cada capa. A medida que bajamos por la pir\u00e1mide hacia la base, podemos obtener:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/es.abstracta.us\/blog\/api-testing-guia-practica\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pruebas de API<\/a> y unitarias m\u00e1s baratas: m\u00e1s f\u00e1ciles de preparar, con menos infraestructura.<\/li>\n\n\n\n<li>M\u00e1s f\u00e1cil de mantener para que pueda correr con m\u00e1s frecuencia (todos los d\u00edas)<\/li>\n\n\n\n<li>Las pruebas pueden realizarse antes.<\/li>\n\n\n\n<li>Desventajas: no son concluyentes sobre las m\u00e9tricas reales de la experiencia de usuario.<\/li>\n<\/ul>\n\n\n\n<p id=\"1a04\">Y a medida que subimos por la pir\u00e1mide, encontramos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Escenarios de carga que requieren infraestructura y carga similares a los de producci\u00f3n.<\/li>\n\n\n\n<li>Pruebas m\u00e1s caras porque son m\u00e1s dif\u00edciles de preparar y mantener.<\/li>\n\n\n\n<li>Mejores resultados, correspondencia directa con las m\u00e9tricas de personas usando E2E.<\/li>\n<\/ul>\n\n\n\n<p id=\"f19e\">M\u00e1s adelante, en este mismo art\u00edculo, entraremos m\u00e1s en detalle en cada uno de los niveles de la pir\u00e1mide.<\/p>\n\n\n\n<p id=\"0b68\"><strong>Como el modelo est\u00e1 basado en una pir\u00e1mide, Leandro le llama \u201cla pir\u00e1mide azteca de sacrificios de la automatizaci\u00f3n\u201d.<\/strong><\/p>\n\n\n\n<p id=\"3053\"><strong>\u00bfPor qu\u00e9 mencionar \u2018sacrificios\u2019?&nbsp;<\/strong>Esto se relaciona con la idea de que, al igual que en la \u00e9poca de los aztecas, los sacrificios se llevan a cabo en la cima de la pir\u00e1mide.<\/p>\n\n\n\n<p id=\"49da\">Llev\u00e1ndolo al software, es aqu\u00ed donde la mayor\u00eda intenta automatizar en exceso, pruebas tipo end-to-end, lo cual puede verse como un sacrificio.<\/p>\n\n\n\n<p id=\"e3a4\">Lamentablemente, lo com\u00fan es ver que las organizaciones o equipos tengan una estrategia en la cual las cantidades de automatizaciones, o la cobertura, sean opuestos a lo que plantea la <a href=\"https:\/\/es.abstracta.us\/blog\/piramide-de-automatizacion\/\" target=\"_blank\" rel=\"noreferrer noopener\">pir\u00e1mide<\/a>. A este antipatr\u00f3n se lo conoce com\u00fanmente como&nbsp;<em>el modelo del cono de helado<\/em>. Pero que debido a ello Leandro le llama el cono de los sacrificios.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p id=\"a5be\"><strong>La estrategia planteada por la pir\u00e1mide indica que se deber\u00edan priorizar las automatizaciones unitarias, luego las pruebas de integraci\u00f3n y, por \u00faltimo, minimizar los sacrificios en la cima con automatizaciones end-to-end, en lugar de estar generando conos de sacrificios.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"0a10\"><strong>Pir\u00e1mide para las pruebas de performance, cada capa al detalle<\/strong><\/h2>\n\n\n\n<p id=\"ac66\"><strong>La idea de esta pir\u00e1mide es que sirva como referencia al momento de establecer la estrategia de pruebas del sistema en cuanto a performance.&nbsp;<\/strong>Esto ser\u00e1 m\u00e1s o menos aplicable dependiendo de la arquitectura. Podemos decir que es m\u00e1s que nada aplicable cuando hay microservicios, o al menos una capa de servicios SOAP o REST.<\/p>\n\n\n\n<p id=\"6f79\">A continuaci\u00f3n, veremos m\u00e1s en profundidad y detalle los aspectos de cada una de las capas que mencionamos del modelo.<\/p>\n\n\n\n<p id=\"e834\">Comenzaremos por la base, en la cual encontraremos las pruebas unitarias de performance. Luego, describiremos las pruebas de integraci\u00f3n de los servicios, las pruebas&nbsp;<em>end-to-end,<\/em>&nbsp;Por \u00faltimo, aspectos de performance del lado del cliente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fbc4\"><strong>Pruebas de performance unitarias<\/strong><\/h2>\n\n\n\n<p id=\"b22c\">El objetivo es probar individualmente cada uno de los servicios de forma aislada simulando cierta carga sobre el mismo. Preparar una prueba es sumamente simple ya que se trata de un solo pedido HTTP.<\/p>\n\n\n\n<p id=\"b1a2\"><strong>Aqu\u00ed, ejecutaremos siempre la misma prueba y compararemos los resultados m\u00e1s recientes con los anteriores, para observar si los tiempos de respuesta muestran alguna degradaci\u00f3n significativa, con el fin de identificar y monitorear posibles problemas de rendimiento en el sistema.<\/strong><\/p>\n\n\n\n<p id=\"4571\">Cuando hablamos de pruebas&nbsp;<em>end-to-end<\/em>&nbsp;en la simulaci\u00f3n de carga, nuestro escenario de carga y las aserciones se basan en los objetivos del negocio.<\/p>\n\n\n\n<p id=\"a13d\"><strong>\u00bfCu\u00e1ntos usuarios simulo cuando realizamos pruebas a nivel de servicios?&nbsp;<\/strong>En especial cuando esas pruebas ser\u00e1n ejecutadas en un entorno de pruebas reducido.<strong>&nbsp;Las pruebas deben tener criterios de aceptaci\u00f3n (aserciones) lo m\u00e1s ajustados posible,<\/strong>&nbsp;de modo que, ante la menor degradaci\u00f3n en la performance de esa funcionalidad y antes de cualquier impacto negativo, una validaci\u00f3n falle y se\u00f1ale el problema.<\/p>\n\n\n\n<p id=\"6343\">Por lo general, esto se logra verificando tasas de error, tiempos de respuesta y&nbsp;<em>throughput<\/em>&nbsp;(cantidad de solicitudes o requisitos atendidos por segundo).<\/p>\n\n\n\n<p id=\"1fd1\">En los siguientes gr\u00e1ficos, compartimos un problema t\u00edpico que queremos evitar:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"417\" src=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/tiempos-respuesta-sistema-testing-performance-1024x417.png\" alt=\"Tiempos de respuesta del sistema de y el testing de performance\" class=\"wp-image-17229\" srcset=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/tiempos-respuesta-sistema-testing-performance-1024x417.png 1024w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/tiempos-respuesta-sistema-testing-performance-300x122.png 300w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/tiempos-respuesta-sistema-testing-performance-768x313.png 768w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/tiempos-respuesta-sistema-testing-performance-18x7.png 18w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/tiempos-respuesta-sistema-testing-performance.png 1364w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"400\" src=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/degradacion-rendimiento-sistema-pruebas-performance-1024x400.png\" alt=\"Degradaci\u00f3n del rendimiento del sistema y pruebas de performance\" class=\"wp-image-17230\" srcset=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/degradacion-rendimiento-sistema-pruebas-performance-1024x400.png 1024w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/degradacion-rendimiento-sistema-pruebas-performance-300x117.png 300w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/degradacion-rendimiento-sistema-pruebas-performance-768x300.png 768w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/degradacion-rendimiento-sistema-pruebas-performance-18x7.png 18w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/degradacion-rendimiento-sistema-pruebas-performance.png 1387w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"e94e\">En la primera imagen, observamos que los tiempos de respuesta aumentan. En el segundo, notamos una disminuci\u00f3n en los requisitos por segundo (RPS), pero la prueba no reporta un error ni brinda una alerta sobre esta degradaci\u00f3n porque los criterios de aceptaci\u00f3n son poco rigurosos. La prueba est\u00e1 verificando que el rendimiento sea superior a 60 RPS, por lo que cuando la funcionalidad disminuye de 250 a 200, nadie prestar\u00e1 atenci\u00f3n a eso.<\/p>\n\n\n\n<p id=\"f56c\">Necesitamos que las aserciones sean m\u00e1s rigurosas para que una degradaci\u00f3n de este tipo haga que el&nbsp;<em>pipeline<\/em>&nbsp;falle.<\/p>\n\n\n\n<p id=\"26ea\">Entonces, para evitar estos problemas, veamos&nbsp;<strong>c\u00f3mo definir la carga y las aserciones.<\/strong><\/p>\n\n\n\n<p id=\"a895\">Lo que necesitamos hacer es realizar ciertas ejecuciones en modo experimental, para poder determinar la carga y aserciones que configuraremos en nuestras pruebas unitarias de performance, con el fin de ejecutarlas de manera continua en nuestro<em>&nbsp;pipeline<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"624\" src=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/pruebas-unitarias-rendimiento-software-1024x624.png\" alt=\"Pruebas unitarias de rendimniento del software\" class=\"wp-image-17231\" srcset=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/pruebas-unitarias-rendimiento-software-1024x624.png 1024w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/pruebas-unitarias-rendimiento-software-300x183.png 300w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/pruebas-unitarias-rendimiento-software-768x468.png 768w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/pruebas-unitarias-rendimiento-software-18x12.png 18w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/pruebas-unitarias-rendimiento-software.png 1048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p id=\"08e3\">Digamos que realizamos una primera prueba con 100 ejecuciones paralelas que resulta sin errores, los tiempos de respuesta son inferiores a 100 milisegundos (ms),al menos el percentil 95, y el throughput es de 50 RPS.<\/p>\n\n\n\n<p id=\"5446\">A continuaci\u00f3n, ejecutamos la misma prueba pero con 200 RPS. Nuevamente, no se producen errores y los tiempos se sit\u00faan en 115 ms y el rendimiento en 75 RPS.<\/p>\n\n\n\n<p id=\"76e5\">Genial, est\u00e1 escalando.<\/p>\n\n\n\n<p id=\"5db1\">Si seguimos por este camino de pruebas, en alg\u00fan momento llegaremos a una carga determinada en la que veremos que ya no conseguimos aumentar el throughput.<\/p>\n\n\n\n<p id=\"4dfe\">Siguiendo este escenario, imaginemos que llegamos a 350 ejecuciones en paralelo y tenemos un&nbsp;<em>throughput<\/em>&nbsp;de 150 RPS, con tiempos de respuesta de 130 ms y 0% de errores.<\/p>\n\n\n\n<p id=\"f057\">Si pasamos de 400, el&nbsp;<em>throughput<\/em>&nbsp;sigue siendo de unos 150 RPS, y con 450 en paralelo el&nbsp;<em>throughput&nbsp;<\/em>es incluso inferior a 150.<\/p>\n\n\n\n<p id=\"3bf7\">Hay un concepto llamado K<em>nee point<\/em>&nbsp;(rodilla, por el quiebre en la gr\u00e1fica) con el que nos encontrar\u00edamos en cierto punto, el cual determina que saturamos alg\u00fan cuello de botella.<\/p>\n\n\n\n<p id=\"a2ec\">Se espera que el n\u00famero de requisitos por segundo aumente cuando incrementemos el n\u00famero de ejecuciones concurrentes. Si no ocurre, es porque estamos sobrecargando la capacidad del sistema.<\/p>\n\n\n\n<p id=\"b8f3\"><strong>Este es el m\u00e9todo b\u00e1sico para encontrar el&nbsp;<\/strong><em>Knee point<\/em><strong>&nbsp;al hacer pruebas de estr\u00e9s, cuando queremos saber cu\u00e1nto pueden escalar nuestros servidores bajo la configuraci\u00f3n actual.<\/strong><\/p>\n\n\n\n<p id=\"c057\">As\u00ed, al final de este experimento,<strong>&nbsp;llegamos a definir el escenario que queremos incluir en nuestro&nbsp;<em>pipeline, con las siguientes<\/em>&nbsp;aserciones:<\/strong><\/p>\n\n\n\n<p id=\"832f\">Carga: 350 ejecuciones concurrentes.<\/p>\n\n\n\n<p id=\"d83e\">Aserciones:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Menos de 1% de error.<\/li>\n\n\n\n<li>Tiempos de respuesta P95 &lt;130 ms + 10%.<\/li>\n\n\n\n<li>Throughput &gt;= 150 RPS \u2014 10%.<\/li>\n<\/ul>\n\n\n\n<p id=\"6c3f\">A continuaci\u00f3n, la prueba que programaremos para que siga ejecut\u00e1ndose con frecuencia es la que ejecuta 350 ejecuciones concurrentes. Esperamos que tenga menos de un 1% de error con tiempos de respuesta por debajo de 130 ms, con un posible margen del 10%, tal vez un 20%,<\/p>\n\n\n\n<p id=\"a2c6\">Por \u00faltimo, pero no menos importante, tenemos que verificar que el&nbsp;<em>throughput<\/em>&nbsp;sea al menos 150 RPS, tambi\u00e9n con un margen del 10%.<\/p>\n\n\n\n<p id=\"60a9\"><strong>As\u00ed, podemos detectar lo antes posible cuando un cambio hace que disminuya el rendimiento del sistema.<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p id=\"b509\"><strong>Para que todo esto sea v\u00e1lido, necesitamos un entorno exclusivo para las pruebas. De esa manera, los resultados se vuelven m\u00e1s predecibles y no se ven afectados por factores como la ejecuci\u00f3n simult\u00e1nea de otras tareas por parte de otras personas.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2cf4\"><strong>Pruebas de rendimiento de integraci\u00f3n<\/strong><\/h2>\n\n\n\n<p id=\"1dc2\">En estas pruebas,<strong>&nbsp;vamos a poder probar varios servicios a la vez para ver c\u00f3mo afectan la performance unos a otros. Para esto, tomaremos las mismas pruebas unitarias y las combinaremos en un \u00fanico escenario concurrente.&nbsp;<\/strong>Si ya tenemos las otras preparadas, armar estas pruebas no deber\u00eda ser tan complejo.<\/p>\n\n\n\n<p id=\"5896\">Antes de continuar, nos gustar\u00eda aclarar por qu\u00e9 es importante probar los mismos servicios de forma combinada.<\/p>\n\n\n\n<p id=\"959e\"><strong><em>\u201cFalacia de la composici\u00f3n\u201d<\/em><\/strong><\/p>\n\n\n\n<p id=\"2c9b\"><em>Probar las partes no basta para saber c\u00f3mo se comportar\u00e1 el conjunto.<\/em><\/p>\n\n\n\n<p id=\"d6a2\"><em>Hay que probar el conjunto para ver c\u00f3mo interact\u00faan las partes.<\/em><\/p>\n\n\n\n<p id=\"4193\">Tal como nos ense\u00f1\u00f3 Jerry Weinberg, los buenos equipos de testing saben que no es suficiente probar las \u201cpartes\u201d para saber c\u00f3mo se comportar\u00e1 el \u201ctodo\u201d, ya que hay que probar el todo para ver c\u00f3mo interact\u00faan las partes.<\/p>\n\n\n\n<p id=\"d440\"><strong>Por lo tanto, deber\u00edamos complementar las pruebas unitarias con pruebas de integraci\u00f3n.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"0d3d\"><strong>Pruebas de performance end-to-end<\/strong><\/h2>\n\n\n\n<p id=\"8ac7\">Estas son las cl\u00e1sicas&nbsp;<strong>pruebas de performance en las cuales simulamos la carga que esperamos en el sistema<\/strong>&nbsp;(cierta cantidad de personas accediendo en forma concurrente) en un entorno que replica las condiciones del entorno de producci\u00f3n. Los&nbsp;<em>scripts<\/em>&nbsp;se deben preparar a nivel de comunicaci\u00f3n del cliente (browser, app mobile, etc) y no a nivel de servicios.<\/p>\n\n\n\n<p id=\"bcff\">El&nbsp;<strong>objetivo&nbsp;<\/strong>principal de las pruebas<em>&nbsp;end-to-end&nbsp;<\/em>de performance es&nbsp;<strong>identificar posibles cuellos de botella, problemas de escalabilidad o degradaci\u00f3n del rendimiento<\/strong>&nbsp;que puedan surgir en situaciones de uso real.<\/p>\n\n\n\n<p id=\"e94c\">Estas pruebas suelen involucrar la simulaci\u00f3n de personas reales interactuando con la aplicaci\u00f3n a trav\u00e9s de m\u00faltiples pasos, como navegar por p\u00e1ginas, completar formularios y realizar transacciones. La recopilaci\u00f3n de datos sobre tiempos de respuesta, tasas de error y otros indicadores clave de rendimiento es esencial para evaluar el comportamiento del sistema bajo carga.<\/p>\n\n\n\n<p id=\"27b2\">Son, en definitiva, una parte fundamental del proceso de aseguramiento de la calidad, ya que ayudan a que una aplicaci\u00f3n funcione de manera eficiente y efectiva en condiciones de producci\u00f3n, y minimizar as\u00ed los problemas de performance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e748\"><strong>Performance del lado del cliente<\/strong><\/h2>\n\n\n\n<p id=\"dff6\">Adem\u00e1s de las capas anteriores de la pir\u00e1mide, que se centran en el lado de los servidores, nos gustar\u00eda recordarte la relevancia de nunca olvidarse del cliente. Problemas en el lado del cliente que generen demoras en la experiencia final, pueden invalidar los esfuerzos de optimizaci\u00f3n realizados en el backend (los servidores).<\/p>\n\n\n\n<p id=\"4faa\">En el caso de aplicaciones web, existen numerosas herramientas disponibles para evaluar la performance desde esta perspectiva. No solo te indicar\u00e1n autom\u00e1ticamente qu\u00e9 issues hay presentes en el sitio, sino que te mostrar\u00e1n c\u00f3mo resolverlos. Compartimos algunas de ellas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lighthouse, como parte de las Google Chrome Developer Tools<\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/speed\/pagespeed\/insights\/\" rel=\"noreferrer noopener\" target=\"_blank\">Google PageSpeed Insights<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/website.io\/\" rel=\"noreferrer noopener\" target=\"_blank\">Website.io<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/yslow.org\/\" rel=\"noreferrer noopener\" target=\"_blank\">Yslow<\/a><\/li>\n<\/ul>\n\n\n\n<p id=\"8429\">En el caso de Mobile apps, recomendamos utilizar&nbsp;<a href=\"https:\/\/www.apptim.com\/?utm_source=abstracta%20chile&amp;utm_medium=web\" target=\"_blank\" rel=\"noreferrer noopener\">Apptim<\/a>, una herramienta que se especializa en la evaluaci\u00f3n de la performance de aplicaciones m\u00f3viles.<\/p>\n\n\n\n<p id=\"2383\">Estas herramientas pueden ser de gran utilidad para ayudar a que tu aplicaci\u00f3n funcione de manera eficiente y ofrezca una experiencia \u00f3ptima.<\/p>\n\n\n\n<p id=\"0f8c\">Adem\u00e1s, es importante mencionar que<strong>&nbsp;existe la posibilidad de realizar pruebas h\u00edbridas<\/strong>, como lo propuesto por Marie Cruz en su&nbsp;<a href=\"https:\/\/abstracta.us\/blog\/performance-testing\/an-introductory-guide-to-web-performance-testing\/\" rel=\"noreferrer noopener\" target=\"_blank\">art\u00edculo<\/a>&nbsp;sobre pruebas de performance web. Esta estrategia combina herramientas como k6 browser y Google Lighthouse para obtener una visi\u00f3n completa de la performance de tu aplicaci\u00f3n desde diferentes perspectivas.<\/p>\n\n\n\n<p id=\"2fe2\">La propuesta de pruebas h\u00edbridas puede ser especialmente beneficiosa para identificar problemas tanto en el lado del servidor como en el lado del cliente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"f998\"><strong>Otras vistas del modelo de la pir\u00e1mide<\/strong><\/h2>\n\n\n\n<p id=\"f8b7\">Algo que tienen de bueno los modelos, es que&nbsp;<strong>permiten analizar distintas vistas que pueden resultar \u00fatiles.&nbsp;<\/strong>Adem\u00e1s de lo ya planteado anteriormente, queremos compartir otros aspectos interesantes al analizar el mismo modelo, lo cual le da m\u00e1s dimensiones para considerar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"0182\"><strong>Frecuencia de ejecuciones<\/strong><\/h2>\n\n\n\n<p id=\"5b0e\">Imaginemos otra vista de la pir\u00e1mide, la cual se refiere a la frecuencia de las ejecuciones que se deben efectuar en cada nivel de pruebas. Esto es especialmente importante en proyectos modernos que siguen metodolog\u00edas \u00e1giles, continuas, o variaciones del estilo \u00e1gil.<\/p>\n\n\n\n<p id=\"fe73\">Lo fundamental de esto es determinar qu\u00e9 tan frecuente puedo ejecutar cada tipo de pruebas. Esto depende de qu\u00e9 tan f\u00e1cil de preparar, codificar, y mantener son esas pruebas, as\u00ed como, por otro lado, qu\u00e9 informaci\u00f3n me aportan.<\/p>\n\n\n\n<p id=\"801d\">Por ello,<strong>&nbsp;la propuesta es ejecutar las pruebas unitarias de los servicios frecuentemente<\/strong>, quiz\u00e1 en cada&nbsp;<em>build<\/em>&nbsp;del<em>&nbsp;pipeline<\/em>, tal como qued\u00f3 explicado (por Federico) en&nbsp;<a href=\"https:\/\/www.federico-toledo.com\/video-del-webinar-de-pruebas-de-performance-en-ci-cd\/\" rel=\"noreferrer noopener\" target=\"_blank\">este webinar<\/a>&nbsp;y en&nbsp;<a href=\"https:\/\/www.federico-toledo.com\/pruebas-de-performance-en-integracion-continua\/\" rel=\"noreferrer noopener\" target=\"_blank\">este post<\/a>.<\/p>\n\n\n\n<p id=\"e372\">Para ver c\u00f3mo impactan los servicios unos sobre otros, de vez en cuando deber\u00edamos ejecutar pruebas donde combinemos varios servicios, a lo que estamos llamando como&nbsp;<strong>pruebas de integraci\u00f3n.<\/strong><\/p>\n\n\n\n<p id=\"701c\">Como hasta ac\u00e1 no sabemos nada sobre c\u00f3mo ser\u00e1 la experiencia de usuario, tenemos que complementar esto con las pruebas cl\u00e1sicas de carga. Son mucho m\u00e1s complicadas de preparar, pero son las \u00fanicas que nos ayudan a reducir estos riesgos.<\/p>\n\n\n\n<p id=\"7cec\">Lo bueno es que si ya hicimos pruebas unitarias y pruebas de integraci\u00f3n de manera frecuente, seguramente podemos llegar a esta etapa con menos probabilidad de encontrar problemas serios o, al menos, ya nos adelantamos a varios de ellos.<\/p>\n\n\n\n<p id=\"b952\"><strong>Similar a lo explicado con la anterior pir\u00e1mide, muchas organizaciones siguen una estrategia inversa y se enfocan en ejecutar m\u00e1s seguido las pruebas de carga mientras realizan cantidades muy bajas y ejecutan con poca frecuencia las pruebas unitarias.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Infraestructura de pruebas de performance<\/strong><\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/infraestructura-pruebas-performance-rendimiento-software-1024x573.png\" alt=\"Infraestructura de pruebas de performance\" class=\"wp-image-17232\" srcset=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/infraestructura-pruebas-performance-rendimiento-software-1024x573.png 1024w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/infraestructura-pruebas-performance-rendimiento-software-300x168.png 300w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/infraestructura-pruebas-performance-rendimiento-software-768x430.png 768w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/infraestructura-pruebas-performance-rendimiento-software-18x10.png 18w, https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/infraestructura-pruebas-performance-rendimiento-software.png 1074w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p id=\"c438\"><strong>\u00bfCu\u00e1ntas veces escucharon ustedes tambi\u00e9n que solo podemos ejecutar pruebas de performance sobre infraestructura que sea muy similar a la de producci\u00f3n?<\/strong><\/p>\n\n\n\n<p id=\"db40\"><strong>Esta afirmaci\u00f3n creemos que aplica m\u00e1s que nada a las pruebas que corresponden a la capa m\u00e1s alta de la pir\u00e1mide<\/strong>, o sea, a las pruebas end-to-end que nos permitir\u00e1n conocer los tiempos de respuesta que obtendr\u00e1n quienes accedan al sistema.<\/p>\n\n\n\n<p id=\"cd93\">Por otra parte, vale aclarar que podemos ejecutar pruebas de performance en infraestructuras de menor potencia, como podr\u00e1n ser los entornos de testing o desarrollo, y sacar resultados muy aprovechables de esas ejecuciones.<\/p>\n\n\n\n<p id=\"2cc9\">Lo que hay que tener bien presente es que los resultados no se deber\u00edan extrapolar. En otras palabras, si ejecuto en un entorno de pruebas, no es seguro asumir que en producci\u00f3n, donde la infraestructura tiene el doble de poder, los tiempos de respuesta se reducir\u00e1n a la mitad.<\/p>\n\n\n\n<p id=\"165c\"><strong>Ejecutar pruebas a nivel unitario y de integraci\u00f3n en entornos reducidos como los de pruebas o desarrollo, trae muchas ventajas.&nbsp;<\/strong>Hay errores y optimizaciones que pueden ser atacados a pesar de no contar con ambientes como producci\u00f3n.<\/p>\n\n\n\n<p id=\"ef06\"><strong>Las pruebas de performance siempre arrojan resultados valiosos en todos los escenarios.<\/strong><\/p>\n\n\n\n<p id=\"646c\">En particular, la ventaja de ejecutar estas pruebas en entornos reducidos (<em>scaled down<\/em>) es que vamos a poder estresar al sistema, para analizar c\u00f3mo se comporta cerca de sus l\u00edmites, con cargas menores. Esto implica menos costos de infraestructura de pruebas o de licencia de herramientas de simulaci\u00f3n de carga. La preparaci\u00f3n y gesti\u00f3n ser\u00e1 m\u00e1s f\u00e1cil y los resultados podr\u00e1n obtenerse m\u00e1s temprano.<\/p>\n\n\n\n<p id=\"5ade\"><strong>Por otro lado, si el ambiente de pruebas es similar a producci\u00f3n, la ventaja es que vamos a poder analizar m\u00e1s problemas, o problemas m\u00e1s parecidos a los que tendremos en producci\u00f3n.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background is-style-wide\" style=\"background-color:#f1f1f1;color:#f1f1f1\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ee55\"><strong>\u00bfAplicar\u00edas el modelo de la pir\u00e1mide en tus pruebas de performance?<\/strong><\/h3>\n\n\n\n<p id=\"d946\">\u00bfQu\u00e9 te pareci\u00f3 este t\u00f3pico? \u00bfQu\u00e9 opinas de la <strong>pir\u00e1mide de automatizaci\u00f3n aplicada a performance<\/strong>? \u00bfTienes otros tips o ideas al respecto para compartir? \u00a1Nos gustar\u00eda conocer tu opini\u00f3n y experiencia!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/IyDtBcyXOpt2uFnJ8rNpLTtkmmvgouj_xVEsG1Pqzu7nOoguWGZo7D1DVWmB2cCBPF_dNrGPm9Lp_EBlZhergky24d-DrgbV_p6q9AUexGkhlOy5TOA3HRaGcXWJeQHDq1XG7znvr80W3VoVw1kKp90\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>\u00a1S\u00edguenos en <a href=\"https:\/\/www.linkedin.com\/company\/abstracta-latam\/\" target=\"_blank\" rel=\"noreferrer noopener\">LinkedIn<\/a>, <a href=\"https:\/\/x.com\/AbstractaLatam\" target=\"_blank\" rel=\"noreferrer noopener\">X<\/a>, <a href=\"https:\/\/web.facebook.com\/AbstractaLatam\" target=\"_blank\" rel=\"noreferrer noopener\">Facebook<\/a>, <\/strong><a href=\"https:\/\/bit.ly\/Instagram-Abstracta-Latam\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Instagram<\/strong><\/a><strong> y <\/strong><a href=\"https:\/\/bit.ly\/YT-Abstracta\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>YouTube<\/strong><\/a><strong> para ser parte de nuestra comunidad!<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background is-style-wide\" style=\"background-color:#f1f1f1;color:#f1f1f1\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Contenidos relacionados<\/h3>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Optimizing Performance Testing: Unveiling the Performance Testing Pyramid - with Federico Toledo\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ImcDrWZf_q8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfAlguna vez pensaste si el modelo de la pir\u00e1mide de automatizaci\u00f3n es aplicable tambi\u00e9n para optimizar la estrategia de testing de performance? En este art\u00edculo, compartimos una mirada innovadora, \u201cla pir\u00e1mide de automatizaci\u00f3n para pruebas de performance\u201d, un modelo que creamos a partir de la&#8230;<\/p>\n","protected":false},"author":9,"featured_media":17237,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,9],"tags":[221,143,62,64,154,109,199,215,108,133],"class_list":["post-17226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatizacion-pruebas","category-pruebas-performance","tag-agilidad","tag-api-testing","tag-calidad-software","tag-pruebas-carga","tag-pruebas-de-escalabilidad","tag-pruebas-interfaz-grafica-usuario","tag-pruebas-de-integracion","tag-pruebas-de-rendimiento","tag-pruebas-unitarias","tag-qa"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance - Abstracta<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance - Abstracta\" \/>\n<meta property=\"og:url\" content=\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog de Desarrollo de Software, Testing e Inteligencia Artificial | Abstracta\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AbstractaChile\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-18T19:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-22T23:48:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-performance.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Federico Toledo, Chief Quality Officer en Abstracta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fltoledo\" \/>\n<meta name=\"twitter:site\" content=\"@AbstractaChile\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Federico Toledo, Chief Quality Officer en Abstracta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/\"},\"author\":{\"name\":\"Federico Toledo, Chief Quality Officer en Abstracta\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/#\/schema\/person\/394e6ba8f90dc5b3c2bd05887419a4af\"},\"headline\":\"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance\",\"datePublished\":\"2024-03-18T19:00:00+00:00\",\"dateModified\":\"2024-05-22T23:48:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/\"},\"wordCount\":3289,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/es.abstracta.us\/blog\/#organization\"},\"keywords\":[\"Agilidad\",\"API Testing\",\"Calidad de Software\",\"Pruebas de Carga\",\"Pruebas de Escalabilidad\",\"Pruebas de GUI\",\"Pruebas de Integraci\u00f3n\",\"Pruebas de Rendimiento\",\"Pruebas Unitarias\",\"QA\"],\"articleSection\":[\"Automatizaci\u00f3n de Pruebas\",\"Pruebas de Performance\"],\"inLanguage\":\"es-CL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/\",\"url\":\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/\",\"name\":\"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance - Abstracta\",\"isPartOf\":{\"@id\":\"https:\/\/es.abstracta.us\/blog\/#website\"},\"datePublished\":\"2024-03-18T19:00:00+00:00\",\"dateModified\":\"2024-05-22T23:48:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#breadcrumb\"},\"inLanguage\":\"es-CL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/es.abstracta.us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/#website\",\"url\":\"https:\/\/es.abstracta.us\/blog\/\",\"name\":\"Abstracta\",\"description\":\"Recursos, buenas pr\u00e1cticas, tendencias y rese\u00f1as de herramientas de desarrollo de software, testing e Inteligencia Artificial.\",\"publisher\":{\"@id\":\"https:\/\/es.abstracta.us\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/es.abstracta.us\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es-CL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/#organization\",\"name\":\"Abstracta\",\"url\":\"https:\/\/es.abstracta.us\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-CL\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/abstracta-logo.png\",\"contentUrl\":\"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/abstracta-logo.png\",\"width\":1217,\"height\":300,\"caption\":\"Abstracta\"},\"image\":{\"@id\":\"https:\/\/es.abstracta.us\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.instagram.com\/we_are_abstracta\/\",\"https:\/\/www.linkedin.com\/showcase\/abstracta-chile\/\",\"https:\/\/www.youtube.com\/channel\/UCj4dx2LZCRcgM8GzxYEKYeQ\",\"https:\/\/www.facebook.com\/AbstractaChile\/\",\"https:\/\/twitter.com\/AbstractaChile\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/#\/schema\/person\/394e6ba8f90dc5b3c2bd05887419a4af\",\"name\":\"Federico Toledo, Chief Quality Officer en Abstracta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-CL\",\"@id\":\"https:\/\/es.abstracta.us\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5a791bcef3d344e8a3a4e95c143fa27c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5a791bcef3d344e8a3a4e95c143fa27c?s=96&d=mm&r=g\",\"caption\":\"Federico Toledo, Chief Quality Officer en Abstracta\"},\"description\":\"Chief Quality Officer en Abstracta\",\"sameAs\":[\"http:\/\/cl.abstracta.us\",\"https:\/\/www.linkedin.com\/in\/federicotoledo\/\",\"https:\/\/twitter.com\/fltoledo\"],\"url\":\"https:\/\/es.abstracta.us\/blog\/author\/federico-toledo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance - Abstracta","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/","og_locale":"es_ES","og_type":"article","og_title":"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance - Abstracta","og_url":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/","og_site_name":"Blog de Desarrollo de Software, Testing e Inteligencia Artificial | Abstracta","article_publisher":"https:\/\/www.facebook.com\/AbstractaChile\/","article_published_time":"2024-03-18T19:00:00+00:00","article_modified_time":"2024-05-22T23:48:50+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-performance.png","type":"image\/png"}],"author":"Federico Toledo, Chief Quality Officer en Abstracta","twitter_card":"summary_large_image","twitter_creator":"@fltoledo","twitter_site":"@AbstractaChile","twitter_misc":{"Written by":"Federico Toledo, Chief Quality Officer en Abstracta","Est. reading time":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#article","isPartOf":{"@id":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/"},"author":{"name":"Federico Toledo, Chief Quality Officer en Abstracta","@id":"https:\/\/es.abstracta.us\/blog\/#\/schema\/person\/394e6ba8f90dc5b3c2bd05887419a4af"},"headline":"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance","datePublished":"2024-03-18T19:00:00+00:00","dateModified":"2024-05-22T23:48:50+00:00","mainEntityOfPage":{"@id":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/"},"wordCount":3289,"commentCount":0,"publisher":{"@id":"https:\/\/es.abstracta.us\/blog\/#organization"},"keywords":["Agilidad","API Testing","Calidad de Software","Pruebas de Carga","Pruebas de Escalabilidad","Pruebas de GUI","Pruebas de Integraci\u00f3n","Pruebas de Rendimiento","Pruebas Unitarias","QA"],"articleSection":["Automatizaci\u00f3n de Pruebas","Pruebas de Performance"],"inLanguage":"es-CL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/","url":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/","name":"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance - Abstracta","isPartOf":{"@id":"https:\/\/es.abstracta.us\/blog\/#website"},"datePublished":"2024-03-18T19:00:00+00:00","dateModified":"2024-05-22T23:48:50+00:00","breadcrumb":{"@id":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#breadcrumb"},"inLanguage":"es-CL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/es.abstracta.us\/blog\/modelo-piramide-automatizacion-pruebas-performance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/es.abstracta.us\/blog\/"},{"@type":"ListItem","position":2,"name":"Modelo de la pir\u00e1mide de automatizaci\u00f3n para pruebas de performance"}]},{"@type":"WebSite","@id":"https:\/\/es.abstracta.us\/blog\/#website","url":"https:\/\/es.abstracta.us\/blog\/","name":"Abstracta","description":"Recursos, buenas pr\u00e1cticas, tendencias y rese\u00f1as de herramientas de desarrollo de software, testing e Inteligencia Artificial.","publisher":{"@id":"https:\/\/es.abstracta.us\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/es.abstracta.us\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es-CL"},{"@type":"Organization","@id":"https:\/\/es.abstracta.us\/blog\/#organization","name":"Abstracta","url":"https:\/\/es.abstracta.us\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es-CL","@id":"https:\/\/es.abstracta.us\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/abstracta-logo.png","contentUrl":"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/abstracta-logo.png","width":1217,"height":300,"caption":"Abstracta"},"image":{"@id":"https:\/\/es.abstracta.us\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/we_are_abstracta\/","https:\/\/www.linkedin.com\/showcase\/abstracta-chile\/","https:\/\/www.youtube.com\/channel\/UCj4dx2LZCRcgM8GzxYEKYeQ","https:\/\/www.facebook.com\/AbstractaChile\/","https:\/\/twitter.com\/AbstractaChile"]},{"@type":"Person","@id":"https:\/\/es.abstracta.us\/blog\/#\/schema\/person\/394e6ba8f90dc5b3c2bd05887419a4af","name":"Federico Toledo, Chief Quality Officer en Abstracta","image":{"@type":"ImageObject","inLanguage":"es-CL","@id":"https:\/\/es.abstracta.us\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5a791bcef3d344e8a3a4e95c143fa27c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5a791bcef3d344e8a3a4e95c143fa27c?s=96&d=mm&r=g","caption":"Federico Toledo, Chief Quality Officer en Abstracta"},"description":"Chief Quality Officer en Abstracta","sameAs":["http:\/\/cl.abstracta.us","https:\/\/www.linkedin.com\/in\/federicotoledo\/","https:\/\/twitter.com\/fltoledo"],"url":"https:\/\/es.abstracta.us\/blog\/author\/federico-toledo\/"}]}},"jetpack_featured_media_url":"https:\/\/es.abstracta.us\/wp-content\/uploads\/2024\/03\/piramide-automatizacion-pruebas-performance.png","_links":{"self":[{"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/17226"}],"collection":[{"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/comments?post=17226"}],"version-history":[{"count":8,"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/17226\/revisions"}],"predecessor-version":[{"id":17891,"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/17226\/revisions\/17891"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/media\/17237"}],"wp:attachment":[{"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/media?parent=17226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/categories?post=17226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/es.abstracta.us\/blog\/wp-json\/wp\/v2\/tags?post=17226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}