Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Charla Evento TestingUY 2018 - 911: Automatización para emergencias

136 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Charla Evento TestingUY 2018 - 911: Automatización para emergencias

  1. 1. 911 : Automatización para Emergencias Maximiliano Piñeyro Pimagra@gmail.com @pimagra 21 y 22 de mayo, 2018 www.testinguy.org #testinguy |@testinguy
  2. 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. 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. 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. 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. 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. 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
  8. 8. 8 1 - Loguearse EJEMPLO
  9. 9. 9 2 - Ingresar transacción en campo “Buscar transacción” y clickear en buscar
  10. 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
  11. 11. 11 5 - Elegir una de las opciones
  12. 12. 12 6 - Consultar a la BD un dato ‘mágico’ y postearlo usando un servicio REST. 7 - Buscar la siguiente transacción y repetir los mismos pasos...
  13. 13. 13 DATOS DE ENTRADA EXCEL JSON para el REST SERVICE
  14. 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. 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. 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. 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.
  18. 18. 18
  19. 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. 20 1 - En el constructor creamos la conexión a la BD 2 - Método que busca el dato y lo devuelve
  21. 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. 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. 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. 24. 21 y 22 de mayo, 2018 www.testinguy.org #testinguy |@testinguy ¿PREGUNTAS? ¡MUCHAS GRACIAS! Maximiliano Piñeyro Pimagra@gmail.com @pimagra

×