1. Pruebas de Estrés
L.I. Carlos García Trujillo
cgarciagl@gmail.com
Desarrollo de software I
2. ¿Que son las pruebas de
estress?
Es el proceso de poner demanda
en un sistema o dispositivo y
medir su respuesta
No se trata solo de presionar hasta
romper.
Se consideran pruebas
no funcionales
3. ¿Por qué hacer pruebas
de estress?
Identificar cuellos de botella
Reducir el riesgo de “caídas del
sistema”
Aprovechar los recursos de IT mas
eficientemente
Conocer los límites que soporta el
sistema
Permite tomar decisiones sobre
configuraciones de hardware,
ajustes de software y selección de
arquitecturas
Los fallos por estos motivos suelen
4. En general los objetivos
suelen ser
Mejorar:
Rendimiento
Escalabilidad
Estabilidad
5. ¿Que pasa cuando le
ponemos presión a algo?
Diferentes sistemas
reaccionan
de manera diferente a la
presión,
la cuestión es determinar
que
reacciones son las que
interesa medir
6. Definiciones previas a la
prueba
Establecer un escenario de pruebas
Determinar que es lo que interesa
medir en las pruebas
7. El escenario de prueba
No siempre se puede evaluar sobre
ambientes similares a aquellos
donde funcionará el sistema
Sin embargo se puede establecer
un escenario similar o análogo y
proyectar resultados
8. Formas
Simular el uso del sistema por
múltiples usuarios
concurrentemente
Puede evaluarse el uso del sistema
por un mismo usuario durante
tiempo prolongado y continuo
También se puede establecer
pruebas para evaluar el
comportamiento de un
componente del sistema (ej. la
9. Objetivos de medición de
las pruebas
Medir:
El tiempo de respuesta
El número de solicitudes atendidas
La cantidad de memoria consumida
para resolver las peticiones (y otros
recursos como tiempo de
procesador y accesos a disco)
El número de transacciones
realizadas en un determinado
periodo de tiempo
Evaluar los límites de los
componentes del sistema
10. Software para pruebas de
estress
Jmeter de Apache
Grinder hecho en Jython
LoadSim
Apache Benchmark
Paessler
11. Ejemplo de resultados
Usando Apache BenchMark: ab -n 1000 -c 10 http://localhost/
Concurrency Level: 10
Time taken for tests: 22.206642 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 857000 bytes
HTML transferred: 665000 bytes
Requests per second: 45.03 [#/sec] (mean)
Time per request: 222.066 [ms] (mean)
Time per request: 22.207 [ms] (mean, across all concurrent requests)
Transfer rate: 37.65 [Kbytes/sec] received
Requestspersecond