Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

92
Federico Toledo Federico.Toledo@abstract a.com.uy @fltoledo Testing técnico

description

Introducción a distintos aspectos de calidad y testing de software, enfocando en ciertos puntos desarrollados en Abstracta: - testing automatizado (Selenium, GXtest, JUnit) - generación de pruebas con model driven approaches usando UML, UTP, ATL (model to model) y Acceleo (Model to Text) - smart monkey testing (Monkop - monkop.com) para probar automáticamente aplicaciones Android - pruebas de performance con OpenSTA De esta forma mostramos cómo estamos volcando la empresa a la investigación en la industria, investigación en la academia, desarrollo de productos y servicios de alto valor agregado.

Transcript of Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Page 2: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿No puede existir un software perfecto?

suficientemente bueno

¡¡ Testing !!

Page 3: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Testing ¿aburrido?¿Por qué?

– Tareas repetitivas– No hay desafíos técnicos– Trabajo para el mal programador

Page 4: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Temario

Test execution automation

Test design automation

Monkop Performance Testing

Page 5: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Test execution automation

Page 6: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Caso de prueba

• Un caso de prueba consta de: – conjunto de valores de entrada– precondiciones de ejecución– resultados esperados– poscondiciones de ejecución, – desarrollados con un objetivo particular, por

ejemplo:• ejercitar un camino de un programa particular • verificar que se cumple un requisito especifico

Page 7: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Discusión de “salados”

• “Test automation is simply an automatic way of doing what testers were doing before”– Steve Rowe (Tester at Microsoft)

• “Test automation means extending the reach of testers”– James Batch (Tester Consultant at Satisfice)

Page 8: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Testing de Regresión• Verificar que el Software no tenga

regresiones

• ¿Solo revisar bugs?

• Hay quienes dicen que es un chequeo– Michael Bolton

http://www.developsense.com/2009/08/testing-vs-checking.html

Page 9: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Automatización

• Adquirir tecnología para automatizar procesos manuales

• Mejora: – calidad – performance en la producción – rendimiento de los recursos humanos

Page 10: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Qué es automatizar pruebas?

Lograr que los casos de prueba sean corridos por una máquina

Page 11: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Para qué automatizar?

• Aumentar la calidad del producto• Disminuir el Time to Market• Detección temprana de errores• Reducir el costo total de la aplicación• Motivación del equipo • Testear en diferentes plataformas en forma

desatendida

Page 12: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Cómo automatizar?

• Se debe utilizar una herramienta

• Algunos conceptos importantes– Record & Playback– Data-Driven Testing– Model-Based Testing

istockphoto ®

Page 13: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Selenium

• Record and Playback

• User interface level automation

Page 14: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Cómo funciona Selenium

Tester / User

SUT: System Under Test

Manual Test Case Execution

Page 15: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Como funciona Selenium

Functional Test Scripts

Selenium captures User Interactions

Tester / User

Executes and reports

SUT: System Under Test

Manual Test Case Execution

This is record and playback!

Page 16: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Data-drive con Selenium

Page 17: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Demo

Page 18: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance
Page 19: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Qué es ?

• Herramienta de testing específica para aplicaciones Web GeneXus

Model-Based Testing

Record & Playback

Data-Driven Testing

Page 20: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Por qué ?

• Adaptar rápidamente los casos de prueba a los cambios de la aplicación

• Crear casos de prueba de manera sencilla– Enfoque funcional– Data-Driven Testing

• Integración con la aplicación GeneXus

Page 21: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Cómo se logra?GXtest asocia Artefactos de Prueba a la KB

Casos de Prueba Ejecutables

Capa de Adaptación

Casos de Prueba

Page 22: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Ejemplo

• Transacción Clientes

• Herramientas tradicionales:

• GXtest:

Page 23: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Casos de Prueba

Datapools Decisiones InclusiónLogin

Comandos

Orden de ejecución de las aristas

Page 24: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Manager

Page 25: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Resumen

• Record and Playback• Data-driven testing• Model-based testing

Page 26: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Test design automation

Page 27: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Tesis: Enfoque MDA para Generar Pruebas para Sistemas de Información

• Universidad Castilla-La Mancha• Beca: Agencia Nacional de Investigación e

Innovación• Tutores

– Macario Polo (España)

– Beatriz Pérez (Uruguay)

