Testing de performance en sistemas críticos: una nueva metodología y aplicaciones

Guimerans, Gustavo

Supervisor(es): Robledo Amoza, Franco - Risso Montaldo, Claudio - Varela Ricco, Martín - Cornes, Cristina - Almansa, Andrés

Resumen:

El nuevo mundo es digital y crece a un ritmo sin precedentes. Se estima que hasta 2003 la humanidad había creado y almacenado digitalmente una cantidad de información equivalente a la que hoy se genera a diario. En la actualidad la mayoría de los procesos masivos, así como los datos y contenidos tanto públicos como personales, están informáticamente soportados. Por su creciente importancia y transversalidad a todos los sectores, los sistemas se han constituido en uno de los activos más críticos para las organizaciones. Buscando elevar la confiabilidad de esos sistemas, se recurre a diversas combinaciones de múltiples prácticas como ser: alta disponibilidad y performance de los componentes de los sistemas, procesos de desarrollo estandarizados y depurados en el tiempo, y el “testing de software”, entre otros. El testing en particular busca una validación independiente sobre los requerimientos que un componente o sistema debe cumplir, y tiene múltiples variantes. En lo que hace al tipo de requerimiento destacamos: funcionales (si el resultado de las acciones es el esperado), performance (si soporta el nivel de carga o el volumen de datos necesario) y seguridad (capacidad para resistir fallas, o ataques intencionales). El objeto de esta tesis es introducir una metodología que sirva como marco de trabajo para realizar “pruebas de performance”, y presentar además tres aplicaciones reales complementarias donde se constate su efectividad. El “testing de performance” es un área de vanguardia, de alta complejidad, que requiere entre otras cosas el costoso desarrollo de una plataforma para interactuar con el sistema a probar. Es usual entonces que a la hora de priorizar pruebas, las organizaciones se inclinen hacia los aspectos funcionales, o incluso los de seguridad, en muchos de los cuales se puede avanzar sin enfrentarse a grandes dificultades tecnológicas. Esto es razonable para una pequeña empresa o para una aplicación con pocos usuarios o datos a manejar, pero es inaceptable en las grandes organizaciones, que son precisamente las que más dependen de la informática. Durante este trabajo no sólo veremos cómo aplicar la metodología a aplicaciones de distintos contextos tecnológicos, veremos además cómo los resultados de esas pruebas ayudan a optimizar el desempeño de los sistemas con mínimos ajustes en los componentes. Los casos son entonces evidencia de que incluso los sistemas soportados sobre componentes de hardware y software de tipo world-class, pueden no cumplir las condiciones mínimas para entrar en producción aún cuando hayan pasado por un proceso de validación funcional, y muestran también que la solución no necesariamente viene acompañada de inversiones en infraestructura. La metodología aquí presentada fue co-desarrollada por el autor como miembro del Centro de Ensayos de Software (CES), a partir de las mejores prácticas existentes combinadas y ajustadas a la luz de la experiencia acumulada durante más diez de años en aplicaciones reales. Se elabora en actividades agrupadas en etapas, cuyo fin se resume en: identificar las transacciones representativas del uso esperado del sistema y los monitores para cuantificar su desempeño; la implementación de esas transacciones en un framework que permita automatizar la ejecución simultánea de combinaciones de múltiples instancias; la ejecución de varios ciclos de pruebas en los que se identifican los problemas a partir del análisis de los datos disponibles, se busca un diagnóstico y se repiten las pruebas explorando soluciones junto a los expertos del sistema. Durante los últimos diez años, distintas versiones de esta metodología han sido usadas en más de 20 organizaciones, algunas de las cuales atienden a más de 3000 usuarios, y ajustes de configuración mediante han permitido mejoras en los tiempos de respuesta del sistema de hasta 1000%. Entendemos que los resultados son alentadores y confiamos que se potenciarán por el creciente uso de sistemas distribuidos complejos, particularmente en la forma del denominado “cloud-computing”.


