{"id":1993,"date":"2024-01-12T10:28:44","date_gmt":"2024-01-12T09:28:44","guid":{"rendered":"https:\/\/ittester.sk\/sin-categorizar\/rendimiento-prueba-sitio-web\/"},"modified":"2024-06-25T16:01:42","modified_gmt":"2024-06-25T14:01:42","slug":"rendimiento-prueba-sitio-web","status":"publish","type":"post","link":"https:\/\/ittester.sk\/es\/pruebas-de-rendimiento\/tutorial-de-jmeter\/rendimiento-prueba-sitio-web\/","title":{"rendered":"Pruebas de rendimiento de sitios web"},"content":{"rendered":"\n<p>En este tutorial, cubriremos la creaci\u00f3n de un plan de pruebas de rendimiento de aplicaciones web con el que podremos realizar pruebas de rendimiento de aplicaciones web utilizando JMeter. Tambi\u00e9n conocer\u00e1s los distintos elementos del plan de pruebas necesarios para crear un gui\u00f3n de pruebas, junto con su uso y configuraci\u00f3n.<\/p>\n\n<h2 class=\"wp-block-heading\"><strong>\u00cdndice<\/strong><\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-predpoklady-prerekvizity-pre-vykonnostne-testy-performance-tests\">Predpoklady (prerekvizity) pre v\u00fdkonnostn\u00e9 testy (performance tests)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-kroky-pri-vytvarani-skriptov-testov-vykonnosti\">Kroky pri vytv\u00e1ran\u00ed skriptov testov v\u00fdkonnosti<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vytvorenie-kostry-testovacieho-skriptu\">Vytvorenie kostry testovacieho skriptu<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vytvaranie-alebo-zaznamenavanie-poziadaviek-http\">Vytv\u00e1ranie alebo zaznamen\u00e1vanie po\u017eiadaviek HTTP<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-pridanie-casovacov\">Pridanie \u010dasova\u010dov<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-pridanie-posluchacov\">Pridanie posluch\u00e1\u010dov<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-dry-run-test\">Dry Run test<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-konfiguracia-a-naplanovanie-zatazoveho-testu\">Konfigur\u00e1cia a napl\u00e1novanie z\u00e1\u0165a\u017eov\u00e9ho testu<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-spustenie-a-analyza-testu\">Spustenie a anal\u00fdza testu<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-zaver\">Z\u00e1ver<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-predpoklady-prerekvizity-pre-vykonnostne-testy-performance-tests\">Requisitos previos para las pruebas de rendimiento<\/h2>\n\n<p>Al crear un plan de pruebas de rendimiento de una aplicaci\u00f3n web, debes tener dominadas de antemano las siguientes cosas:<\/p>\n\n<ol class=\"wp-block-list\">\n<li>Conocimiento de los escenarios de aplicaci\u00f3n empresarial.<\/li>\n\n\n\n<li>Una instancia de aplicaci\u00f3n dise\u00f1ada para pruebas de rendimiento con configuraciones y estado similares a los de producci\u00f3n.<\/li>\n\n\n\n<li>Lista de escenarios seleccionados para las pruebas de rendimiento (ya que no todos los escenarios deben someterse a pruebas de carga).<\/li>\n\n\n\n<li>La carga m\u00e1xima en producci\u00f3n o el valor previsto de la carga m\u00e1xima.<\/li>\n\n\n\n<li>La distribuci\u00f3n de los usuarios en los distintos escenarios, ya que algunos escenarios se utilizan con m\u00e1s frecuencia que otros. Por tanto, a cada escenario se le asigna un n\u00famero diferente de usuarios.<\/li>\n\n\n\n<li>El valor del tiempo de pensamiento o de espera que debe incluirse entre algunas operaciones para simular a los usuarios reales: tiempo de pensamiento, tiempo de tecleo, tiempo de lectura y procesamiento de la informaci\u00f3n, etc.<\/li>\n\n\n\n<li>Una m\u00e9trica de la prueba de rendimiento que se derivar\u00e1 de los resultados de la prueba, como el tiempo de respuesta, el n\u00famero de visualizaciones por segundo, etc.<\/li>\n<\/ol>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-kroky-pri-vytvarani-skriptov-testov-vykonnosti\">Pasos para crear guiones de pruebas de rendimiento<\/h2>\n\n<p>Para crear un plan de pruebas de rendimiento de una aplicaci\u00f3n web, debes realizar los siguientes pasos:<\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>Crea un esqueleto de gui\u00f3n de prueba<\/strong> con un plan de pruebas configurado, grupos de hilos y controladores l\u00f3gicos.<\/li>\n\n\n\n<li><strong>Crear o registrar peticiones HTTP <\/strong>utilizando el Proxy HTTP.<\/li>\n\n\n\n<li><strong>A\u00f1ade temporizadores para<\/strong> introducir el tiempo de espera o el tiempo de reflexi\u00f3n entre peticiones.<\/li>\n\n\n\n<li><strong>A\u00f1ade escuchadores para<\/strong> almacenar y analizar los resultados de las pruebas.<\/li>\n\n\n\n<li><strong>Realiza una prueba en seco<\/strong> con 1 \u00f3 2 usuarios.<\/li>\n\n\n\n<li><strong>Configura una prueba de esfuerzo<\/strong> con el n\u00famero necesario de usuarios y ejec\u00fatala.<\/li>\n\n\n\n<li><strong>Ejecutar y analizar los resultados de las pruebas<\/strong>.<\/li>\n<\/ol>\n\n<p>Veamos ahora c\u00f3mo podemos realizar cada uno de los pasos anteriores en detalle.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vytvorenie-kostry-testovacieho-skriptu\">Crear el esqueleto del script de prueba<\/h2>\n\n<p>En funci\u00f3n del n\u00famero de grupos de usuarios necesarios para realizar diversas operaciones, a\u00f1adiremos grupos de hilos y controladores l\u00f3gicos a nuestro plan de pruebas. Por ejemplo: si tenemos dos grupos de usuarios que realizan operaciones de b\u00fasqueda e inicio de sesi\u00f3n en una p\u00e1gina web.<\/p>\n\n<p>A continuaci\u00f3n, creamos dos Grupos de Hilos y a\u00f1adimos diferentes Controladores L\u00f3gicos para simular distintas operaciones realizadas por los usuarios. Pasos a seguir:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>A\u00f1ade un grupo de hilos al plan de pruebas y n\u00f3mbralo UsersSearchingKeywords.<\/li>\n\n\n\n<li>A\u00f1ade varios controladores de transacciones como hijos de este Grupo de hilos y n\u00f3mbralos seg\u00fan las operaciones que realicen, por ejemplo: \u00abIniciar aplicaci\u00f3n\u00bb, \u00abBuscar palabra clave y pulsar intro\u00bb, \u00abCerrar aplicaci\u00f3n\u00bb.<\/li>\n\n\n\n<li>A\u00f1ade otro grupo de hilos y n\u00f3mbralo UsersLogin.<\/li>\n\n\n\n<li>A\u00f1ade controladores de transacciones a este Grupo de Hilos como &#8211; \u00abIniciar aplicaci\u00f3n\u00bb, \u00abHacer clic en el enlace Iniciar sesi\u00f3n\u00bb, \u00abIntroducir credenciales de inicio de sesi\u00f3n y hacer clic en el bot\u00f3n Enviar\u00bb.<\/li>\n\n\n\n<li>A\u00f1adir configuraci\u00f3n  <\/li>\n<\/ul>\n\n<p>Nuestro plan de pruebas tendr\u00e1 este aspecto:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"360\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360.webp\" alt=\"\" class=\"wp-image-840\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360.webp 950w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360-300x114.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360-768x291.webp 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/figure>\n<\/div>\n<p>Observa que aqu\u00ed hemos utilizado un controlador de transacciones porque podemos tener varias peticiones HTTP dentro de este controlador, y obtenemos el tiempo de respuesta total de toda la transacci\u00f3n despu\u00e9s de realizar la prueba, lo cual es deseable. En funci\u00f3n de los escenarios, tambi\u00e9n podemos a\u00f1adir distintos controladores l\u00f3gicos, como un controlador de ciclos, un controlador aleatorio, etc.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vytvaranie-alebo-zaznamenavanie-poziadaviek-http\">Crear o registrar peticiones HTTP<\/h2>\n\n<p>Cuando realizamos una operaci\u00f3n, como pulsar un bot\u00f3n, se env\u00edan varias peticiones HTTP al servidor. Al programar, necesitamos crear todas estas peticiones para poder determinar el tiempo que tardan en procesarse.<\/p>\n\n<p>Una forma de hacerlo es a\u00f1adir diferentes peticiones HTTP y configurarlas con valores como &#8211; URL, puerto, tipo de petici\u00f3n (Get, Put, Post, Delete, etc.), cuerpo de la petici\u00f3n, cabecera de la petici\u00f3n, etc. Sin embargo, esto puede ser muy engorroso, a menos que necesitemos probar solicitudes muy limitadas o necesitemos probar una solicitud HTTP concreta.<\/p>\n\n<p>Para hacerlo con eficacia, JMeter nos proporciona la herramienta HTTP(s) Test Script Recorder, que podemos utilizar para grabar scripts en JMeter directamente realizando operaciones en el navegador.<\/p>\n\n<p>Cuando iniciamos la grabaci\u00f3n de scripts, podemos seleccionar un controlador de operaciones, como \u00abLanzar aplicaci\u00f3n\u00bb, del controlador HTTP(s) de destino del Grabador de Scripts de Prueba y realizar operaciones como lanzar una aplicaci\u00f3n web en el navegador configurado, a\u00f1adiendo varias peticiones HTTP al controlador seleccionado.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"280\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280.webp\" alt=\"\" class=\"wp-image-842\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280.webp 1000w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280-300x84.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280-768x215.webp 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-pridanie-casovacov\">A\u00f1adir temporizadores<\/h2>\n\n<p>Podemos a\u00f1adir temporizadores entre dos controladores de transacci\u00f3n para introducir tiempo de reflexi\u00f3n, por ejemplo, podemos introducir un temporizador con un valor de tiempo de espera de 3 segundos entre los controladores \u00abLanzar aplicaci\u00f3n\u00bb y \u00abBuscar palabra clave\u00bb para simular el tiempo que tarda el usuario en procesar la respuesta e introducir la palabra clave a buscar.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-pridanie-posluchacov\">A\u00f1adir oyentes<\/h2>\n\n<p>Podemos utilizar distintos tipos de escuchas para almacenar y analizar los resultados de las pruebas, que hemos estudiado en nuestro tutorial &#8211; Escuchas en JMeter.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-dry-run-test\">Prueba de funcionamiento en seco<\/h2>\n\n<p>Antes de ejecutar la prueba con el n\u00famero real de usuarios, necesitamos ejecutar la prueba en seco con un n\u00famero muy peque\u00f1o de usuarios para verificar la correcci\u00f3n del script.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-konfiguracia-a-naplanovanie-zatazoveho-testu\">Configurar y programar una prueba de esfuerzo<\/h2>\n\n<p>Tras validar los scripts, configuramos la prueba de esfuerzo con el n\u00famero de usuarios necesario y programamos la prueba de esfuerzo.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-spustenie-a-analyza-testu\">Ejecuci\u00f3n y an\u00e1lisis de la prueba<\/h2>\n\n<p>Una vez completada toda la creaci\u00f3n y configuraci\u00f3n del gui\u00f3n de la prueba, ejec\u00fatala haciendo clic en el icono de reproducci\u00f3n o pulsando el atajo de teclado Ctrl+r. Monitorizaremos el servidor en paralelo mientras se ejecuta la prueba. Una vez finalizada la prueba, podemos guardar y analizar los resultados de la prueba.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-zaver\">Conclusi\u00f3n<\/h2>\n\n<p>Ya hemos visto el plan de pruebas b\u00e1sico de la aplicaci\u00f3n web, pero a\u00fan quedan algunas cosas de las que ocuparnos:<\/p>\n\n<ol class=\"wp-block-list\">\n<li>Durante las pruebas, no debemos introducir valores como &#8211; t\u00e9rminos de b\u00fasqueda y credenciales de inicio de sesi\u00f3n de usuario, etc. Para ello, necesitamos parametrizar los guiones de prueba.  <\/li>\n\n\n\n<li>Crear scripts din\u00e1micos y manipular variables de sesi\u00f3n es otra cosa que hay que tener en cuenta al crear scripts. Para resolver estos problemas tenemos el concepto de correlaci\u00f3n.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Crear un plan de pruebas de rendimiento de aplicaciones web para que podamos realizar pruebas de rendimiento utilizando JMeter.  <\/p>\n","protected":false},"author":8,"featured_media":1996,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[38],"tags":[],"class_list":["post-1993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-de-jmeter"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/comments?post=1993"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1993\/revisions"}],"predecessor-version":[{"id":1998,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1993\/revisions\/1998"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media\/1996"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media?parent=1993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/categories?post=1993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/tags?post=1993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}