Pruebas de Desempeño Bárbara Espinoza Vanessa Quintas Alexandra Vega 1 Pruebas de desempeño ¿Qué son? Objetivo Cómo analizar el desempeño Tipos de pruebas Consideraciones finales 2 ¿Qué son las pruebas de desempeño? Son un tipo de pruebas que permiten analizar y evaluar las características del software relacionadas con el desempeño, por ejemplo: Tiempos de respuesta Throughput (tasa de atención de peticiones) Capacidad (máximo trabajo útil por unidad de tiempo) [RUP] “Performance testing is a class of tests implemented and executed to characterize and evaluate the performance-related characteristics of the target-of-test, such as the timing profiles, execution flow, response times, and operational reliability and limits. Different types of performance tests, each focused on a different test objective, are implemented throughout the software development lifecycle (SDLC)”. [Prof. Curiel] Tiempo de Respuesta: es el intervalo de tiempo que transcurre entre la solicitud de un usuario al sistema y la respuesta de este último. Throughput: es la tasa a la cual el sistema puede atender las peticiones. Capacidad: Máxima cantidad de trabajo útil que se puede realizar por unidad de tiempo. 3 Objetivo de las pruebas de desempeño El objetivo de las pruebas de desempeño es verificar y validar los requisitos de desempeño que se han especificado. 4 ¿Cómo analizar el desempeño? 1. Se evalúan los resultados de una prueba para un actor o un caso de uso comparándolo con varias ejecuciones de la misma. 2. Se examinan las estadísticas resumidas recaudadas para un actor o caso de uso en busca de indicadores de variabilidad de las respuestas del sistema. [RUP] The first level of performance analysis involves evaluating the results for a single actor or use-case instance and comparing the results across several test executions; for example, capturing the performance behavior of a single actor performing a single use case without any other activity on the target-of-test and comparing the results with several other test executions of the same actor or use case. This first-level analysis can help identify trends that could indicate contention among system resources, which may affect the validity of the conclusions drawn from other performance test results. A second level of analysis examines the summary statistics and actual data values for specific actor or use-case execution, and the target-of-test's performance behavior. Summary statistics include standard deviations and percentile distributions for the response times, which provide an indication of the variability in system responses as seen by individual actors. A third level of analysis can help in understanding the causes and significance of performance problems. This detailed analysis takes the low-level data and uses statistical methods to help testers draw correct conclusions from the data. Detailed analysis provides objective and quantitative criteria for making decisions, but it's more time consuming and requires a basic understanding of statistics. 5 ¿Cómo analizar el desempeño? 3. Se utilizan métodos estadísticos con el fin de obtener conclusiones acerca del desempeño del sistema, comprender sus causas y su importancia. 6 Tipos de pruebas de desempeño Pruebas Pruebas Pruebas Pruebas de de de de benchmark stress perfil de desempeño carga [RUP] The following types of tests are included in Performance Testing: Benchmark testing: Compares the performance of new or unknown target-of-test to a known reference standard, such as existing software or measurements. Contention test: Verifies the target-of-test can acceptably handle multiple actor demands on the same resource (data records, memory, and so forth). Performance profiling: Verifies the acceptability of the target-of-test's performance behavior using varying configurations while the operational conditions remain constant. Load testing: Verifies the acceptability of the target-of-test's performance behavior under varying operational conditions (such as number of users, number of transactions, and so on) while the configuration remains constant. Stress testing: Verifies the acceptability of the target-of-test's performance behavior when abnormal or extreme conditions are encountered, such as diminished resources or an extremely high number of users. 7 Pruebas de Benchmark Comparan el desempeño del sujeto de prueba con el de un sistema y carga de trabajo de referencia. Benchmark es sinónimo de carga de prueba: programas utilizados para cargar el sistema y medir el rendimiento del sistema o de partes de éste. [RUP] Benchmark test: A type of performance test that compares the performance of a new or unknown target-of-test to a known reference-workload and system. 8 Pruebas de Benchmark Cada benchmark se concentra en un aspecto distinto del desempeño y se debe escoger el adecuado a cada caso: Uso intensivo del CPU. Uso intensivo de disco. Uso intensivo de memoria. Representación gráfica Otros… [Prof. Ignacio Casas] Si el ambiente planeado va a dedicarse al cálculo numérico o al análisis estadístico (uso intensivo de CPU), no se puede tomar una decisión en base a benchmarks de bases de datos (uso intensivo de discos) o de representación gráfica. 9 Pruebas de Stress Permiten verificar la aceptabilidad del desempeño del sistema ante condiciones anormales o extremas: Volumen de usuarios/transacciones extremadamente alto Recursos escasos: Poco ancho de banda Memoria reducida Espacio en disco reducido Verifies the acceptability of the target-of-test's performance behavior when abnormal or extreme conditions are encountered, such as diminished resources or an extremely high number of users. 10 Pruebas de Stress En realidad las condiciones de stress no se espera que sucedan en la realidad. Estas pruebas también permiten documentar las condiciones bajo las cuales el sistema falla: límites. 11 Pruebas de perfil de desempeño Enfocadas a monitorear el comportamiento de una aplicación en ejecución con el fin de conocer dónde invierte su tiempo: Acceso a a datos Llamadas a un procedimiento Llamadas al sistema Permiten identificar cuellos de botella y procesos ineficientes [RUP] A test in which the target-of-test's timing profile is monitored, including execution flow, data access, function and system calls to identify and address both performance bottlenecks and inefficient processes. [Edu Metz] Performance profiling is the means of determining where a software system spends its execution time. It uses trace instrumentation to gather event data. Various types of event information can be obtained with traces, such as component entry and exit, function calls, software execution states, message communication, resource usage, etc. 12 Herramientas de perfil de desempeño Una herramienta de perfil de desempeño: Corre la aplicación en un ambiente controlado Realiza una traza de su flujo de ejecución Retorna un reporte del consumo de tiempo y memoria. [Linux Journal] Performance profiling runs your code in a controlled environment and returns a report listing such statistics as time spent within each function, how long each database query takes and how much memory has been used. By doing performance profiling on your code, you quickly can see where you may be wasting time with slow database queries or inefficient code. Having this information then allows you to spend your time tuning PHP and SQL where it needs it most. No more guessing what's going on internally: performance profiling gives you hard figures. 13 Pruebas de carga Permiten verificar y validar el desempeño de un elemento de un sistema bajo diferentes condiciones de carga: Número de usuarios Número de transacciones Son importantes cuando los sistemas deberán soportar un gran volumen de usuarios o transacciones concurrentes [RUP] The Load Testing process component is concerned with the process of testing software under emulated production transaction and user loading. Load Testing is an important concern in software that will support large transaction or user volumes. 14 Pruebas de carga Se utilizan simulaciones de cargas de trabajo promedio y pico dentro de los niveles normales. Deben ser realizadas bajo condiciones controladas para asegurar la precisión de las medidas tomadas: Tiempo de respuesta Throughput A type of performance test used to validate and assess acceptability of the operational limits of a system under varying workloads while the system-under-test remains constant. In some variants, the workload remains constant and the configuration of the system-under-test is varied. Measurements are usually taken based on the workload throughput and in-line transaction response time. The variations in workload usually include emulation of average and peak workloads that occur within normal operational tolerances. 15 Consideraciones finales Las pruebas de desempeño son muy senbibles a las condiciones sobre las cuales se aplican. Se debe ser cuidadoso al: Elegir la carga de trabajo. Considerar/ignorar los distintos parámetros que intervienen: Variaciones en el ambiente Intervención de herramientas de monitoreo Realizar el análisis de los resultados. 16 Bibliografía Rational Unified Process. Versión 2003.06.00.65 Prof. Mariela Curiel. Introducción a la Evaluación del Desempeño de Sistemas Informáticos. Edu Metz, Efficient Instrumentation for Performance Profiling. http://www.cs.nmsu.edu/~jcook/woda2003/papers/M etz.pdf PHP Performance Profiling, Linux Journal. http://www.linuxjournal.com/article/7213 Prof. Ignacio Casas. Técnicas de Pruebas de Cargas. http://cursos.puc.cl/html/iic35321/almacen/20050222173726_Trans7x1BN_sec1.PDF 17