Detalles Bibliográficos
2016
Testing de performance
Metodología
Protocolos
Sistemas distribuidos
SOPORTE LOGICO DE COMPUTADORES
ENSAYO
Español
Universidad de la República
COLIBRI
https://hdl.handle.net/20.500.12008/22324
Acceso abierto
Licencia Creative Commons Atribución - No Comercial - Sin Derivadas (CC - By-NC-ND 4.0)
Resumen:
Sumario:El nuevo mundo es digital y crece a un ritmo sin precedentes. Se estima que hasta 2003 la humanidad había creado y almacenado digitalmente una cantidad de información equivalente a la que hoy se genera a diario. En la actualidad la mayoría de los procesos masivos, así como los datos y contenidos tanto públicos como personales, están informáticamente soportados. Por su creciente importancia y transversalidad a todos los sectores, los sistemas se han constituido en uno de los activos más críticos para las organizaciones. Buscando elevar la confiabilidad de esos sistemas, se recurre a diversas combinaciones de múltiples prácticas como ser: alta disponibilidad y performance de los componentes de los sistemas, procesos de desarrollo estandarizados y depurados en el tiempo, y el “testing de software”, entre otros. El testing en particular busca una validación independiente sobre los requerimientos que un componente o sistema debe cumplir, y tiene múltiples variantes. En lo que hace al tipo de requerimiento destacamos: funcionales (si el resultado de las acciones es el esperado), performance (si soporta el nivel de carga o el volumen de datos necesario) y seguridad (capacidad para resistir fallas, o ataques intencionales). El objeto de esta tesis es introducir una metodología que sirva como marco de trabajo para realizar “pruebas de performance”, y presentar además tres aplicaciones reales complementarias donde se constate su efectividad. El “testing de performance” es un área de vanguardia, de alta complejidad, que requiere entre otras cosas el costoso desarrollo de una plataforma para interactuar con el sistema a probar. Es usual entonces que a la hora de priorizar pruebas, las organizaciones se inclinen hacia los aspectos funcionales, o incluso los de seguridad, en muchos de los cuales se puede avanzar sin enfrentarse a grandes dificultades tecnológicas. Esto es razonable para una pequeña empresa o para una aplicación con pocos usuarios o datos a manejar, pero es inaceptable en las grandes organizaciones, que son precisamente las que más dependen de la informática. Durante este trabajo no sólo veremos cómo aplicar la metodología a aplicaciones de distintos contextos tecnológicos, veremos además cómo los resultados de esas pruebas ayudan a optimizar el desempeño de los sistemas con mínimos ajustes en los componentes. Los casos son entonces evidencia de que incluso los sistemas soportados sobre componentes de hardware y software de tipo world-class, pueden no cumplir las condiciones mínimas para entrar en producción aún cuando hayan pasado por un proceso de validación funcional, y muestran también que la solución no necesariamente viene acompañada de inversiones en infraestructura. La metodología aquí presentada fue co-desarrollada por el autor como miembro del Centro de Ensayos de Software (CES), a partir de las mejores prácticas existentes combinadas y ajustadas a la luz de la experiencia acumulada durante más diez de años en aplicaciones reales. Se elabora en actividades agrupadas en etapas, cuyo fin se resume en: identificar las transacciones representativas del uso esperado del sistema y los monitores para cuantificar su desempeño; la implementación de esas transacciones en un framework que permita automatizar la ejecución simultánea de combinaciones de múltiples instancias; la ejecución de varios ciclos de pruebas en los que se identifican los problemas a partir del análisis de los datos disponibles, se busca un diagnóstico y se repiten las pruebas explorando soluciones junto a los expertos del sistema. Durante los últimos diez años, distintas versiones de esta metodología han sido usadas en más de 20 organizaciones, algunas de las cuales atienden a más de 3000 usuarios, y ajustes de configuración mediante han permitido mejoras en los tiempos de respuesta del sistema de hasta 1000%. Entendemos que los resultados son alentadores y confiamos que se potenciarán por el creciente uso de sistemas distribuidos complejos, particularmente en la forma del denominado “cloud-computing”.