Page 28: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Conclusiones

• Model-driven approach• Basado en estándares

– UML • UML Data Modeling Profile• UML Testing Profile

– Transformaciones Model-to-Model– Transformaciones Model-to-Text

• Pruebas funcionales automatizadas y pruebas de performance

Page 29: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Conclusiones

• Especial atención en cubrir las estructuras de datos– A partir del modelo de datos se generan casos de

prueba para probar el CRUD de las entidades• CRUD = Create, Read, Update, Delete• 80% de las funcionalidades de los sistemas de

información son operaciones de este tipo

Page 30: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance
Page 31: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Mayor aporte: vínculo con industria

• Las técnicas investigadas fueron volcadas a GXtest

• GXtest Generator– A partir de la KB de GeneXus genera un conjunto

de casos de prueba en GXtest para el CRUD de las entidades

Page 32: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Casos de prueba generados en GXtest

Page 33: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Resumen

• Model driven approaches

• Test design generation

• Usado en la industria– GXtest Generator

Page 34: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Monkop

Page 35: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Ing. Fabián BaptistaGerente de Operaciones

Presentación Institucional

Tuning Apps?

Page 36: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Tuning

(informática)Afinar la configuración de hardware y software

para optimizar su rendimiento*

* Wikipedia

Page 37: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

World Forecast

Page 38: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Smart Devices Jungle

Page 39: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Objetivos

SIMPLE – Envía tu app, obtén un informe.

EXPERTO - Analizar e identificar cuales tareas de Tuning son posibles a realizar sobre la aplicación.

EDUCATIVO - Brindar información técnica necesaria para realizar la tarea de Tuning.

ESCENCIAL – Ser el complemento (amigo) ideal de toda Software Factory

Page 40: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Principales áreas de análisis

Performance, Seguridad,

Funcionalidad

Page 41: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

24x7Cross Device

Knowledge ExpertAnálisis 360°

Simple

Page 42: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Simple1: Ingresa

http://www.monkop.com2: Upload APK

3: Dinos tu emailListo!

Page 43: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance
Page 44: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Reporte de resultado

Page 45: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Reporte de resultado

Page 46: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Reporte de resultado

Page 47: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance
Page 48: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Android

Android Device

App Under Test

Shell

Monkop Android

Instrumentation

Commands / Services

Monkop Agent

Android SDK

ADB

Python Server

Monkop Agent

Monkop Server

Python Server

Monkop Server

Monkops

Monkops

Monkops

Monkop SaaS Server (Java)

Monkop Site

AVRO (tpc/ip)

AVRO (tpc/ip)

Page 49: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Pruebas basadas en conocimiento (modelos)

• Sin información base:Modelo se crea en base a exploración e ingeniería inversa, pantallas, comportamiento (acciones y transiciones), tráfico de red y texto ayudan a la creación del modelo de la aplicación.

• Con información baseDatos, código fuente, logs del server y casos de prueba de otros frameworks ayudan a complementar el modelo y la comprensión del sistema.

Page 50: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Demo de ejecución

Page 51: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Resumen

• Monkey testing para mobile• Pruebas sobre distintos dispositivos• Reporte automático• Sugerencias de mejora• Performance, seguridad, funcionalidad

Page 52: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Open Device Lab’s - Uruguay

Page 53: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Performance Testing

Page 54: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Performance

• Computer performance is characterized by the amount of useful work accomplished by a computer system compared to the time and resources used.

• Requisito “no funcional” del sistema

Page 55: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Si no hay performance?

Dependemos de los sistemas para trabajar• Se pierde productividad• Se pierden clientes• Se pierden oportunidades de ventaLos sistemas son controlados por personas• Mayor costo de soporteLa imagen de la empresa es el sistema que le da a sus usuarios• Costos indirectos• Pérdida de imagen y confianza

Page 56: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Pruebas de performance

Cómo ayudamos:– Simular situaciones de carga para conocer el desempeño del sistema

Para qué:– Verificar si el sistema soporta la carga esperada– Verificar si se cumplen acuerdos de nivel de servicio (SLA)– Detectar errores u oportunidades de mejora, que solamente son

observables ante la concurrencia– Detectar bottle-necks

Objetivo:– Asegurar satisfacción de los usuarios

