====== Realizar Test Carga ====== {{:mda:qs:mda-pr-1.0-qs-realizar_test_de_carga.png|}} ====== Objetivos ====== El objetivo de este proceso es el de **probar el comportamiento de la aplicación, en tiempo de respuesta y consistencia, ante peticiones individuales o múltiples y concurrentes**. Este proceso esta íntimamente relacionado con los requisitos no funcionales de tiempo de respuesta y número de usuarios concurrentes. En las pruebas funcionales, grarantizamos que la aplicación funciona correctamente para un usuario, pero ¿qué pasa cuando se conectan muchos usuarios a la misma vez? ¿cómo se ve afectado el rendimiento? En este proceso se generarán tests de carga y pruebas de estrés, para garantizar que esos requisitos no funcionales se cumplen. Las fases del proceso serán la creación de los tests y la ejecución de los mismos. Esta proceso va a ser **estratégico** cuando la aplicación vaya a ser utilizada masivamente, por lo tanto **es muy importante hacer test de estrés** y estimar adecuadamente el **número de usuarios concurrentes** que tendrá la aplicación, teniendo en cuenta tanto el **nº medio de sesiones concurrentes**, como los **picos que puede haber en dicho nº de sesiones**. Por ejemplo, en una aplicación donde los usuarios potenciales son todos los alumnos de la UMU, podríamos decir que el nº de usuarios posibles son 25.000, pero **¿cuál será la concurrencia habitual, y la máxima?** Estos dos datos son **fundamentales para que Sistemas dimensione adecuadamente los recursos que necesita la aplicación** (memoria, contenedor compartido o no, contenedor en cluster o no, nº sesiones de la fuente de datos, etc), por tanto **es muy importante hacer las estimaciones bien**, y **es fundamental que los test de estrés se acerquen los más posible a la realidad**, dedicándole el tiempo que sea necesario al estudio y configuración de esta tarea. En el [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/2.Requisitos/DocumentoVision.ott|Documento de Visión]] aparece en el apartado //"7.6.Requisitos de Rendimiento"// el mínimo de usuarios que debe de soportar la aplicación. Se debe de partir de esa base para decidir los parámetros del test de carga, haciendo además las estimaciones necesarias para los test de estrés. ====== Roles ====== Los siguientes son los roles participantes en este proceso: ^ Rol ^ Tareas que interviene ^ |**Tester** | | | |MDA-TR-1.0-QS-Diseñar Casos de Prueba de Carga | | |MDA-TR-1.0-QS-Ejecutar Casos de Prueba de Carga | ====== Tareas ====== ===== MDA-TR-1.0-QS-Diseñar Casos de Prueba de Carga ===== El plan de pruebas de Carga especificará qué funcionalidad de la aplicación va a estar sometida a pruebas de carga y tests de estrés. En esta tarea también se realizarán los tests para tenerlos listos para su fase de ejecución. Habrá que seleccionar qué partes van a ser sometidas a usos masivos por parte del usuario especialmente, para posteriormente, en la siguiente tarea, comprobar mediante la ejecución del plan, que la aplicación está preparada para responder a esa carga. ==== 1. Crea las tareas en Jira ==== Para esta tarea se deben de dar de alta un **JIRA** con los siguientes datos ^ Tipo ^ Descripción ^ Disciplina ^ Proceso ^ Label ^ Version Fijada ^^^ | //Tarea// | //Realizar Plan de Pruebas de Carga// | //Calidad del Software//|//QS-Realizar Test de Carga// | DCPC | //[Versión del proyecto]// | ==== 2. Crear Casos de Pruebas de Carga ==== Se seguirá la plantilla de [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/5.Calidad/CasosPruebaCarga.ott|Casos de Prueba de Carga]] en el que aparecerán recogidos los distintas acciones a comprobar, cómo se comprueba masivamente y qué carga deben de soportar. ^ Plantilla ^ SIGLAS ^ Nomenclatura ^ Ubicación ^^^ |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/5.Calidad/CasosPruebaCarga.ott|CasosPruebaCarga]]| QCPC | XXX-QCPC-1.2.3-CasosPruebaCarga | ///Proyecto/Documentacion/5./CalidadTest/5.3 TestCarga//|| ==== 3. Crear los Test de Carga/Estrés ==== La Herramienta para generar los test de Carga y Estrés será el JMeter. Para consultar cómo se realizan los tests seguir el [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Instrucciones/gtmncsPruebasCargaFUNDEWEB.pdf|Manual de Test de Carga de Aplicaciones FundeWeb con JMeter]]. En caso de que la carga a simular sea masiva, leerse también la guía simulación de alta concurrencia [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Instrucciones/Manual-JMeter-Pruebas-Alta-Carga.pdf|Manual de Test de Estrés]] (Carga con Alta Concurrencia) Por cada test de carga/estrés se generará un archivo jmx, en el que se contendrá la prueba, como el del ejemplo: ^ Documento ^ SIGLAS ^ Nomenclatura ^ Ubicación ^^^ |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Ejemplos/Calidad/TestCarga/XXX-QTC-1.2.3-TestCarga.jmx|TestCarga]]| QTC | XXX-QTC-1.2.3-TestCarga.jmx | ///Proyecto/Documentacion/5./Calidad/5.3 TestCarga//|| **OjO** 8-O!!: al guardar sitúate en la raíz del Plan de pruebas de Jmeter, si no guardará SOLO desde el elemento del árbol donde te encuentres. **OjO** 8-O!!: Es imprescindible ponerse de acuerdo con sistemas para realizar las pruebas de carga, ya que ellos deben monitorizar el comportamiento del servidor y de la base de datos ===== MDA-TR-1.0-QS-Ejecutar Plan de Pruebas de Carga ===== Se ejecutarán las pruebas de carga como está definido en el documento de plan de pruebas de carga. Por cada caso de prueba debe de existir un fichero jmx, con el test de carga a ejecutar. Lo que se hara en esta tarea ejecutarla y guardar los resultados en su fichero correspondiente. Seguir los siguientes pasos: ==== 1. Crea las tareas en Jira ==== Para esta tarea se deben de dar de alta un **JIRA** con los siguientes datos ^ Tipo ^ Descripción ^ Disciplina ^ Proceso ^ Label^ Version Fijada ^^^ | //Tarea// | //Ejecutar Plan de Pruebas de Carga// | //Calidad del Software//|//QS-Realizar Test de Carga// | ECPC| //[Versión del proyecto]// | ==== 2. Ejecutar los test de Carga==== Por cada caso de prueba de carga: **2.1.** Crear un fichero vacio "resultado.csv". Será un fichero temporal que puede estar en cualquier sitio. Lo importante es la extensión. **2.2.** Crear el "Resultado en Arbol" en el hilo de ejecución (si hay varios crearlo en uno solo). {{:resultadosarbol.png|}} **2.3.** Configurar los "Resultados en Arbol", para que escriban en el fichero temporal creado resultados.csv. {{:mda:qs:confresultadosarbol1.png|}} {{:mda:qs:confresultadosarbol2.png|}} **2.4.** Configurar los "Resultados en Arbol", para elegir los campos correctos {{:mda:qs:confresultadosarbol3.png|}} {{:mda:qs:confresultadosarbol4.png|}} OjO 8-O!: DALE AL BOTON HECHO SI NO, NO SE GUARDA **2.5.** Ejecutar los Tests con la opción //Lanzar// --> //Arrancar// ==== 3. Guardar los Test de Carga==== Es importante guardar los test de carga porque al volver a abrir el fichero de ejecución de test no volverán a aparecer. **3.1.** Crear una nueva hoja de calculo [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/5.Calidad/ResultadoTestCarga.ots|ResultadoTestCarga]], y rellenar el campo "Tiempo maximo respuesta" de la hoja "Ejecucion", con el valor tiempo maximo de respuesta que debe de coincidir con el del [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/2.Requisitos/DocumentoVision.ott|Documento de Visión]], en el apartado //"7.6 Requisitos de rendimiento"//. ^ Plantilla ^ SIGLAS ^ Nomenclatura ^ Ubicación ^^^ |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/5.Calidad/ResultadoTestCarga.ots|ResultadoTestCarga]]| QRTC | XXX-QRTC-1.2.3-ResultadoTestCarga | ///Proyecto/Documentacion/5./CalidadTest/5.3 TestCarga//|| Este hoja autocalculará si los tiempos de respuesta han sido correctos o no. **3.2.** Abrir los resultados resultado.cvs con el OpenOffice calc. **3.3.** Copiar los resultados a la plantilla [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/5.Calidad/ResultadoTestCarga.ots|ResultadoTestCarga]], en la hoja que pone Pegar Aqui. **3.4.** Esta hoja en el campo "Resultado" de la hoja "Ejecucion", pondrá ok si el tiempo de respuesta es correcto y no ha fallado la ejecución y fallo en caso contrario. Con estos datos apuntaremos en la hoja "Resultados", en el sprint correspondiente, el éxito o el fallo de la ejecución. En caso de fallo añadiremos mediante una nota, en qué página se produjo y el número de iteración que fue. ====== Artefactos ====== ===== De entrada ===== ^ Plantilla del Artefacto ^ SIGLAS ^ Nomenclatura ^ Ubicación ^^^ |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/2.Requisitos/DocumentoRequisitos.odm|DocumentoDeRequisitos]]| REQ | XXX-REQ-1.2.3-Documento de Requisitos | ///Proyecto/Documentacion/2.Requisitos //|| ===== De salida ===== ^ Plantilla ^ SIGLAS ^ Nomenclatura ^ Ubicación ^^^ |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/5.Calidad/CasosPruebaCarga.ott|CasosPruebaCarga]]| QCPC | XXX-QCPC-1.2.3-CasosPruebaCarga | ///Proyecto/Documentacion/5./Calidad/5.3 TestCarga//|| |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Ejemplos/Calidad/TestCarga/XXX-QTC-1.2.3-TestCarga.jmx|TestCarga]]| QTC | XXX-QTC-1.2.3-TestCarga.jmx | ///Proyecto/Documentacion/5./Calidad/5.3 TestCarga//|| |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/5.Calidad/ResultadoTestCarga.ots|ResultadoTestCarga]]| QRTC | XXX-QRTC-1.2.3-ResultadoTestCarga | ///Proyecto/Documentacion/5./Calidad/5.3 TestCarga//|| ====== Herramientas ====== ^ Herramienta ^ Version ^ Utilizada en ^ Descarga ^^^ |OpenOffice Writer | 3.3 | Diseñar Casos de Prueba de Carga | Novell | |Selenium IDE (plugin for FireFox)| 1.08 min | Diseñar Casos de Prueba de Carga | [[http://seleniumhq.org/download/|Pagina Selenium ]] | |OpenOffice Calc | 3.3 | Ejecutar Casos de Prueba de Carga | Novell | |JMeter |2.3.4 o superior | | [[http://jmeter.apache.org/download_jmeter.cgi| Pagina de Descarga]] | ====== Métricas ====== Las métricas del proyecto se guardarán dentro de la carpeta del proyecto en //Proyecto/Documentacion/1.Gestionproyecto/1.4.Metricas//. Las métricas de este proceso en concreto se almacenan en la Hoja //QS//. ===== Tiempo dedicado al proceso ===== - Entra en Jira en el navegador de incidencias. Realiza una query simple y selecciona todas las tareas del proyecto. * project = //ClaveDelProyecto// * Disciplina-Proceso = //Calidad del Software-QS-Realizar Test de Carga// Pulsa el botón //Search// Usa la [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/1.GestionProyecto/PlantillaSeguimiento.ots|Plantilla de Seguimiento]] tal y como se indica en el apartado [[mda:Calcular_Tiempos|Calcular tiempos con Jira]]. ===== Número de Casos de Prueba de Carga===== Numero de Casos de Prueba de Carga escritos para el proyecto. ===== Tiempo dedicado a la tarea Diseñar Casos de Prueba de Carga===== - Entra en Jira en el navegador de incidencias. Realiza una query simple y selecciona todas las tareas del proyecto. * project = //ClaveDelProyecto// * Disciplina-Proceso = //Requisitos//-//QS-Diseñar Casos de Prueba de Carga// * label= //DCBC// Pulsa el botón //Search// Usa la [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/1.GestionProyecto/PlantillaSeguimiento.ots|Plantilla de Seguimiento]] tal y como se indica en el apartado [[mda:Calcular_Tiempos|Calcular tiempos con Jira]]. ===== Número de Casos de Prueba Ejecutados ===== Número de Casos de Prueba Ejecutados ===== Número de Casos de Prueba Ejecutados con resultado Erroneo ===== Número de Casos de Prueba Ejecutados con resultado Erroneo ===== Número de Casos de Prueba Ejecutados con resultado Correctos ===== Número de Casos de Prueba Ejecutados con resultado Correctos ===== Tiempo dedicado a la tarea Ejecutar Casos de Prueba de Carga===== - Entra en Jira en el navegador de incidencias. Realiza una query simple y selecciona todas las tareas del proyecto. * project = //ClaveDelProyecto// * Disciplina-Proceso = //Requisitos//-//QS-Ejecutar Casos de Prueba de Carga// * label= //ECPC// Pulsa el botón //Search// Usa la [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/1.GestionProyecto/PlantillaSeguimiento.ots|Plantilla de Seguimiento]] tal y como se indica en el apartado [[mda:Calcular_Tiempos|Calcular tiempos con Jira]]