Expositor: Maximiliano Piñeyro
Resumen: Muchas veces en nuestro trabajo existen situaciones no esperadas que implican una traba en el sistema, como bugs en producción o cambios de flujos de negocio, afectando datos/procesos anteriores y creando conflictos en los mismos. En algunas ocasiones el problema genera una carga de trabajo manual importante, donde debemos notificar a un número determinado de clientes de forma manual, transferir datos a otras plataformas o ejecutar procesos manuales largos y tediosos.
Por lo general esto se da por falta de soluciones tecnológicas que no permiten que el sistema pueda resolverlos automáticamente, implicando que un grupo de personas deban solucionar estos problemas manualmente y la empresa asuma un alto costo en lo que se refiere a horas de trabajo.
Esta charla plantea un enfoque distinto en el uso diario que le damos a las herramientas de automatización, logrando resolver esta problemática de forma sencilla, y donde descubriremos que disponemos de un universo de posibilidades que va más allá del testing. Veremos cómo crear robots que lean de cualquier fuente de datos e interactúen con pantallas, servicios REST y bases de datos, hasta robots que sean activados desde una app y ejecuten procesos manuales de forma automática.
2. PROBLEMAS EN PRODUCCIÓN 2
Bugs Mails mal enviados Errores al cobrar Errores de flujo
Bugs no encontrados
en ambiente de testing
Información mal
enviada al cliente
Le cobramos o no al
cliente
Cambios en el flujo
que afectan a objetos
creados anteriormente
Comienza
flujo
Acción Finaliza flujo
Comienza
flujo
Acción
Finaliza
flujo
Acción
2
(necesita más datos y objetos viejos no
lo tienen)
3. ● No tenemos una API
REST, no disponemos
de servicios REST
● Tenemos una API
REST pero son
muchas
transacciones
API REST
● Proceso largo y
tedioso
● Demasiado tiempo
para solucionarlo
PROCESOS
● Comunicación con
proveedores
externos que no
podemos controlar
automáticamente
PLATAFORMAS
EXTERNAS
● Impacto en
múltiples tablas o
bases de datos
BASES DE DATOS
● Poco personal
para solucionarlo
de forma manual
PERSONAL
Y QUE PASA SI....
4. CONSECUENCIAS 4
Disculpas al cliente
Llamadas
Correcciones de los
emails y envíos
múltiples
Emails
Horas extra a los
empleados, trabajo
hasta tarde.
Horas extra
Podemos sufrir una
mala imagen debido a
nuestros errores.
Mala imagen
Alta carga de trabajo
manual.
Trabajo manual
Debido a clientes
disconformes.
Juicios
5. Navegamos pantallas
TESTING AUTOMATIZADO! 5
1
2
3
4
Consultamos / modificamos registros en la BD
Interactuamos con servicios REST
Leemos archivos / tenemos fuentes de datos
6. ¡TRABAJO EN EQUIPO!
NECESITAMOS... 6
CSV, Queries,
Excel, REST API,
etc.
DATOS DE
ENTRADA
Pasos claros a
realizar,
importante ver
TODOS los
caminos!
PASOS
Nuevos datos a
ser cambiados,
acciones
nuevas, etc.
DATOS
NUEVOS
Alguna forma
de verificar
que lo que
hicimos esté
bien
VERIFICACIÓN
Necesitamos
probar el robot
mientras lo
desarrollamos
AMBIENTE
DE PRUEBA
Ejecuciones en
paralelo
(opcional)
INFRA-
ESTRUCTURA
7. Selenium, Watir,
HTMLUnit, etc
LIBRERIAS 7
Navegación de
pantallas
RestAssured + Jackson,
URI, net/http, etc.
Interacción con REST
Services
Gema MySql, mysql-
connector, etc.
Consultas a la BD
Javacsv, POI, gema
spreedsheat, etc.
Lectura de XML, CSV, etc.
Slf4j, gema logger, etc.
Escritura de
LOGS
c
9. 9
2 - Ingresar transacción en campo “Buscar transacción” y clickear en buscar
10. 10
3 - Consultar servicio REST para obtener el nuevo dato a ingresar
4 - Ingresar nuevo dato, activar (o no) y seleccionar acción 1 o 2. Finalizar clickeando modificar datos
14. 14
Clase que contiene los métodos para consultar a la BD
Clase que contiene los métodos para consultar los
servicios REST
Clase donde almacenaremos información
Clase que ejecuta
Property para que funcione log4j
JSON que se usará en el POST del servicio
Excel que será nuestra fuente de datos
ESQUELETO BÁSICO
15. 15
1 - LOGGER y CSV
2 - Creamos un TEST
3 - Seteamos el CSV
4 - Creamos el WebDriver
5 - Accedemos a la WEB
6 - Nos logueamos
16. 16
1 - Leemos el EXCEL
2 - Bucle de las filas del EXCEL
3 - En cada Iteración escribimos en
el log y almacenamos en variables
los valores de cada columna.
4 - Se obtienen mas datos por el
servicio REST que tambien
almacenamos en variables y
escribimos en el LOG
17. 17
1 - En el constructor seteamos los
valores del Cliente de la API : URL,
servicios (POST y GET) y
objectMapper de Jackson para
mapear el JSON a Objeto.
2 - Creamos metodo que haga el
GET al servicio y lo mapee a un
objeto.
3 - Creamos metodo que haga el
POST al servicio usando el json que
ya tenemos.
19. 19
1 - Buscamos la transaccion
2 - Escribimos nuevo dato
3 - Clickeamos o no en el checkbox
4 - Elegimos accion 1 o 2
5 - Avanzamos a siguiente pantalla
20. 20
1 - En el constructor creamos la
conexión a la BD
2 - Método que busca el dato y lo
devuelve
21. 21
1 - Se clickea en boton cobrar o
cancelar
2 - Se consulta a la BD el numero
mágico
3 - Se llama al cliente de la REST API
y se hace el POST
4 - Finaliza la iteración
22. TIPS! 22
Sleeps si son necesarios
Thread.sleep
Leer en consola con el comando ‘tail’ el log para verlo en vivo
Lectura de LOGS
Tener cuidado de no pisar datos
Ojo la ejecución en paralelo!
Entender bien las diferentes casuísticas y tener planes de acción si algo no sale como
planeamos (try/catch, dejar registro de fallos, continuar con la siguiente, etc)
Casuisticas!
Ejecutar en headless si son demasiados registros
Headless
Lo importante es que no se caiga, TIENE que correr perfectamente
Lo mas importante.. Robustez!
Probar en ambientes de prueba antes de lanzar en producción.
PRUEBAS!
23. AUTOMATION INTEGRADO 23
Podemos usar Jenkins para exponer nuestro robot y ejecutarlo desde el proyecto de desarrollo usando la API de Jenkins
OTRO USO PARA JENKINS
Librerias como Java servlet, Spring, etc. para levantar un WebServer, hacer un deploy del proyecto de automation, exponer nuestros robots
como servicios y llamarlo por API REST desde el proyecto de desarrollo (no usamos Jenkins de esta forma)
OTRA FORMA DE EXPONER
Cambia estado del proceso a OK o a Fallido
Cambia estado del proceso a ‘In progress’
devuelve el estado
/status cada cierto tiempo
24.
25. 21 y 22 de mayo, 2018
www.testinguy.org
#testinguy |@testinguy
¿PREGUNTAS?
¡MUCHAS GRACIAS!
Maximiliano Piñeyro
Pimagra@gmail.com
@pimagra