Page 57: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Tipos de pruebas de performance

• Pruebas de carga (load test)• Pruebas de estrés (stress test)• Pruebas de resistencia (endurance test)• Pruebas de escalabilidad• Etc.

Page 58: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Load test

Page 59: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Stress test

Page 60: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Endurance

Page 61: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Scalability

Page 62: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Software Load test

¿Cómo simulamos el uso real del sistema?– Manualmente – Usando herramientas

Page 63: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance
Page 64: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Automatización / robotización

Page 65: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance
Page 66: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Ventajas

Manual Automático

Simulado

Controlado

Repetible

Real

Sin costos de herramientas

Page 67: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Desventajas

Manual Automático

Page 68: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Objetivo

• Apuntar siempre a mejorar la relación costo / beneficio

• Si nos centramos sólo en mejorar la prueba, nos costará muy cara, y los beneficios serán menos redituables

• Incluso pueden llegar tan tarde, ¡que no nos sirva para nada!

Page 69: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

EJECUCIÓN

• LÍNEA BASE• EJECUCIÓN DE

ESCENARIOS• REPORTE DE RESULTADOS

IMPLEMENTACIÓN

• AUTOMATIZACIÓN • MONITORIZACIÓN

DISEÑO

• CASOS DE PRUEBA• ESCENARIOS DE CARGA• INFRAESTRUCTURA DE

PRUEBAS• INDICADORES DE

PERFORMANCE

Page 70: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Diseño de pruebas

Definir objetivos del proyectoDiseñar casos de pruebaDiseñar escenarios de cargaCriterios de aceptaciónDeterminar InfraestructuraDatos de prueba

Page 71: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Automatizar Pruebas de Performance

• Algunas opciones de herramientas opensource– OpenSTA (opensta.org)– JMeter (jmeter.apache.org)

• Trabajan a nivel de protocolo

Page 72: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Servidor Web

ModellerModeller

Usuario Virtual

Http - RequestHttp - Responsegrabar

1

Se

abre

1.1

Se abre

1.2

Acciones2

Terminar d

e grabar3

3.1

Tenemos el script

Gateway(Proxy)

Browser

Http - Request

Http - Response

Http - Request

Http - Response

Page 73: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Performance Test Script

Depending on the application

1 line in Selenium is equivalent to 200 lines in OpenSTA

Page 74: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

GXtest

• Automatizar caso de prueba– Mucho más fácil, nivel de interfaz y no de

protocolo– Generar script de OpenSTA o JMeter

• Un proyecto de pruebas de performance se puede hacer 10 veces más rápido

• Foco en lo importante, menos tiempo automatizando

• Se ajustan los cambios más fácil

Page 75: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Monitorización

INTERNET

Clientes Routers SwitchesWeb

ServersFirewall

Applications Servers

Bases de Datos

Page 76: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Performance Testing Methodology

• Vázquez, G., Reina, M., Toledo, F., de Uvarow, S., Greisin, E., López, H.: Metodología de Pruebas de Performance. Presented at the JCC (2008).

Test Design Automation

Execute

Analyze Fix Between 30% and 50% in

automation tasks

Page 77: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Ejecución – Plan de Pruebas

• BaseLine– Mejor tiempo posible– Iterativo para tener datos estadísticos

• Escenario– Incremental– Comenzar con un 20% de la carga– Escalar hasta llegar al 100%

Servidor WebServidor Web

Servidor WebServidor Web

Page 78: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Análisis de métricas

• Buscar patrones de comportamiento• Correlaciones entre eventos

Page 79: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Patrones

0

500

1000

1500

2000

2500

3000

3500

4000

4500

15:4

0:02

15:4

0:45

15:4

1:31

15:4

2:17

15:4

3:04

15:4

3:50

15:4

4:36

15:4

5:22

15:4

6:08

15:4

6:54

15:4

7:40

15:4

8:26

15:4

9:12

15:4

9:58

15:5

0:45

15:5

1:31

15:5

2:16

15:5

3:02

15:5

3:49

15:5

4:34

15:5

5:21

15:5

6:07

15:5

6:56

15:5

7:39

15:5

8:25

15:5

9:12

15:5

9:58

16:0

0:44

16:0

1:30

16:0

2:16

16:0

3:03

16:0

3:49

16:0

4:36

16:0

5:22

