Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pedro
Materia: Ingeniería de Software I.
Fecha: 06/10/2019.
Tema: Tipos de pruebas de Software
Introducción
Las pruebas de rendimiento software consisten en poner a prueba, en los dispositivos en los
que deba ejecutarse el software, la velocidad de ejecución y envío de datos, verificando que
todo discurre adecuadamente y sin pérdida de información.
Objetivos
Verificar la importancia de las pruebas de rendimiento y su utilidad en nuestros
proyectos.
Comprobar las principales herramientas y metodologías de Pruebas de Rendimiento.
Detectar la importancia del mejoramiento de las pruebas y sus aplicaciones.
Obtener las conclusiones respecto a la importancia de las pruebas para garantizar la
satisfacción de los clientes tanto como usuarios con dichas pruebas.
Desarrollo
Los objetivos de estas pruebas son varios:
Localizar cuellos de botella. Por ejemplo, si hay mucha carga de usuarios y el sistema
colapsa o los tiempos de respuesta son muy altos, estas pruebas nos sirven para
detectar dónde está el problema, si es debido a que el sistema se queda sin CPU, si se
queda sin memoria, o si el ancho de banda es insuficiente.
Identificar y localizar problemas de rendimiento en la aplicación. Por ejemplo, si
observamos que cierta funcionalidad de la aplicación tiene un tiempo de respuesta muy
alto, a partir de ahí tenemos que ver por qué ocurre y cómo optimizarlo. Es decir, no
sólo nos permite encontrar el problema rendimiento, sino que también ayuda a
localizar dónde está ese problema de rendimiento para poder subsanarlo.
Verificar el cumplimiento de los SLA (Acuerdos de Nivel de Servicio). Por
ejemplo, si tenemos una aplicación que prevé tener unos mil usuarios de forma
concurrente y necesitamos que los tiempos de respuesta sean inferiores a 3 segundos.
Podemos ejecutar una prueba con esas condiciones y ver esos tiempos de respuesta.
Como dijo Tim Koopmans, cofundador de Flood “La gente llega a las pruebas de rendimiento
con una base en automatización, y esperan ver resultados del tipo “Rojo/Verde”, es decir,
esperan resultados del tipo “funciona o no funciona”.
En las pruebas de rendimiento esto no es así, porque la ejecución puede haber ido bien, no
haber tenido ningún error, pero los tiempos de respuesta haber sido demasiado altos. Esto
entonces no nos sirve y nos permite identificar algún problema.
De carga: aquellas en las que se establecen unos objetivos determinados. Por ejemplo,
para 50 usuarios concurrentes la aplicación tiene que dar unos tiempos de respuesta
determinados, pues se realizará una prueba de esas características y se mide el
resultado.
De estrés: son pruebas en las que se aplica mucha carga, bastante más de la esperada,
para ver cómo se comportaría la aplicación ante un pico de afluencia de usuarios.
De estabilidad: permiten probar cómo se comporta la aplicación en una prueba de una
duración larga con una carga moderada, para ver si el sistema se degrada o sigue
funcionando correctamente. Puede ser que con el paso del tiempo se vaya
consumiendo cada vez más memoria porque no esté optimizada y haya recursos sin
cerrar y el rendimiento vaya cayendo.
Herramientas
Existen muchas herramientas en el mercado que se pueden utilizar para las pruebas de
rendimiento.
Podemos destacar JMeter, LoadRunner y NeoLoad, siendo la primera Open Source, y las otras
dos permiten hasta 50 usuarios concurrentes de forma gratuita, y a partir de ahí se necesita
adquirir una licencia.
Las tareas para realizar una prueba de este tipo serían las siguientes:
Decidir usar recursos internos o externos para ejecutar las pruebas, en función de la
experiencia de la casa (o falta de ella).
Reunir u obtener requisitos de rendimiento (especificaciones) de los usuarios y/o
analistas.
Desarrollar un plan de alto nivel, incluyendo los requisitos, recursos, plazos e hitos.
Elaborar un plan de pruebas de rendimiento detallado (incluyendo
los escenarios detallados y casos de prueba, cargas de trabajo, información del entorno,
etc).
Elegir la/s herramienta/s de prueba.
Especificar los datos de prueba necesarios y la distribución de ellos (a menudo pasado
por alto, y a menudo el fracaso de una prueba de rendimiento válida).
Desarrollar scripts de prueba de concepto para cada aplicación/componente sometido a
la prueba, utilizando la herramienta de prueba elegida y estrategias.
Desarrollar un plan de prueba de rendimiento detallado, incluyendo todas las
dependencias y los plazos.
Instalar y configurar los simuladores de peticiones y controladores.
Configurar el entorno de prueba (lo ideal es que sea idéntico hardware a la plataforma
de producción), configurar los router, aislar la red (no queremos alterar los resultados
por parte de otros usuarios), desplegar la aplicación en el servidor, desarrollar la base
de datos de prueba, etc.
Ejecutar las pruebas, probablemente en repetidas ocasiones (iterativamente), a fin de
ver si el desconocimiento de cualquier factor podría afectar a los resultados.
Analizar los resultados - ya sea de aceptando/rechazando, o investigando el camino
crítico y recomendando medidas correctivas .
Herramienta utilizada:
JMeter
JMeter es una herramienta de testing cuyas funcionalidades se pueden resumir en tres:
Diseñar un testplan, esto es, generar un fichero. jmx
Ejecutar un testplan
Ver de distintas formas los resultados de la ejecución de un testplan (vía listeners)
Para diseñar un testplan, JMeter dispone de una interfaz GUI a modo de diseñador, en la
que el tester puede ir agregando componentes de manera visual, y ejecutar los componentes
agregados, viendo el resultado. Una vez finalizado el diseño del testplan, la herramienta
permite grabar este como un fichero .jmx.
La propia herramienta permite ejecutar un fichero .jmx previamente generado, vía línea de
comandos o vía la propia interfaz GUI. La ejecución de un fichero .jmx realiza peticiones
contra la aplicación objetivo a testear (peticiones del tipo que se hayan especificado al
generar el fichero .jmx, JMeter dispone de la posibilidad de generar muchos tipos de
peticiones: HTTP, FTP, LDAP, ...). Para cada petición ejecutada, JMeter recopila ciertos
datos. Además, en el fichero .jmx se puede especificar que número de usuarios de cada tipo
ejecuta las peticiones contra la aplicación, es decir, el .jmx simula una o mas comunidades
de usuarios (roles) trabajando contra la aplicación objetivo.
Los datos generados por la herramienta para cada petición se procesan o bien con un tipo de
componente que proporciona la interfaz GUI llamados listeners, o bien con herramientas
externas. Los listeners permiten ver los resultados de una o mas ejecuciones de múltiples
maneras (cada listener de una manera).
Este manual es una introducción al uso de la herramienta JMeter. Explica los conceptos
básicos que es necesario conocer para entender la herramienta, y las posibles formas de
utilizar ésta.
Es adecuado tanto para personas con un perfil técnico sin conocimientos previos que
deseen iniciarse en el uso de la herramienta, como para diretores, jefes de proyecto y
analistas que deseen conocer las posibilidades de la herramienta en la ejecución de tests.
Los lectores interesados en profundizar en el uso de la herramienta quizás estén interesados
en las siguientes referencias:
Ventajas e inconvenientes
JMeter es una herramienta ideal para realizar pruebas de rendimiento de aplicaciones
web. Sus principales debilidades son:
Aunque la versión actual (2.4) permite también el diseño y automatización de pruebas
funcionales, existen otras herramientas más adecuadas para esta función.
JMeter NO se comporta como un navegador. Esto tiene varias implicaciones importantes:
por defecto no guarda ni envía cookies, no interpreta código JavaScript, … Cualquier
funcionalidad de estas debe ser implementada específicamente en el testplan
Con JMeter el tester trabaja a nivel de protocolos: el desarrollador de un testplan ha de
descender a este nivel, por lo que normalmente el tester tiene que apoyarse en herramientas
adicionales durante el desarrollo de un testplan, como Firebug, HttpFox, SoapUI, Badboy,
...
Los tipos de aplicaciones que se pueden testear con JMeter dependen de los protolos que
implementen las interfaces de acceso a la aplicación. Con JMeter se pueden testear los
siguientes tipos de interfaces: HTTP, HTTPS, SOAP (sobre HTTP), XML-RPC
(sobre HTTP), FTP, LDAP, POP3, IMAP, SMTP, JMS, JDBC y TCP. El testeo de otro tipo
de interfaces no es inmediato. En concreto, con JMeter no es posible (con un esfuerzo
razonable), implementar un testplan para una interfaz RMI o WebDav
Utilización de la herramienta
Una vez instalada la herramienta, la forma más habitual de utilizarla es:
1. Grabar las interacciones de cada uno de los tipos de usuarios con la aplicación
software. Esto genera un caso de pruebas para cada una de las tipologías de usuarios
(perfiles) que admite la aplicación. Posteriormente, cada uno de los casos de prueba se
ejecutarán de manera concurrente por parte de N usuarios por cada caso de prureba.
2. Adaptar el script (fichero .jmx) generado en el paso anterior. Por ejemplo, para que sea
configurable, para que se hagan comprobaciones que no se pueden generar durante la
grabación, ...
3. Comprobar que el script realiza correctamente las tareas que se desea que realice el
caso de prueba.
4. Integrar todos los scripts
5. Ejecutar el testplan
6. Visualizar los resultados de la ejecución
En los apartados que siguen explicamos los conceptos de funcionamiento de JMeter
relativos a estos cinco puntos. En este manual solo explicaremos los conceptos y
posibilidades de la herramienta. Ver Construcción de un testplan con JMeter para más
detalle sobre los cuatro primeros puntos, Ejecución de un testplan con JMeter para más
detalles sobre los dos últimos.
Conclusiones
Las pruebas de rendimiento fueron de gran utilidad porque nos permitieron verificar
el uso y funcionamiento de nuestras aplicaciones.
Las herramientas que se probaron fueron de gran utilidad para nuestros futuros
proyectos y los componentes nos servirán para dar una mejor experiencia a los
usuarios.
La importancia de estas pruebas permite al software funcionar de mejor manera, en
conceptos, descripción, funcionamiento, optimización, calidad y satisfacción.
Bibliografía
https://www.testergame.com/pruebas-de-rendimiento-software/
https://openwebinars.net/blog/que-es-prueba-de-rendimiento-software/