{"id":11700,"date":"2020-05-26T09:17:58","date_gmt":"2020-05-26T09:17:58","guid":{"rendered":"https:\/\/www.dotcom-monitor.com\/blog\/2020\/05\/26\/http-headless-browser-load-tests-comparison\/"},"modified":"2026-06-15T15:23:11","modified_gmt":"2026-06-15T15:23:11","slug":"http-headless-browser-load-tests-comparison","status":"publish","type":"post","link":"https:\/\/www.dotcom-monitor.com\/blog\/es\/http-headless-browser-load-tests-comparison\/","title":{"rendered":"Pruebas de carga: HTTP vs Headless vs Real Browser"},"content":{"rendered":"<h2 id='resumen'  id=\"boomdevs_1\">Resumen<\/h2>\n<p>Las p\u00e1ginas web lentas o que no responden tienen un impacto en los ingresos financieros porque los usuarios frustrados probablemente no volver\u00e1n una vez que se resuelva el problema. Por lo tanto, las pruebas de rendimiento se han convertido en una parte fundamental de la cadena de desarrollo y la demanda sigue creciendo.<\/p>\n<p>Las plataformas de pruebas de rendimiento ofrecen una amplia gama de m\u00e9todos de simulaci\u00f3n de carga, como HTTP, navegadores sin interfaz gr\u00e1fica (headless) y navegadores reales. En este documento, describiremos los principales aspectos de estos m\u00e9todos, seguidos de una matriz comparativa que puedes utilizar para elegir el enfoque de simulaci\u00f3n adecuado.<\/p>\n<h2 id='simulaci\u00f3n-de-carga-basada-en-http'  id=\"boomdevs_2\">Simulaci\u00f3n de carga basada en HTTP<\/h2>\n<p>En los primeros d\u00edas de la era digital, las pruebas basadas en HTTP eran muy populares. Con el auge de las tecnolog\u00edas de cliente web enriquecido, los enfoques de simulaci\u00f3n basados en HTTP se han vuelto cada vez m\u00e1s obsoletos. Un controlador de pruebas t\u00edpico basado en HTTP ejecuta solicitudes de servicio y analiza las respuestas. Las aplicaciones modernas web 2.0 consisten en muchos scripts del lado del cliente, que son completamente ignorados y no se miden en este tipo de ejecuci\u00f3n de prueba. En los peores casos, los casos de uso complejos no se pueden simular a nivel de protocolo debido a la falta de identificadores generados en el lado del cliente.<\/p>\n<p>Debido a su naturaleza basada en solicitudes y respuestas, la sobrecarga en la m\u00e1quina de inyecci\u00f3n de carga es muy baja. Un servidor t\u00edpico de pruebas de carga puede simular hasta 800 sesiones simult\u00e1neas. Los casos de uso complejos basados en protocolos pueden ser dif\u00edciles de implementar. Un ingeniero de rendimiento debe manejar cookies, IDs de sesi\u00f3n y otros par\u00e1metros din\u00e1micos. Dependiendo del tipo de sistema que se est\u00e9 probando, algunos nombres de formularios web a menudo cambian una vez que se implementa una nueva versi\u00f3n, lo que har\u00e1 que el script basado en HTTP falle.<\/p>\n<h2 id='simulaci\u00f3n-de-carga-basada-en-navegador-sin-interfaz-gr\u00e1fica-headless'  id=\"boomdevs_3\">Simulaci\u00f3n de carga basada en navegador sin interfaz gr\u00e1fica (headless)<\/h2>\n<p>Con el auge de las tecnolog\u00edas web 2.0, el negocio de las pruebas se enfrent\u00f3 a desaf\u00edos serios. Las aplicaciones ricas en navegador ya no pod\u00edan ser probadas o simuladas a nivel de protocolo debido a la falta de l\u00f3gica del lado del cliente durante la reproducci\u00f3n del script. Por lo tanto, se introdujeron varios navegadores sin interfaz gr\u00e1fica como HtmlUnit, PhantomJS o SlimerJS. A menudo est\u00e1n construidos sobre WebKit, el motor detr\u00e1s de Chrome y Safari.<\/p>\n<p>Los navegadores sin interfaz gr\u00e1fica son similares a los navegadores reales pero sin la interfaz visual. Muchas plataformas de automatizaci\u00f3n de pruebas y pruebas de rendimiento utilizan navegadores headless para simular tr\u00e1fico.<\/p>\n<p>Los navegadores headless tienen sus propias desventajas; a medida que nuevos navegadores entran al mercado, los kits de navegadores headless deben ponerse al d\u00eda con todas las mejoras de rendimiento y caracter\u00edsticas de los navegadores reales.<\/p>\n<p>La simulaci\u00f3n del renderizado del lado del cliente no es gratuita. Un servidor t\u00edpico de inyecci\u00f3n de carga puede simular hasta 10-12 sesiones simult\u00e1neas de navegadores headless, frente a 500 sesiones basadas en HTTP.<\/p>\n<p>La implementaci\u00f3n y personalizaci\u00f3n de scripts de prueba no es demasiado dif\u00edcil. Si tienes habilidades b\u00e1sicas de programaci\u00f3n podr\u00e1s crear scripts simples. No todos los navegadores headless proporcionan funciones de reproducci\u00f3n visual y sin ella, la depuraci\u00f3n de scripts o el an\u00e1lisis de errores puede ser muy complicado.<\/p>\n<h2 id='simulaci\u00f3n-de-carga-basada-en-navegador-real'  id=\"boomdevs_4\">Simulaci\u00f3n de carga basada en navegador real<\/h2>\n<p>Las aplicaciones web 2.0 est\u00e1n llenas de JavaScript, Flash, Ajax y CSS. Sin un navegador completo, no es posible medir los tiempos de respuesta reales de extremo a extremo de toda la p\u00e1gina web. Las pruebas de rendimiento basadas en navegador real te permiten verificar la funcionalidad y la velocidad del sitio tal como las percibe el usuario final.<\/p>\n<p>Una soluci\u00f3n t\u00edpica de prueba de rendimiento con navegador real recopila tiempos de carga de im\u00e1genes, JavaScript, CSS y m\u00e1s. A menudo proporcionan gr\u00e1ficos de cascada que visualizan el tiempo de carga de esos componentes.<\/p>\n<p>La carga de un navegador real es ligeramente mayor. Considerando que la simulaci\u00f3n con navegador headless no entrega tiempos de respuesta 100% realistas, es justo decir que se debe preferir la simulaci\u00f3n basada en navegador real. En escenarios reales, los navegadores headless solo rinden un 20% mejor que los navegadores reales. As\u00ed que, si un inyector de carga promedio puede ejecutar 10-12 sesiones headless, ese mismo inyector puede ejecutar 8-10 sesiones de navegador real.<\/p>\n<p>La implementaci\u00f3n y el mantenimiento de los scripts de prueba es f\u00e1cil porque las acciones del usuario se reflejan directamente y la reproducci\u00f3n visual facilita la depuraci\u00f3n. En el script de ejemplo a continuaci\u00f3n, el navegador abre una URL, introduce usuario y contrase\u00f1a y hace clic en el bot\u00f3n de inicio de sesi\u00f3n.<\/p>\n<h2 id='tipos-de-pruebas-de-rendimiento'  id=\"boomdevs_5\">Tipos de pruebas de rendimiento<\/h2>\n<h3 id='pruebas-de-velocidad-de-componentes'  id=\"boomdevs_6\">Pruebas de velocidad de componentes<\/h3>\n<p>En los \u00faltimos a\u00f1os, los m\u00e9todos de desarrollo de software se han orientado hacia lo \u00e1gil. Los lanzamientos cortos son esenciales. Los desarrolladores e ingenieros de prueba automatizan su aseguramiento de calidad y las verificaciones de rendimiento. Normalmente, implementan pruebas de rendimiento basadas en servicios a nivel de protocolo o simulan verificaciones de rendimiento con navegador real para comparar los tiempos de respuesta de extremo a extremo con los l\u00edmites de rendimiento acordados.<\/p>\n<p>Objetivos<\/p>\n<ul>\n<li>+ Repetibilidad<\/li>\n<li>+ Verificaciones automatizadas de interfaz y rendimiento de extremo a extremo<\/li>\n<li>+ Comparar tiempos de respuesta con umbrales acordados<\/li>\n<\/ul>\n<h3 id='pruebas-de-carga'  id=\"boomdevs_7\">Pruebas de carga<\/h3>\n<p>Por varias razones, las pruebas de carga son el m\u00e9todo ideal para verificar requisitos no funcionales. Una de ellas es que los tiempos de respuesta se pueden verificar en condiciones reproducibles. Otra es que estas pruebas permiten la verificaci\u00f3n de los umbrales de tiempo de respuesta. La medici\u00f3n realista del tiempo de respuesta es esencial en los escenarios de prueba de carga. Por lo tanto, los ingenieros de prueba utilizan simulaci\u00f3n de usuario con navegador headless o real para sus configuraciones de pruebas de carga.<\/p>\n<p>Objetivos<\/p>\n<ul>\n<li>+ Simulaci\u00f3n de carga reproducible<\/li>\n<li>+ Verificaci\u00f3n de los umbrales de tiempo de respuesta<\/li>\n<li>+ Identificar cuellos de botella en condiciones de carga similares a producci\u00f3n<\/li>\n<li>+ Escenarios realistas de prueba de extremo a extremo<\/li>\n<\/ul>\n<h3 id='pruebas-de-estr\u00e9s'  id=\"boomdevs_8\">Pruebas de estr\u00e9s<\/h3>\n<p>Si necesitas probar la fiabilidad de tu aplicaci\u00f3n bajo condiciones de carga m\u00e1xima, ejecuta una prueba de estr\u00e9s. En este tipo de prueba especificas principalmente el n\u00famero m\u00e1ximo de usuarios y el tiempo durante el cual el aumento y la carga estable deben mantenerse en tu aplicaci\u00f3n. El objetivo es identificar los puntos de quiebre de tu aplicaci\u00f3n bajo prueba.<\/p>\n<p>Objetivos<\/p>\n<ul>\n<li>+ Comprobar escalabilidad y estabilidad<\/li>\n<li>+ Simular condiciones de carga m\u00e1xima<\/li>\n<li>+ La reproducibilidad exacta no es importante<\/li>\n<\/ul>\n<h2 id='comparaci\u00f3n'  id=\"boomdevs_9\">Comparaci\u00f3n<\/h2>\n<p>Obviamente, existen buenas razones para utilizar simulaci\u00f3n de usuario basada en protocolo, headless o navegador real. La siguiente matriz proporciona una gu\u00eda para elegir el enfoque adecuado.<\/p>\n<table>\n<thead>\n<tr>\n<th>Criterio<\/th>\n<th>HTTP<\/th>\n<th>Navegador Headless<\/th>\n<th>Navegador Real<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Simulaci\u00f3n de usuario<\/td>\n<td>Sin renderizado del lado del cliente<\/td>\n<td>Se simulan algunos elementos del lado del cliente<\/td>\n<td>Simulaci\u00f3n real del usuario<\/td>\n<\/tr>\n<tr>\n<td>Implementaci\u00f3n y personalizaci\u00f3n del script<\/td>\n<td>Dif\u00edcil cuando los sitios web son complejos<\/td>\n<td>Se requieren habilidades de desarrollador para construir scripts robustos<\/td>\n<td>Scripts simples, f\u00e1ciles de personalizar<\/td>\n<\/tr>\n<tr>\n<td>Reproducci\u00f3n del script<\/td>\n<td>Se requiere an\u00e1lisis de bajo nivel<\/td>\n<td>Dependiendo del motor usado, es posible la reproducci\u00f3n visual<\/td>\n<td>Ves exactamente lo que ocurre<\/td>\n<\/tr>\n<tr>\n<td>Mantenibilidad del script<\/td>\n<td>Se requieren habilidades de programaci\u00f3n<\/td>\n<td>Los errores en secciones no renderizadas son dif\u00edciles de resolver<\/td>\n<td>F\u00e1cil porque ves los fallos durante la reproducci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td>Soporte multinavegador<\/td>\n<td>Algunas herramientas emulan navegadores, pero no es comparable<\/td>\n<td>S\u00ed, pero a menudo faltan algunos elementos<\/td>\n<td>Algunos soportan otras versiones y distintos navegadores<\/td>\n<\/tr>\n<tr>\n<td>Huella en la m\u00e1quina de inyecci\u00f3n de carga<\/td>\n<td>Baja, hasta 800 sesiones por servidor<\/td>\n<td>Media, hasta 10\u201312 sesiones por servidor<\/td>\n<td>Alta, hasta 6 sesiones por servidor<\/td>\n<\/tr>\n<tr>\n<td>Recomendado para DevOps<\/td>\n<td>Depende del escenario de prueba<\/td>\n<td>No, los scripts suelen ser complejos<\/td>\n<td>S\u00ed, f\u00e1cil de usar y cifras realistas<\/td>\n<\/tr>\n<tr>\n<td>Recomendado para pruebas de carga<\/td>\n<td>No, se omite el procesamiento del lado del cliente<\/td>\n<td>S\u00ed, mejor que la simulaci\u00f3n HTTP<\/td>\n<td>S\u00ed, simulaci\u00f3n realista del usuario<\/td>\n<\/tr>\n<tr>\n<td>Recomendado para pruebas de estr\u00e9s<\/td>\n<td>S\u00ed, porque hay poca sobrecarga en la m\u00e1quina generadora de carga<\/td>\n<td>No, la sobrecarga en la m\u00e1quina generadora es demasiado alta<\/td>\n<td>No, la mayor sobrecarga en la m\u00e1quina generadora<\/td>\n<\/tr>\n<tr>\n<td>Costes<\/td>\n<td>Bajo<\/td>\n<td>Alto<\/td>\n<td>Alto<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><strong>Recomendado para pruebas de alto volumen y bajo coste de servidores web (cuando sea posible)<\/strong><\/td>\n<td><strong>No recomendado<\/strong><\/td>\n<td><strong>Recomendado para simulaciones complejas de aplicaciones reales<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>P\u00e1ginas web utilizadas para este documento:<\/p>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/web\/tools\/chrome-devtools\/device-mode\/testing-other-browsers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/developers.google.com\/web\/tools\/chrome-devtools\/device-mode\/testing-other-browsers<\/a><\/li>\n<li><a href=\"https:\/\/watirmelon.blog\/2015\/12\/08\/real-vs-headless-browsers-for-automated-acceptance-tests\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/watirmelon.blog\/2015\/12\/08\/real-vs-headless-browsers-for-automated-acceptance-tests\/<\/a><\/li>\n<li><a href=\"https:\/\/news.softpedia.com\/news\/what-is-a-headless-browser-and-what-s-it-good-for-485162.shtml\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/news.softpedia.com\/news\/what-is-a-headless-browser-and-what-s-it-good-for-485162.shtml<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dhamaniasad\/HeadlessBrowsers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/dhamaniasad\/HeadlessBrowsers<\/a><\/li>\n<li><a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/circleci.com\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Un esquema de los principales aspectos de los m\u00e9todos de simulaci\u00f3n de carga, como HTTP, sin cabeza y basado en navegador real seguido de una matriz de comparaci\u00f3n, para ayudarle a elegir un enfoque de simulaci\u00f3n adecuado. <\/p>\n","protected":false},"author":21,"featured_media":8216,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[926,922,927,3251],"tags":[],"class_list":["post-11700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consejos-tecnicos-de-rendimiento","category-noticias-dotcom-monitor","category-noticias-sobre-el-rendimiento-del-sitio-web","category-pruebas-de-carga"],"_links":{"self":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=11700"}],"version-history":[{"count":0,"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11700\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/media\/8216"}],"wp:attachment":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=11700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=11700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=11700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}