16:0

6:08

16:0

6:54

16:0

7:40

16:0

8:26

16:0

9:12

16:0

9:58

Tie

mp

o R

esp

ues

ta (

ms)

Page 80: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¡Cuidado!

• Asegurarse que los distintos componentes tienen la hora sincronizada lo más preciso posible.

• De otro modo se puede dificultar el análisis.• (o llegar a conclusiones erróneas)

Page 81: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Patrones

Nunca supera el 25% de CPUTiempos de respuesta muy malos¿Por qué no utiliza más recursos si hay?¿Y si les digo que el CPU tiene 4 núcleos?

Page 82: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Patrones

• Luego de media hora de ejecución – CPU al 100%

• ¿Siempre es un problema de CPU?

• La JVM si se queda con poca memoria llega un momento en que el proceso de Garbage Collection consume mucho CPU

Page 83: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Causas

• Los problemas de performance pueden tener distintas causas– La prueba – Lógica– Infraestructura

• Solo analizando los resultados y el funcionamiento del sistema (y de la prueba) se puede ver dónde esta la causa

Page 84: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

¿Qué estamos probando?

Base de datosJVM

Aplicación

Sistema operativo

Hardware

Servidor de aplicaciones

HTTP

Aplicación

Aplicación

Page 85: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Errores comunes

• En la base de datos– Bloqueos de tablas– Falta de índices– SQLs ineficientes– Problemas de tamaño de tablas

• Falta de depuración / limpieza de datos

Page 86: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Errores comunes

• En el Web Server– Configuración de máquina virtual (JVM / .Net

Framework)– Pool de conexiones

• En la lógica de la aplicación – Algoritmos – Zonas de mutua exclusión– Pérdida de memoria (Memory Leaks)

Page 87: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Errores comunes

• Problemas de hardware– Dimensionamiento (Sizing)– Conexiones mal armadas– Un elemento con problemas

• Una vez nos dieron un hub en lugar de un switch

Page 88: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Bitácora

• Llevar una bitácora completa de los cambios sobre:– Aplicación

• Software de base• Infraestructura

– Prueba • Evaluar si se implementan los cambios

derivados de la propia prueba durante el proyecto

Page 89: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Baselines

15/02/08

ESCENARIO 20%

16/02/08

.- se aumenta a 1GB el Heap del NSBT..- actualización GxClassR..- eliminación de la transacción 8 (Journal de Movimientos)

.- se cambia el hub de las generadoras por un Switch de 100Mb..- cambios en el tamaño del pool de Conexiones de GeneXus..- se habilita el caché de GeneXus..- cambio de Clases en Bantotal parautilizar “select top”..- se quita el sistema de firmas del ambiente de pruebas.

ESCENARIO 50%

20/02/08

ESCENARIO 75%

21/02/08

.- cacheo de tabla de perfiles.

.- debug desabilitado.

.- Programa GETALERT modificado para no Update permanente..- en AS400 se asignaron 2GB a una agrupación de memoria que estaba en 1.2GB..- se aumentaron las CPW de 8.000 a 10.000 en la partición.

ESCENARIO 100%

21/02/08

.- Se corrigen problemas detectados en la transacción de Factoring..- se aumentaron las CPW de10.000 a 12.000 en la partición..- se actualizaron las clases sincronizándolas con las de producción

ESCENARIO 150%

04/03/08

Page 90: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Skills del performance tester

• Neceisdad de ser – “mid-level everything”– Multi-disciplinario.

• Conocimiento de distintas:– Tecnologías– Arquitecturas / protocolos– Herramientas

• Generación de carga• Monitorización

Page 91: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

Resumen

Gen

erar

la c

arga

Recolectar y Analizar

Datos

Realizar

Correcciones

INTERNET

Clientes Routers SwitchesWeb

ServersFirewall

Applications Servers

Bases de Datos

Servidor WebServidor Web

Servidor Web

Tool Tool

1

1.11.2

2

3

3.1

Tenemos el script

GatewayBrowser

Http - Request

Http - Response

Http - Request

Http - Response

Page 92: Testing técnico - Automatización en web y mobile para pruebas funcionales y performance

http://www.abstracta.com.uy/

http://blog.abstracta.com.uy

@gxtest

¡A testear!Testing técnico

Federico [email protected]

@fltoledo