Las normas expuestas son de obligado cumplimiento. La STIC podrá atender casos excepcionales que serán gestionados a través de los responsables del proyecto correspondiente y autorizados por el Área de Gobernanza de la STIC. Asimismo, cualquier aspecto no recogido en estas normas deberá regirse en primera instancia por las guías técnicas correspondientes al esquema nacional de seguridad y esquema nacional de interoperabilidad, según correspondencia, y en su defecto a los marcos normativos y de desarrollo software establecidos por la Junta de Andalucía, debiendo ser puesto de manifiesto ante la STIC.
La STIC se reserva el derecho a la modificación de la norma sin previo aviso, tras lo cual, notificará del cambio a los actores implicados para su adopción inmediata según la planificación de cada proyecto.
En el caso de que algún actor considere conveniente y/o necesario el incumplimiento de alguna de las normas y/o recomendaciones, deberá aportar previamente la correspondiente justificación fehaciente documentada de la solución alternativa propuesta, así como toda aquella documentación que le sea requerida por la STIC para proceder a su validación técnica.
Contacto Dpto: Oficina de Calidad
Los cambios en la normativa vendrán acompañados de un registro de las modificaciones. De este modo se podrá realizar un seguimiento y consultar su evolución.
La normativa que a continuación se detalla muestra la metodología a seguir para llevar a cabo las pruebas de carga del sistema sobre los diferentes aplicativos basados en los modelos de arquitectura tecnológica de referencia publicados en Confluence.
En la metodología se muestra el flujo genérico que se debe seguir para planificar y ejecutar correctamente las pruebas de carga del sistema desde el inicio del desarrollo hasta su validación.
De esta forma, se indican el conjunto de pruebas fundamentales necesarias para garantizar el correcto funcionamiento y rendimiento, previo a la entrada a producción, de una nueva aplicación o de una evolución de un producto existente. Consta de los siguientes elementos:
Esta normativa se limita exclusivamente al proceso a seguir para la ejecución de pruebas de carga del sistema, no siendo responsabilidad de esta normativa el resto de flujos que intervienen en el proceso de creación de un nuevo software. Su propósito por tanto es que sirva de guía para el usuario que se encarga de gestionar o ejecutar las pruebas de carga del sistema, existiendo un documento adicional que hará de plantilla, siendo dicha plantilla el documento que realmente deberán entregar a la STIC los proveedores de los aplicativos con los resultados de las pruebas obtenidas.
A continuación, se indican los actores partícipes en la metodología y su etiqueta que determina el liderazgo en cada proceso de la metodología:
ACTOR | ETIQUETA |
JEFE DE PROYECTO | NARANJA |
GOBERNANZA | VERDE |
SISTEMAS | ROJO |
PROVEEDOR | MORADO |
SISTEMAS / PROVEEDOR | AZUL |
Es importante tener muy en cuenta las pruebas de carga de nuestros sistemas de información desde una fase temprana del desarrollo, estando seguros de los requisitos de rendimiento necesarios para la aceptación del producto por parte del SAS, y reservando el espacio de tiempo oportuno para poder llevar a cabo correctamente el conjunto de pruebas del sistema.
La responsabilidad de la coordinación del proceso de pruebas será labor de la OCA actuando como intermediario entre el proveedor de desarrollo, Sistemas y las diferentes áreas técnicas y de gestión de la STIC.
En el siguiente diagrama se puede ver una foto global del procedimiento a seguir para la planificación y ejecución de pruebas de sistemas sobre un sistema de información:
Las actividades descritas en este flujo son:
Uno de los aspectos más importante a la hora de plantear unas pruebas de carga del sistema es hacer un buen diseño de las pruebas a realizar, ya que estas deben ser representativas de la situación real del producto, esto es:
Como un aspecto fundamental a la hora de diseñar un plan de pruebas de carga del sistema, debemos tener en cuenta los distintos tipos de pruebas necesarios para llevar a cabo el ciclo de pruebas completo. Por ello, en la siguiente captura se muestra una plantilla a modo de ejemplo con los ítems que deben ser recogidos en la planificación de cualquier producto que vaya a realizar pruebas de carga.
Para iniciar el proceso de lanzamiento de pruebas de carga del sistema será necesario enviar correo electrónico a l-pruebasderendimiento.stic.sspa@juntadeandalucia.es con la siguiente información:
El correo se debe enviar con al menos un mes de antelación a la fecha prevista de inicio de las pruebas.
Una vez el Área de Gobernanza reciba la solicitud de ejecución de pruebas de rendimiento y estudie su viabilidad, realizará petición CGES a CTI para la asignación de las máquinas lanzadoras a los proveedores para así ejercer el control de la asignación de éstas durante todo el periodo de pruebas. Esta asignación será por un periodo de tiempo determinado y de manera nominal (preferiblemente del usuario que vaya a realizar las pruebas) y será informado mediante correo electrónico al proveedor encargado de realizar las pruebas. (Calendario)
La solicitud CGES contendrá la siguiente información:
A continuación se muestra un diagrama con el flujo a seguir de dicha petición CGES:
Si por algún motivo justificado fuese necesaria una prórroga del tiempo establecido inicialmente en la petición CGES, el usuario encargado de realizar las pruebas y que tiene asignadas las máquinas lanzadoras deberá solicitar mediante un correo electrónico a "l-pruebasderendimiento.stic.sspa@juntadeandalucia.es" una ampliación del tiempo de asignación. Dicha solicitud de prórroga será tramitada por la OCA según el flujo anterior, informando al ejecutor de las pruebas sobre la resolución de la misma.
Una vez finalizado el periodo de asignación de las máquinas lanzadoras y tras confirmación por parte del proveedor que las pruebas han finalizado, la OCA devolverá la petición CGES a CTI para que proceda a la desasignación de las mismas:
Todas las máquinas se encuentran alojadas en el entorno de preproducción.
El usuario que realiza las pruebas no tendrá en ningún momento permisos de administración sobre las máquinas lanzadoras.
En caso de ser necesario el reinicio de las máquinas lanzadoras, el proveedor generará una petición CGES la cual será asignada a CTI para que resuelva lo antes posible dicha petición y no produzca ninguna demora en la realización de las pruebas. Dicha petición CGES debe ser informada mediante correo electrónico a la lista l-pruebasderendimiento.stic.sspa@juntadeandalucia.es
Los prerrequisitos son los elementos necesarios para una correcta ejecución de las pruebas. Es un proceso iterativo hasta que todos los actores acuerden los mismos y sean aceptados por la STIC.
Aunque no todo el conjunto de prerrequisitos dependen exclusivamente del proveedor, si será responsabilidad del proveedor las tareas de gestión necesarias para desbloquear los posibles impedimentos que pueda encontrarse al iniciar el proceso de pruebas del sistema.
En la siguiente tabla se muestra el conjunto de prerrequisitos que el proveedor deberá validar y marcar como revisado. En el caso de no poder validar algunos de los requisitos deberá contactar con el coordinador de las pruebas:
REQUISITO | DESCRIPCIÓN | RESPONSABLE |
Construcción del entorno | El entorno objetivo para la ejecución de las pruebas. Habitualmente el entorno de PREPRODUCCIÓN | SISTEMAS |
Despliegue inicial del aplicativo | Los aplicativos receptores de las pruebas deben estar desplegados y los elementos de sistema necesarios de los que depende (JMS, Datasources, Vistas Materializadas, etc.) | SISTEMAS |
Monitorización del entorno | Los elementos constituyentes del entorno deben presentar la monitorización necesaria para la obtención de métricas de sistema. Esto incluye SCOM (BeanSpy), grabaciones de JVM y estadísticas de BD. | SISTEMAS |
Validación de la aplicación o aplicaciones desplegadas | El proveedor tiene que validar el aplicativo o aplicativos desplegados en el entorno objetivo. | PROVEEDOR |
Indicadores de negocio | Métricas que determinan la productividad de la aplicación o aplicaciones a probar. | PROVEEDOR / SISTEMAS |
Conjunto inicial de datos | El entorno objetivo debe presentar los datos para las pruebas. Habitualmente se implementa con la importación de datos desde producción y su enmascarado. El procedimiento debe ser definido por el PROVEEDOR y ejecutado por Sistemas. | PROVEEDOR / SISTEMAS |
Herramienta lanzadora | JMETER instalado y disponible para que el proveedor pueda ejecutar las pruebas. | SISTEMAS |
Conjunto de casos de usos | Paquetes que implementan los casos de usos protagonistas en las pruebas. Paquete a cargar en JMETER. (Ver Anexo I) | PROVEEDOR / STIC |
Usuarios nominativos | Creación de usuarios nominativos (solo lectura) para los servidores (p. ej. WebLogic) y la base de datos (p. ej. Oracle). El PROVEEDOR debe indicar los usuarios necesarios. | SISTEMAS |
Acceso a entorno objetivo | Los participantes del PROVEEDOR deben tener acceso al entorno objetivo. El PROVEEDOR debe indicar el mapa de comunicación necesario. | SISTEMAS |
Configuración de réplica de sesiones | Si el entorno objetivo consta de clúster es necesaria la réplica de sesiones para garantizar la alta disponibilidad | PROVEEDOR |
Ausencia de conflictos de clases | Un despliegue con conflictos de clases genera incertidumbre en las pruebas. En cada momento la versión de librerías utilizadas puede no ser la adecuada. Ejecución de informe Class Loader Analysis Tool (CAT) con 0 | PROVEEDOR / SISTEMAS |
Las pruebas de comunicación son necesarias para que el PROVEEDOR pueda interactuar con el entorno y pueda probar las comunicaciones necesarias para las pruebas. Es un proceso iterativo hasta que el PROVEEDOR considere necesario.
Es importante no confundir con las comunicaciones entre aplicativos que los sistemas podrían realizar, estas pruebas se refieren SOLO a las pruebas que el proveedor necesita realizar para poder acceder a la herramienta y poder así hacer un seguimiento de las pruebas de carga realizadas.
La siguiente tabla muestra el listado de comprobaciones realizadas:
[Ejemplo. Reemplazar por tabla real]
SISTEMA | COMPONENTE | ACEPTACIÓN |
CITACIÓN | WEB | ¿ |
CITACIÓN | BASE DE DATOS | ¿ |
PRESCRIPCIÓN | WEB | ¿ |
¿ |
En este proceso se recogen las tareas necesarias para poder reproducir el entorno original antes de cualquier prueba de carga. El responsable de ejecutar las tareas de este proceso es Sistemas, pero será responsabilidad del PROVEEDOR el definir los pasos que necesita ejecutar para la restauración del entorno.
Las tareas son las siguientes:
TAREA | DESCRIPCIÓN | RESPONSABLE | ACEPTACIÓN |
Copia de seguridad en frío de los servidores | Copia de seguridad de todos los servidores del entorno objetivo. Lo habitual es que los servidores sean independientes del negocio y no requieran su restauración. El backup puede ser por NetBackup o a través de Hyper-V | SISTEMAS | ¿ |
Copia de seguridad de la base de datos | Backup RMAN de la base de datos del entorno objetivo. Si la base de datos está sin archivado será un backup offline. | SISTEMAS | ¿ |
Snapshot de los volúmenes de la base de datos | Snapshot a nivel de Veritas de los volúmenes de la base de datos. | SISTEMAS | ¿ |
Creación de procedimiento | Definición del procedimiento de restauración del entorno entre pruebas. Será necesaria una prueba de este procedimiento. (Este proceso lo definirá el proveedor, pudiendo ir desde una restauración de un backup hasta la ejecución de unos scripts que sitúe el sistema en una situación válida para lanzar un nuevo ciclo de pruebas) | PROVEEDOR | ¿ |
[En caso de necesitar tareas adicionales, estas deben ser indicadas aquí
Ejemplo: Si la prueba va a generar cambios en otras aplicaciones, se debe hacer backup de esa otra aplicación para poder restaurarla en caso de ser necesario.]
Uno de los primeros pasos a realizar a la hora de abordar un conjunto de pruebas de carga de un sistema es identificar correctamente el conjunto de pruebas y métricas, de forma que sea lo suficientemente representativas para reflejar fielmente el funcionamiento del sistema ante una elevada carga de usuarios.
Por ello, uno de los requisitos obligatorios será que el nuevo desarrollo sea capaz de soportar la carga de usuarios a los que deberá dar servicio. Los umbrales a superar serán:
Se proponen dos conjuntos de posibles métricas a realizar dependiendo del tipo de prueba a realizar, definiendo en función del caso un conjunto de métricas básicas a medir.
Las métricas básicas se refieren al conjunto de métricas dirigidas a medir los tiempos de respuestas y buen funcionamiento del sistema. Estas métricas deben ser medidas en las diferentes tipos de pruebas que se proponen en el presente documento, debiéndose incluir en el informe final generado los resultados obtenidos en las mediciones de cada una de las pruebas.
IMPORTANTE: Es especialmente importante destacar la necesidad de diseñar indicadores de negocio específicos de cada aplicación y que serán de utilidad para conocer el buen funcionamiento del sistema y la validez de las pruebas (Por ejemplo, si estamos probando un sistema en el que sabemos que en producción se crean 1000 episodios por hora, y nuestro indicativo de "Episodios creados por hora" nos da un resultado de 100 episodios, sabemos que los resultados no son correctos, puesto que no está simulando una situación real.
Las pruebas de carga del sistema orientadas a testear herramientas que principalmente ofrecen servicios web mediante API (Como por ejemplo es Maco, Estructura o BDU) deben ir dirigidas a testear cada servicio web que se ofrece.
Este tipo de servicios se caracterizan por ser rápidos, ágiles y concretos, dedicándose a un conjunto reducido de funcionalidades específicas y obteniendo tiempos de respuesta reducidos, por lo que las exigencias en cuanto a requisitos de respuesta son mayores que el caso de aplicaciones web.
Para este tipo de aplicaciones se propone medir las siguientes métricas básicas:
Para REST:
MÉTRICA | PROPORCIONADO POR | Valor esperado(*) |
Indicador de negocio 1 cada 10 mins | Monitorización | A definir |
Indicador de negocio 2 cada 10 mins | Monitorización | A definir |
¿ | Monitorización | A definir |
Indicador de negocio n cada 10 mins | Monitorización | A definir |
Tiempo medio de respuesta por cada llamada a la API de servicios | Herramienta lanzadora | < 300ms |
Tiempo de respuesta del percentil 90 por cada llamada a la API de servicios | Herramienta lanzadora | < 600ms |
Otras mediciones básicas dependiendo del caso de uso | N/A | A definir |
Para Soap:
MÉTRICA | PROPORCIONADO POR | Valor esperado(*) |
Indicador de negocio 1 cada 10 mins | Monitorización | A definir |
Indicador de negocio 2 cada 10 mins | Monitorización | A definir |
¿ | Monitorización | A definir |
Indicador de negocio n cada 10 mins | Monitorización | A definir |
Tiempo medio de respuesta por cada llamada a un servicio Asíncrono | Herramienta lanzadora | < 500ms |
Tiempo medio de respuesta por cada llamada a un servicio Síncrono | Herramienta lanzadora | < 1seg |
Tiempo de respuesta del percentil 90 por cada llamada a un servicio Síncrono | Herramienta lanzadora | < 2seg |
Otras mediciones básicas dependiendo del caso de uso | N/A | A definir |
(*): Es importante tener en cuenta que los valores marcados en la presente tabla como valores objetivos se refiere al conjunto de peticiones REST o Soap de operaciones sobre datos "típicas". Si la aplicación a testear cuenta con alguna funcionalidad específica de la que se espere un tiempo de respuesta mayor, debe indicarse en la siguiente tabla, aportando en cada caso una justificación de porqué se espera un tiempo de respuesta mayor al indicado como referencia en este documento:
Petición | Valor esperado | Justificación |
(Ejemplo) /MiAplicacion/autenticación/login | < 2seg | El proceso de autenticación depende de múltiples servicios externos, cuyos tiempos de respuesta están en torno a 1 segundo. |
Las aplicaciones web se suelen caracterizar por contar con una división entre la capa visual y otras capas que gestionan el negocio de la aplicación. Los frameworks de desarrollo web ofrecen un conjunto de funcionalidades (gestión de la sesión, páginas cacheadas en servidor, etc.) que hacen que los tiempos de respuestas en peticiones web suelan ser superiores a las aplicaciones que ofrecen API de servicios.
En el caso de aplicaciones web, las peticiones al servidor suelen dar como resultado respuestas de mayor tamaño que las API de servicios, puesto que en la misma respuesta se debe ofrecer toda la información necesaria para representar visualmente el contenido (HTML).
Para este tipo de aplicaciones se propone medir las siguientes métricas básicas:
MÉTRICA | PROPORCIONADO POR | Valor esperado(*) |
Indicador de negocio 1 cada 10 mins | Monitorización | A definir |
Indicador de negocio 2 cada 10 mins | Monitorización | A definir |
¿ | Monitorización | A definir |
Indicador de negocio n cada 10 mins | Monitorización | A definir |
Tiempo medio de respuesta por cada llamada al servidor Web | Herramienta lanzadora | < 1seg |
Tiempo de respuesta del percentil 90 por cada llamada al servidor Web | Herramienta lanzadora | < 3seg |
Otras mediciones básicas dependiendo del caso de uso | N/A | A definir |
(*): Es importante tener en cuenta que los valores marcados en la presente tabla como valores objetivos se refiere al conjunto de peticiones de navegación típicas de cualquier aplicación web. Si la aplicación a testear cuenta con alguna funcionalidad específica de la que se espere un tiempo de respuesta mayor, debe indicarse en la siguiente tabla, aportando en cada caso una justificación de porqué se espera un tiempo de respuesta mayor al indicado como referencia en este documento:
Petición | Valor esperado | Justificación |
(Ejemplo) /MiAplicacion/listado.jsf | < 4seg | La pantalla de listados muestra resultados masivos, debiendo hacer consultas a base de datos de alto coste, por lo que los tiempos de respuesta estarán por encima de lo indicado como referencia. |
Este conjunto de métricas van destinadas a profundizar en el comportamiento del sistema desde un punto de vista de sistemas, donde se pretende analizar que los diferentes componentes internos que forman parte de la arquitectura del sistema (Servidor, bases de datos, conexiones, etc.) funcionan correctamente.
El resultado de las mediciones obtenidas debe analizarse en las diferentes pruebas, debiéndose incluir en este informe las anomalías que se encuentren en dicho análisis. Igualmente, el proveedor podrá incluir en cualquiera de las pruebas el resultado de una o varias de estas métricas si lo considera necesario para comprender el informe generado.
Las métricas establecidas para esta prueba son:
MÉTRICA | PROPORCIONADO POR |
Estado de los destinos JMS cada 10 mins | Monitorización |
Estado y consumo CPU de los hilos de instancia WebLogic/contenedor cada 5 mins | Thread dumps de JVM |
Consumo medio de CPU de instancia WebLogic/contenedor cada 10 mins | Grabación de JVM |
Consumo máximo de CPU de instancia WebLogic/contenedor cada 10 mins | Grabación de JVM |
Gráfico de consumo medio de Java Heap cada 10 mins | Grabación de JVM |
Conexiones activas media de orígenes de datos cada 10 minutos | Monitorización |
Conexiones activas máxima de orígenes de datos cada 10 minutos | Monitorización |
Fuga de conexiones de orígenes de datos cada 10 minutos | Monitorización |
Peticiones de conexiones de orígenes de datos en espera cada 10 minutos | Monitorización |
Top consultas por tiempo de ejecución cada 10 minutos | Estadísticas de base de datos |
Top consultas por lecturas de memoria cada 10 minutos | Estadísticas de base de datos |
Top consultas por lecturas físicas cada 10 minutos | Estadísticas de base de datos |
Top consultas por tiempo de clúster cada 10 minutos | Estadísticas de base de datos |
Load Profile cada 10 minutos | Estadísticas de base de datos |
Instance Efficiency cada 10 minutos | Estadísticas de base de datos |
E/S de Datafiles cada 10 minutos | Estadísticas de base de datos |
E/S de Segmentos cada 10 minutos | Estadísticas de base de datos |
Time Model cada 10 minutos | Estadísticas de base de datos |
Eventos de base de datos cada 10 minutos | Estadísticas de base de datos |
Gráfico con actividad de GC cada 10 minutos | Grabación de JVM |
Mensajería en servidor JMS cada 10 minutos | Monitorización |
Bytes en servidor JMS cada 10 minutos | Monitorización |
Tiempo de peticiones sobre WebLogic/servidor integrado | Access log format W3C Extended |
Evolución de los pooles de la memoria HEAP (TLAB) cada 10 minutos | Grabación de JVM |
Se trata de la ejecución de casos de uso conjuntos y con concurrencia escalable de usuarios y con incremento paulatino de forma iterativa en un escenario de duración determinada a petición del PROVEEDOR. Si se dispone de datos de carga (Volumetría) de un sistema preexistente, se recomienda que la duración del lanzamiento sea la misma para facilitar la comparación de los resultados obtenidos. Por ejemplo, si los datos de volumetría de los que se dispone vienen agrupados en periodos de una hora (accesos por hora), la duración de la ejecución debiera ser de una hora.
El objetivo de estas pruebas es buscar los parámetros de configuración adecuados para los lanzadores de pruebas (jMeter), realizándose una carga progresiva sobre los sistemas a probar en busca del punto de carga máximo sin degradar el servicio, es decir, sin dejar de cumplir los requisitos particulares del sistema y las métricas establecidas. De nuevo, para facilitar la comparación de los datos obtenidos, si los datos de volumetría de los que se dispone vienen expresados en base a una métrica (p. ej.: peticiones por segundo), los datos del punto de carga máximo deberían expresarse en la misma métrica. Con el objetivo de armonizar los resultados y, teniendo en cuenta la información que recopila JMeter en sus informes, se propone la Productividad (Transacciones/s) como métrica para la volumetría y el punto de carga máximo.
Debido a que los niveles de concurrencia encontrados en estas pruebas serán la base para las siguientes pruebas, una vez encontrado el punto máximo de carga sobre un sistema, es necesario ejecutar el plan de pruebas una segunda vez para confirmar que los datos observados son correctos.
La iteración del proceso dependerá de la autorización de la STIC, los problemas encontrados que necesiten algún ajuste, o que el PROVEEDOR no haya encontrado aún los niveles de concurrencia.
[El presente apartado se muestra únicamente a modo de ejemplo, debiendo ser cumplimentado al COMPLETO por el PROVEEDOR con los resultados, tanto de métricas básicas como de métricas detalladas, obtenidos en sus pruebas de carga.]
La aplicación X tiene como requisito el tener que soportar una carga máxima de 200 usuarios concurrentes, por ello se ha configurado la herramienta lanzadora para generar 100 hilos por cada uno de los 2 casos de usos programados para ser lanzado.
Es necesaria una explicación clara de lo que indica cada tabla / gráfica, tanto por parte del proveedor, como de CTI, por lo que cada una de las tablas / gráficas, deberá venir customizada incluyendo una explicación de los datos que se están arrojando.
Tras la ejecución de la lanzadera durante 30 minutos, se ha obtenido un resultado estable de tiempos de respuestas que puede visualizarse en las siguientes gráficas (ordenada por tiempo medio de respuesta de mayor a menor):
Tras el lanzamiento de estas pruebas se realizan las siguientes comprobaciones:
Dados los datos obtenidos, se dan por válidas las pruebas de capacidad, pudiendo afrontar las siguientes pruebas definidas en el presente documento.
Se trata de la ejecución de casos de uso conjuntos y con concurrencia de hilos determinada por el PROVEEDOR de forma iterativa en un escenario de duración determinada por las pruebas de capacidad. El objetivo es observar el comportamiento del producto con diferentes niveles de concurrencia. Las pruebas de rendimiento son fundamentales.
La iteración del proceso dependerá de la autorización de la STIC y los problemas encontrados que necesiten algún ajuste y/u optimización del aplicativo o aplicativos.
Previo acuerdo con el PROVEEDOR y autorización de la STIC, los niveles de concurrencia recomendables serían los obtenidos por la prueba de capacidad. Lo habitual es que la prueba consista en tres iteraciones: una con el nivel de concurrencia máximo, otra con el nivel de concurrencia óptimo y una última con un nivel bajo.
En la siguiente tabla puede verse el conjunto de pruebas a realizar:
PRUEBA | CONCURRENCIA | DURACIÓN (HORAS) | JUSTIFICACIÓN |
Concurrencia alta | 80% de la concurrencia máxima determinada por las pruebas de capacidad | Determinado por el PROVEEDOR | Justificación de la duración establecida |
Concurrencia media | 60% de la concurrencia máxima determinada por las pruebas de capacidad | Determinado por el PROVEEDOR | Justificación de la duración establecida |
Concurrencia baja | 40% de la concurrencia máxima determinada por las pruebas de capacidad | Determinado por el PROVEEDOR | Justificación de la duración establecida |
[El presente apartado se muestra únicamente a modo de ejemplo, debiendo ser cumplimentado al COMPLETO por el PROVEEDOR con los resultados, tanto de métricas básicas como de métricas detalladas, obtenidos en sus pruebas de carga.]
Es necesaria una explicación clara de lo que indica cada tabla / gráfica, tanto por parte del proveedor, como de CTI, por lo que cada una de las tablas / gráficas, deberá venir customizada incluyendo una explicación de los datos que se están arrojando.
Partiendo de los niveles de concurrencia definidos en las pruebas de capacidad (200 hilos concurrentes), se definen las siguientes pruebas de rendimiento a realizar:
PRUEBA | CONCURRENCIA | DURACIÓN (HORAS) |
Concurrencia alta | 160 hilos | 1 |
Concurrencia media | 120 hilos | 1 |
Concurrencia baja | 80 hilos | 1 |
Obteniendo los siguientes resultados:
Concurrencia alta (160 hilos):
Concurrencia media (120 hilos):
Concurrencia baja (80 hilos):
Se aprecia una bajada importante de los tiempos de respuesta entre la concurrencia alta y la concurrencia media, lo cual nos hace ver que la concurrencia alta definida en las pruebas de capacidad está muy cerca del límite de los servidores actuales. Se recomienda asignar mayor cantidad de RAM a los servidores de weblogic, ya que el gráfico de carga muestra que se llegan a picos del 100%.
Se trata de la ejecución de casos de uso conjuntos y con concurrencia de hilos determinada por el PROVEEDOR y con máximos y mínimos locales determinados por el PROVEEDOR de forma iterativa en un escenario de duración determinada por el PROVEEDOR. La finalidad de estas pruebas es determinar la capacidad de recuperación del entorno frente a un período de carga superior a la máxima admitida.
La iteración del proceso dependerá de la autorización de la STIC y los problemas encontrados que necesiten algún ajuste y/u optimización del aplicativo o aplicativos.
Las pruebas deben ejecutarse de forma incremental, de forma que cada una de las pruebas que se muestran a continuación se deben lanzar sobre la anterior (Por ejemplo, se lanza el proceso inicial y se inicia la monitorización. A los 10 minutos se incrementa la carga, a los 20 se vuelve a incrementar, etc.):
PRUEBA | CONCURRENCIA | DURACIÓN (HORAS) |
Concurrencia inicial | Concurrencia aproximada al 80% del límite de la máquina (Determinado por las pruebas de capacidad) | Determinado por el PROVEEDOR |
Incremento 1: Situar la concurrencia al límite | Aumentar la concurrencia en un 20% | Determinado por el PROVEEDOR |
Incremento 2: Situar la concurrencia por encima del límite | Aumentar la concurrencia entre un 20% y un 40% | Determinado por el PROVEEDOR |
Decremento 1: Situar la concurrencia al límite | Reducir la concurrencia en un 20% | Determinado por el PROVEEDOR |
Decremento a nivel inicial | Dejar en nivel de concurrencia inicial | Determinado por el PROVEEDOR |
Desde un punto de vista teórico, al sobrepasar el límite admitido por el servidor, algunas peticiones deberían comenzar a fallar, obteniendo respuestas erróneas durante el periodo de carga superior al máximo obtenido. El objetivo de estas pruebas es observar cómo, después de haber estado durante un periodo de tiempo por encima del límite, la aplicación vuelve a su estado normal y las nuevas peticiones enviadas siguen funcionando correctamente.
Por ello, como resultado de este proceso se debe observar los resultados obtenidos ANTES y DESPUÉS de la ejecución de estas pruebas, para lo cual existen varias alternativas:
[El presente apartado se muestra únicamente a modo de ejemplo, debiendo ser cumplimentado al COMPLETO por el PROVEEDOR con los resultados, tanto de métricas básicas como de métricas detalladas, obtenidos en sus pruebas de carga.]
Es necesaria una explicación clara de lo que indica cada tabla / gráfica, tanto por parte del proveedor, como de CTI, por lo que cada una de las tablas / gráficas, deberá venir customizada incluyendo una explicación de los datos que se están arrojando.
Para la realización de estas pruebas se ha partido de la concurrencia definida en las pruebas de capacidad, realizándose las siguientes pruebas:
PRUEBA | CONCURRENCIA | DURACIÓN (HORAS) |
Concurrencia inicial | 160 hilos | 10 minutos* |
Incremento 1 | Aumentar la concurrencia en 200 hilos | 2 minutos* |
Incremento 2 | Aumentar la concurrencia en 240 hilos | 2 minutos* |
Incremento 3 | Aumentar la concurrencia en 260 hilos | 2 minutos* |
Decremento 1 | Aumentar la concurrencia en 200 hilos | 2 minutos* |
Decremento a nivel inicial | 160 hilos | Hasta final de grabación |
[(*): A modo de ejemplo se ha lanzado el test durante solo 10 minutos. Se recomienda que en un caso real se ejecute al menos 1 hora y se vayan realizando incrementos de concurrencia cada 10 o 20 minutos]
Ejecutadas las pruebas, se observa que a partir del primer incremento los tiempos de respuesta ya se elevan a valores no admisibles.
Esto nos lleva a pensar que, como se había mencionado anteriormente, la máquina ya estaba cerca de su límite máximo.
En la siguiente gráfica se muestra como se deterioran las peticiones con cada incremento de concurrencia:
En este caso concreto, el problema se debe a una limitación de la máquina en la que está desplegada Weblogic, ya que se está quedando sin memoria con demasiada facilidad:
Se trata de la ejecución de casos de uso conjuntos y con concurrencia de usuarios determinada por el PROVEEDOR, normalmente medio/bajo, de forma iterativa en un escenario de larga duración determinada por el PROVEEDOR. Estas pruebas determinan la degradación del servicio y el ciclo de vida de las instancias de WebLogic/réplicas del servicio y las instancias de bases de datos.
La iteración del proceso dependerá de la autorización de la STIC y los problemas encontrados que necesiten algún ajuste y/u optimización del aplicativo o aplicativos.
A modo general, se propone lanzar estas pruebas con un 40% del nivel de concurrencia máximo determinado en las pruebas de capacidad durante al menos 48 horas (siendo el PROVEEDOR quien determine el periodo exacto que ve más apropiado).
[El presente apartado se muestra únicamente a modo de ejemplo, debiendo ser cumplimentado al COMPLETO por el PROVEEDOR con los resultados, tanto de métricas básicas como de métricas detalladas, obtenidos en sus pruebas de carga.]
Es necesaria una explicación clara de lo que indica cada tabla / gráfica, tanto por parte del proveedor, como de CTI, por lo que cada una de las tablas / gráficas, deberá venir customizada incluyendo una explicación de los datos que se están arrojando.
Tras ejecutar todos los casos de pruebas durante 48 horas con un nivel de concurrencia definido durante las pruebas de capacidad (200 hilos) se obtienen los siguientes resultados:
Prueba ejecutada entre el 26/12/2017 08:00 y el 28/12/2017 08:00
Se trata de pruebas sostenidas pero dirigidas por Sistemas y con soporte del PROVEEDOR en el lanzamiento. La idea subyacente es la de realizar operativas sobre las instancias de WebLogic/réplicas del servicio e instancias de bases de datos correspondiente al entorno objetivo, ya sean administrativas o no, y estudiar el comportamiento de los casos de uso e indicadores de negocio.
La duración de la prueba estará acotada por lo acordado con la STIC y el tiempo disponible al tratarse de las pruebas realizadas en último lugar.
La iteración del proceso dependerá de la autorización de la STIC y los problemas encontrados que necesiten algún ajuste y/u optimización del aplicativo o aplicativos.
El diseño de las pruebas se muestra en la siguiente tabla:
PRUEBA | CONCURRENCIA | DURACIÓN (HORAS) | FUNCIONAMIENTO ESPERADO |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia 1 de WebLogic o réplica 1 del servicio | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia 2 de WebLogic o réplica 2 del servicio | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
... | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia n de WebLogic o réplica n del servicio | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia 1 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia 2 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
¿ | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia n de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia 1 de WebLogic o réplica 1 del servicio | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia 2 de WebLogic o réplica 2 del servicio | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
... | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia n de WebLogic o réplica n del servicio | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia 1 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia 2 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
¿ | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia n de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia 1 de WebLogic o réplica 1 del servicio e instancia 1 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia 2 de WebLogic o réplica 2 del servicio e instancia 2 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
... | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada administrativa de la instancia n de WebLogic o réplica n del servicio e instancia n de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia 1 de WebLogic o réplica 1 del servicio e instancia 1 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia 2 de WebLogic o réplica 2 del servicio e instancia 2 de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
... | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con parada inesperada de la instancia n de WebLogic o réplica n del servicio e instancia n de base de datos | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con failover de base de datos si es Single Instance | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
Ejecución de prueba sostenida sobre vip con switchover de base de datos si es Single Instance | Nivel de concurrencia óptima | Por determinar Sistemas | Por determinar por el PROVEEDOR |
En el presente apartado se hace un resumen de los resultados obtenidos, su interpretación y si los resultados obtenidos cubren las necesidades definidas en los requisitos. Los resultados deben satisfacer las necesidades definidas, por lo que la información que se refleje en las conclusiones Capacidad máxima, Margen actual y Nodos recomendados deberá mostrar de forma clara que la aplicación, junto con los recursos hardware recomendados, será capaz de cubrir la carga definida en los requisitos a partir de las necesidades detectadas en Volumetría . Por ello, será necesario que los resultados obtenidos en los análisis y las necesidades definidas sean comparables. Idealmente, el caso de uso que se haya utilizado como fuente de información para la Volumetría debería formar parte de los Casos de Uso del plan de pruebas o que este contenga algún caso de uso lo más similar posible (Número de peticiones, peticiones de complejidad similar, similar proporción de peticiones a servicios externos, etc.)
Aunque la cumplimentación de este apartado es responsabilidad del PROVEEDOR, los datos aquí expuestos deben ser acordados con los diferentes grupos de la STIC dependiendo del caso (Sistemas, Arquitectura, Interoperabilidad, etc.).
En estas conclusiones se deben aportar al menos los siguientes datos, teniendo en cuenta que se refieren en cada momento a la infraestructura actual existente:
CONCLUSIÓN | DESCRIPCIÓN | TIPO |
Capacidad máxima | Número de hilos por nodo que se estima como máximo antes de empezar a deteriorarse el servicio. | Obligatorio |
Margen actual | Margen existente en la actualidad con la infraestructura existente (Comparando con la estimación de usuarios activos actualmente en producción. En el caso de que se trate de una nueva aplicación que aún no está en producción la comparación se realizará con la estimación realizada al comienzo del desarrollo de la pruebas). | Obligatorio |
Nodos recomendados | Dada la capacidad por nodo existente, así como una previsión de usuarios del sistema. Qué estimación de nodos se aconseja ideal para ofrecer un buen servicio. | Obligatorio |
Incidentes | Registro de incidentes y soluciones encontradas durante las pruebas en el caso de haberse producido. | Opcional |
Mejoras detectadas | En caso de que proceda, se mostrarán también el conjunto de mejoras detectadas tanto en el software probado como en la infraestructura hardware y que se estima que mejorará el rendimiento del sistema. | Opcional |
[A partir de este punto la información mostrada es únicamente a modo de ejemplo, debiendo ser cumplimentado al completo por el PROVEEDOR con los resultados obtenidos durante sus pruebas]
Dados los resultados de las pruebas realizadas, podemos aportar la siguiente información:
Adicionalmente, se desea destacar las siguientes conclusiones extraídas de los resultados obtenidos:
Finalmente, con la información recogida a lo largo del proceso de pruebas de carga del sistema, junto a la experiencia del proveedor como conocedor del producto a nivel técnico, el PROVEEDOR establece que las pruebas han sido:
CONCLUSIÓN | JUSTIFICACIÓN |
¿ FAVORABLE | [Razón por la que el PROVEEDOR en el momento de la entrega del informe, considera que la aplicación SI es apta para su puesta en producción] |
¿ NO FAVORABLE | [Razón por la que el PROVEEDOR considera que la aplicación NO es apta para su puesta en producción] |
CONCLUSIÓN | JUSTIFICACIÓN |
¿ FAVORABLE | [Razón por la que el CTI en el momento de la entrega del informe, considera que la aplicación SI es apta para su puesta en producción] |
¿ NO FAVORABLE | [Razón por la que el CTI considera que la aplicación NO es apta para su puesta en producción] |
CONCLUSIÓN | JUSTIFICACIÓN |
¿ FAVORABLE | [Razón por la que el GOBERNANZA en el momento de la entrega del informe, considera que la aplicación SI es apta para su puesta en producción] |
¿ NO FAVORABLE | [Razón por la que el GOBERNANZA considera que la aplicación NO es apta para su puesta en producción] |
El documento debe finalizar con las conclusiones globales por parte del proveedor y CTI, indicando si del resultado de las pruebas realizadas se desprende que la aplicación es apta o no para su puesta en producción.
Posteriormente el Área de Gobernanza revisará toda la información entregada emitiendo también sus conlusiones.
Una vez finalizadas las pruebas se entregará tanto el plan de pruebas con los resultados obtenidos, como cualquier información, documentación y artefactos que se haya utilizado en la realización de las mismas. El Área de Gobernanza revisará y dará como FAVORABLE o planteará una serie de objeciones al plan de pruebas una vez se le informe de la disponibilidad del informe del plan de pruebas.
Con respecto al plan de pruebas, se entregará en Confluence y deberá contener toda la información de las pruebas realizadas y resultados obtenidos siguiendo las indicaciones que aparecen en el Anexo III: Plantilla PPS de este documento.
En el apartado Entregables del PPS deberán adjuntarse la exportación de los informes HTML (https://jmeter.apache.org/usermanual/generating-dashboard.html) obtenidos en las pruebas:
Los archivos relacionados con las pruebas de carga del sistema se entregarán a través de Git, siguiendo un versionado específico y organizanándose de acuerdo a los siguientes criterios:
Estos directorios se creará en el repositorio del proyecto no siendo necesaria su entrega previa a la versión.
Contenido, se entregará:
El objetivo de las pruebas de carga del sistema es garantizar el comportamiento de la aplicación en su puesta en producción evitando caídas del sistema, lentitud, etc. Por ello, resulta necesario establecer la carga del sistema en producción y simular el comportamiento de la aplicación en dichas circunstancias. En sistemas que ya se encuentren en producción, preferentemente se utilizará el pico de carga del sistema del que se conserven registros. En caso de que el sistema no se encuentre en producción o no se conserven registros, se deberá establecer una estimación razonada de la carga que deberá soportar el sistema.
Como norma general, el caso de uso que origine el pico de carga identificado en Volumetría debe formar parte de los Casos de Uso del plan de pruebas. En su defecto, el plan de pruebas deberá contener algún caso de uso lo más similar posible (Número de peticiones, peticiones de complejidad similar, similar proporción de peticiones a servicios externos, etc.)
Preferentemente, las métricas a utilizar en Volumetría vendrán expresadas en términos que permitan una correspondencia con los resultados que proporciona la herramienta utilizada (JMeter) en sus informes. Con caracter general, se recomienda utilizar Productividad (Transacciones/s) como unidad de medida realizando la conversion de la información de carga máxima de la que se disponga a esta unidad de medida.
El conjunto de casos de usos debe ser acordado entre el proveedor y la STIC a través de los responsables funcionales de la aplicación.
A continuación se muestra un ejemplo de casos de uso a probar:
ID | CASO DE USO | DESCRIPCIÓN |
CU-001 | Modificar concepto |
|
CU-002 | Listar formularios |
|
En la descripción se incluirá la serie de actividades/pasos a realizar para llevar a cabo el proceso. Normalmente, cada actividad/paso coincidirá con alguna de las peticiones que proporciona la funcionalidad propia de la aplicación.
Siguiendo la estrategia de migración a Confluence adoptada por la STIC, se ha creado una plantilla en dicha herramienta con el fin de abandonar el documento que se utilizaba hasta ahora.
El informe se ubicará en el espacio del proyecto correspondiente, en el apartado "versiones", dentro de la versión sobre la que se hayan ejecutado las pruebas.
Una vez situados en el lugar en el que queremos generar el informe, sólo tenemos que crearlo utilizando la plantilla llamada "Plan de pruebas de carga del sistema".
Si surgiese alguna cuestión al respecto, la Oficina de Calidad está siempre dispuesta a resolver cualquier duda que surja.
A continuación se presentan los puntos de revisión que se aplicarán al documento PPS entregado:
Tipo | Código | PPS/Normativa | Descripción |
Definición de pruebas | PPS-OBJ-01 | Objeto | En el objeto del documento debe aparecer la aplicación y la versión sobre la que se van a realizar las pruebas |
Definición de pruebas | PPS-ACT-01 | Actores | Deben aparecer al menos los actores y roles indicados en normativa |
Definición de pruebas | PPS-DIS-001 | Diseño del plan de pruebas | Se deben identificar los casos de usos más representativos del sistema, aquellos usados con más frecuencia así como los casos de uso de nueva incorporación. Los casos de uso deben contener al menos la siguiente información: identificador, descripción y secuencia de pasos |
Definición de pruebas | PPS-DIS-002 | Diseño del plan de pruebas | Es imprescindible simular una volumetría semejante a la que se espera recibir en producción, ya que simular una carga muy diferente (ya sea por encima o por debajo) no será representativo del estrés real que sufrirá la aplicación, haciendo que las pruebas realizadas no sean representativas. |
Definición de pruebas | PPS-DIS-003 | Diseño del plan de pruebas | Se debe indicar la herramienta con la que se lanzarán las pruebas. |
Definición de pruebas | PPS-DIS-004 | Diseño del plan de pruebas | En la medida de lo posible, se debe añadir en las herramientas de pruebas aquellos controles necesarios para validar que el resultado obtenido en cada petición es el esperado (Por ejemplo, aserciones en jMeter). En el caso de no poder establecer los controles necesarios para validar el resultado obtenido se debe justificar el motivo. |
Definición de pruebas | PPS-DIS-005 | Diseño del plan de pruebas | Se debe indicar si las pruebas se realizan conectadas o desconectadas junto con su justificación. |
Definición de pruebas | PPS-PLA-001 | Planificación | En la planificación debe aparecer desglosado los distintos tipos de pruebas necesarios para llevar a cabo el ciclo de pruebas completo. |
Definición de pruebas | PPS-PLA-002 | Planificación | Aunque las realice CTI esta planificación debe añadirse a la estimación global. En el caso de que no sea necesario realizar este tipo de pruebas se debe incluir la justificación oportuna. |
Definición de pruebas | PPS-PLA-003 | Planificación | Se revisará que no haya solape entre las fechas y que los tiempos de realización sean acordes a la duración de cada prueba individual. |
Previo ejecución | PPS-PRE-001 | Prerrequisitos | Se revisará que la tabla la información de: check, resultado y descripción. |
Previo ejecución | PPS-PRE-002 | Prerrequisitos | En el caso de marcar "No Verificado" se deben indicar cuales son los requisitos que no se han podido verificar y el motivo. Esta opción se marcará cuando no sea posible realizar las pruebas debido a que no se cumpla alguno de los prerrequisitos |
Previo ejecución | PPS-PRE-003 | Prerrequisitos | En el caso de marcar "Verificado parcialmente" se deben indicar cuales son los requisitos que no se han podido verificar y el motivo. Esta opción se marcará cuando algunos prerrequisitos no han podido ser validados, pero se obtiene el visto bueno por parte del Jefe de Proyecto STIC para continuar con las pruebas de carga |
Previo ejecución | PPS-PRE-004 | Prerrequisitos | Se deben incluir todos los prerrequisitos adicionales en su tabla correspondiente completando todos los campos |
Previo ejecución | PPS-COM-001 | Pruebas de comunicación | Se revisará que la tabla contenga la información: sistema, componente y aceptación. Las pruebas de comunicación se refieren SOLO a las pruebas que el proveedor necesita realizar para poder acceder a la herramienta y poder así, hacer un seguimiento de las pruebas de carga realizadas. No se trata de pruebas que se realizan entre aplicativos. |
Previo ejecución | PPS-LBA-001 | Línea base del entorno | En caso afirmativa se debe incluir una tabla con la siguiente información: tarea, descripción, responsable y aceptación. En caso negativo se debe justificar el motivo por el cual no es necesario restaurar el entorno. |
Definición de pruebas | PPS-MET-001 | Métricas | Se deben incluir el conjunto de métricas básicas dirigidas a medir los tiempos de respuestas y buen funcionamiento del sistema. Las métricas NO deben definirse a posteriori, es decir, después de haber finalizado las pruebas sino antes de realizarlas. |
Definición de pruebas | PPS-MET-002 | Métricas | Se deben incluir indicadores de negocio específicos de cada aplicación y que sean de utilidad para conocer el buen funcionamiento del sistema y la validez de las pruebas. Se refieren a los casos de uso más representativos de la aplicación y al número de usuarios que la aplicación debe soportar. Para el caso de aplicaciones que ya se encuentran en producción las métricas suelen ser fácilmente extraibles de este entorno. Para el caso de nuevas aplicaciones las métricas son más difíciles de extraer, pero el proveedor debe encontrar la manera de definir un mínimo antes del comienzo del desarrollo de las pruebas. Los indicadores de negocio NO deben definirse a posteriori, es decir, después de haber finalizado las pruebas sino antes de realizarlas. |
Definición de pruebas | PPS-MET-003 | Métricas | Se debe incluir la siguiente información: petición/funcionalidad, valor esperado y justificación. Esta información NO debe definirse a posteriori, es decir, después de haber finalizado las pruebas sino antes de realizarlas |
Definición de pruebas | PPS-MET-004 | Métricas | En caso negativo se debe indicar la justificación oportuna. En caso positivo hay que incluir la siguiente información: métrica, herramienta que proporciona el valor y valor esperado. Estas métricas NO debe definirse a posteriori, es decir, después de haber finalizado las pruebas sino antes de realizarlas |
Informe resultados | PPS-CAP-001 | Pruebas de capacidad | En base a la volumetría definida es conveniente mencionar en este apartado el requisito concreto que se persigue abordar con las pruebas de carga. |
Informe resultados | PPS-CAP-002 | Pruebas de capacidad | Se debe indicar tanto la duración de la prueba como la justificación de la duración establecida. |
Informe resultados | PPS-CAP-003 | Pruebas de capacidad | El objetivo de una prueba de capacidad es obtener punto de carga máximo sin degradar la aplicación. |
Informe resultados | PPS-CAP-004 | Pruebas de capacidad | El proveedor debe justificar su conclusión sobre el número máximo de hilos que soporta la aplicación sin degradarse, para ello se puede basar en los datos aportados por las herramientas lanzadoras de las pruebas. |
Informe resultados | PPS-CAP-005 | Pruebas de capacidad | Para productos que están en producción se establece este porcentaje (25%) para la realización de las pruebas de capacidad. Para los productos que no estén en producción también se establecerá el 25% superior a la estimación inicial realizada por el proveedor. |
Informe resultados | PPS-CAP-006 | Pruebas de capacidad | Al menos se debe mostrar la siguiente información: Tabla (peticiones, ejecuciones y tiempos de respuesta), consumo de CPU y memoria al empezar la prueba, durante y al finalizarla. |
Informe resultados | PPS-CAP-007 | Pruebas de capacidad | El proveedor debe indicar las comprobaciones que ha realizado tras la ejecución de las pruebas y el análisis de los resultados obtenidos. |
Informe resultados | PPS-CAP-008 | Pruebas de capacidad | El proveedor debe indicar si el resultado de la prueba ha sido satisfactoria o no. En ambos casos debe dar los argumentos en los que se basa su decisión. |
Informe resultados | PPS-REN-001 | Pruebas de rendimiento | Los niveles de concurrencia deben ser los siguientes: Concurrencia alta: 80% de la concurrencia máxima determinada por las pruebas de capacidad Concurrencia media: 60% de la concurrencia máxima determinada por las pruebas de capacidad Concurrencia baja: 40% de la concurrencia máxima determinada por las pruebas de capacidad. Por cada nivel de concurrencia se debe indicar la siguiente información: prueba, concurrencia, duración, justificación de la duración |
Informe resultados | PPS-REN-002 | Pruebas de rendimiento | Al menos se debe mostrar la siguiente información para cada uno de los niveles de concurrencia: Tabla (peticiones, ejecuciones y tiempos de respuesta), consumo de CPU y memoria al empezar la prueba, durante y al finalizarla. |
Informe resultados | PPS-REN-003 | Pruebas de rendimiento | El proveedor debe indicar las comprobaciones que ha realizado tras la ejecución de las pruebas y el análisis de los resultados obtenidos. |
Informe resultados | PPS-REN-004 | Pruebas de rendimiento | El proveedor debe indicar si el resultado de la prueba ha sido satisfactoria o no. En ambos casos debe dar los argumentos en los que se basa su decisión. |
Informe resultados | PPS-EST-001 | Pruebas de estrés | Los niveles de concurrencia deben ser los siguientes: Concurrencia inicial: 80% de la concurrencia máxima determinada por las pruebas de capacidad Incremento 1: aumentar la concurrencia en un 20% Incremento 2: aumentar la concurrencia entre un 20% y un 40% Decremento 1: reducir la concurrencia en un 20% Decremento 2: reducir la concurrencia hasta el nivel inicial Por cada nivel de concurrencia se debe indicar la siguiente información: prueba, concurrencia, duración, justificación de la duración |
Informe resultados | PPS-EST-002 | Pruebas de estrés | Al menos se debe mostrar la siguiente información para cada uno de los niveles de concurrencia: Tabla (peticiones, ejecuciones y tiempos de respuesta), consumo de CPU y memoria al empezar la prueba, durante y al finalizarla. |
Informe resultados | PPS-EST-003 | Pruebas de estrés | El proveedor debe indicar las comprobaciones que ha realizado tras la ejecución de las pruebas y el análisis de los resultados obtenidos. |
Informe resultados | PPS-EST-004 | Pruebas de estrés | El proveedor debe indicar si el resultado de la prueba ha sido satisfactoria o no. En ambos casos debe dar los argumentos en los que se basa su decisión. |
Informe resultados | PPS-SOS-001 | Pruebas sostenidas | El nivel de concurrencia debe ser el 40% de la concurrencia máxima determinada por las pruebas de capacidad. Por cada nivel de concurrencia se debe indicar la siguiente información: prueba, concurrencia, duración, justificación de la duración |
Informe resultados | PPS-SOS-002 | Pruebas sostenidas | Se debe indicar tanto la duración de la prueba como la justificación de la duración establecida. |
Informe resultados | PPS-SOS-003 | Pruebas sostenidas | Al menos se debe mostrar la siguiente información: Tabla (peticiones, ejecuciones y tiempos de respuesta), consumo de CPU y memoria al empezar la prueba, durante y al finalizarla. |
Informe resultados | PPS-SOS-004 | Pruebas sostenidas | El proveedor debe indicar las comprobaciones que ha realizado tras la ejecución de las pruebas y el análisis de los resultados obtenidos. |
Informe resultados | PPS-SOS-005 | Pruebas sostenidas | El proveedor debe indicar si el resultado de la prueba ha sido satisfactoria o no. En ambos casos debe dar los argumentos en los que se basa su decisión. |
Informe resultados | PPS-STF-001 | Pruebas sostenidas con tolerancia a fallos | Por cada prueba se debe indicar la siguiente información: prueba, concurrencia, duración, funcionamiento esperado |
Informe resultados | PPS-STF-002 | Pruebas sostenidas con tolerancia a fallos | Al menos se debe mostrar la siguiente información: Tabla (peticiones, ejecuciones y tiempos de respuesta), consumo de CPU y memoria al empezar la prueba, durante y al finalizarla. |
Informe resultados | PPS-STF-003 | Pruebas sostenidas con tolerancia a fallos | El proveedor debe indicar las comprobaciones que ha realizado tras la ejecución de las pruebas y el análisis de los resultados obtenidos. |
Informe resultados | PPS-STF-004 | Pruebas sostenidas con tolerancia a fallos | El proveedor debe indicar si el resultado de la prueba ha sido satisfactoria o no. En ambos casos debe dar los argumentos en los que se basa su decisión. |
Informe resultados | PPS-CON-001 | Conclusiones | Se debe indicar al menos la siguiente información: Capacidad máxima, Margen actual, Nodos recomendados. |
Informe resultados | PPS-CON-002 | Conclusiones | El proveedor debe indicar si el resultado global de las pruebas han sido favorable o no. En ambos casos debe dar los argumentos en los que se basa su decisión. |
Informe resultados | PPS-CON-003 | Conclusiones | El Área de Gobernanza, una vez revisado el informe, indicará si el plan de pruebas se considera favorable o no |
1. Aplicación del workaround relativo a los conflictos de clases. Nos hemos encontrado 3 tipos de conflictos en los entornos del SAS:
2. No se deben incluir a nivel de máquina virtual de java parametrización que pueda provocar un comportamiento irregular del servidor de WebLogic. Por ejemplo, en el caso del "nodo mudo" se indica un parser a nivel de JVM distinto al utilizado por defecto en weblogic, cuando se debe utilizar como recursos dentro de los paquetes EAR. El ejemplo está documentado por Oracle en el siguiente enlace: https://docs.oracle.com/cd/E23943_01/web.1111/e13724/appscope.htm#XMLPG224 para WebLogic 10.3.6. En él se ejemplifica el cómo cambiar el Parser desde el EAR y no a nivel de JVM.
3. El cambio a desplegar debe ser pilotable en BBDD y otros elementos compartidos como JMS, JTA, EJB, etc¿ Es decir, si el desplegable conlleva un cambio en base de datos y hay que parar para ese cambio, no se puede desplegar en caliente. Si el aplicativo necesita un reinicio un timeout excesivo en JTA, parar JMS, cambio en paramétricas en base de datos, etc¿ Puede ser contraproducente el despliegue en caliente y que dos versiones estén simultáneamente en ejecución.
4. Redimensionamiento de los pooles de java relacionados con la carga de clases: PermGen en java 7 y MetaSpace en java 8.
En Java 8 se suele indicar un máximo, aunque sea memoria nativa, suele estar restringido el máximo al igual que con Java 7 y el PermGen. Se debe, al menos, tener el doble para que no estamos ante excepciones de tipo OutOfMemory en los despliegues en caliente.
Todos estos requisitos son añadidos a las recomendaciones indicadas por Oracle en la documentación oficial:
https://docs.oracle.com/cd/E13222_01/wls/docs100/deployment/redeploy.html (apartado "Requirements and Restrictions for Production Redeployment")
Los requisitos aquí indicados son los mínimos, pero evidentemente hay que probarlo por cada plataforma y de forma exhaustiva ya que el modo de programación es ajeno a sistemas.
Para porder comprobar que se ha realizado correctamente el despliegue en caliente, proponemos realizar la una prueba de una versión (la ya desplegada) a otra (la que queremos desplegar en caliente) con una carga sostenida, lo que significa tener preparado dos versiones (versión A y B) con cambios en uno o varios casos de uso que se estén probando en dicha carga: