Técnicas de automatización Going from GOOD to GREAT

+
Técnicas de automatización
Going from GOOD to GREAT
Diego Tortoriello
Federico Regueira
Gonzalo Ciosek
+
Forma de trabajo en este workshop
+
Are you ready? – [5 min]
+
Setup – [10 min]
①  Conectar a la wi-fi “makeitworkshop”
n 
Psw: MAKEITWORKSHOP
②  Copiar al equipo personal la carpeta “MIW-WORKSHOP”
n 
IDEExport
n 
PageObjects
n 
SelenoScripts
③  Chequear que se pueda acceder a la aplicación de prueba:
n 
http://192.168.0.161:57300
+
¿Por qué se automatizan las
pruebas?
n  Acumular
cobertura.
n  Optimizar
regresión.
n  Para “apalancar” las
pruebas
manuales (leverage).
n  Para
reducir el “time to
market” de los productos.
n  Para
reducir el costo de las
fallas detectándolas antes.
+
Grandes expectativas
“La automatización de pruebas es la solución”
+
Gran autoconfianza al comenzar
“Who’s awesome? We are!”
+
Cambios en el código
“¡Hay que cambiar todos los scripts!”
+
Sentimiento de frustración
“¡Esto es imposible de mantener!”
+
+
Selenium IDE
If you want to create quick bug reproduction scripts,
create scripts to aid in automation-aided exploratory
testing.
+
make it work!
Lab 1: Grabar script – [15 min]
①  URL: http://192.168.0.161:57300
②  Abrir FireFox, y el plugin Selenium IDE.
③  Grabar un script que ejecute las siguientes acciones.
n 
Login (usuario: “Pedro” / pass: “contra”).
n 
Condición de verificación:El nombre de usuario debe aparecer
debajo del logo.
n 
Crear nuevo proyecto.
n 
Condición de verificación: El proyecto se muestra en la lista de
proyectos.
④  Ejecutar script y observar comportamiento.
+
Conclusiones
n 
Fácil de crear.
n 
No requiere skills de programación.
n 
Los scripts se generan rápidamente.
n 
Es un primer comienzo que aporta
elementos nuevos en un proyecto.
n 
Los datos de prueba quedan “en duro”.
n 
Los elementos quedan localizados “en
duro”.
n 
No es posible crear iteraciones.
n 
Se ejecuta sólo desde FireFox.
+
Selenium 2.0
Selenium 1.0 + WebDriver = Selenium 2.0
If you want to:
§  create robust, browser-based regression
automation suites and tests
§  scale and distribute scripts across many
environments
+
make it work!
Lab 2: Exportar a Selenium Webdriver – [10 min]
①  Demo de exportación SeleniumIDE > Selenium 2.0.
②  Observar el código generado por la exportación.
n 
Locators repetidos.
n 
Test-data.
n 
¡Estamos en Java! >> iteraciones + datasource externo.
③  Abrir Eclipse.
④  Abriel el proyecto “IDEExport”.
+
make it work!
Lab 3: Iteraciones y data-source externo – [10 min]]
①  Observar el código del proyecto “IDEExport”.
n 
Iteración.
n 
Conexión a datasource externo.
+
Conclusiones
n 
Es sencillo pasar del script grabado en Selenese a un script que pueda
ser potenciado en otro lenguaje (java).
n 
Los “locators” de los elementos quedan repetidos en cada test.
n 
El código queda poco legible y difícil de seguir. (Un script que en el IDE
tiene 5 líneas, con la exportación genera 95 líneas.)
n 
Este es un script chico, y por lo tanto fácilmente mantenible.
n 
Con el tiempo, las suites de pruebas crecen, y es necesario agregar
cada vez más líneas de código para mantener los scripts actualizados.
n 
Con este apprach, si 10 scripts diferentes usan los mismos elementos de
una página (control“usuario” / control “password”), cualquier cambio a
un elemento deberá ser actualizado en los 10 scripts. Esto demanda
mucho tiempo y es una fuente potencial de errores.
+
Usando POM (Page Object Model)
n 
Un approach más eficiente para el mantenimiento de los scripts es
separar las operaciones de localización (find) de las operaciones de
input de datos o verificación de los elementos.
n 
De esta forma, si un elemento de la página cambia, el cambio sólo
debe hacerse en un archivo y no en 10 scripts difrentes.
n 
A este approach se le llama Page Object Model(POM), y ayuda a
mantener el código más legible, más fácil de mantener y más
reutilizable.
+
+
make it work!
Lab 4: Trabajar con (Page Object Model) – [15 min]
①  Cargar el proyecto “PageObject”.
②  Observar la definición de clases.
n 
Abrir la clase“PageLogin” del paquete “Pages”.
n 
Abrir la clase “TestLogin” del paquete “Scripts”.
③  Escribir un test nuevo para el Login utlizando el template
“TestEmpty”.
④  Observar el código (itellisense, etc)
+
Conclusiones
n 
El uso de POM hace más sencillo el mantenimiento.
n 
El código es más legible.
n 
La lógica de las pruebas queda separada de la estructura HTML de la
página.
n 
El repositorio de objetos es independiente de los testcases, lo que nos
permite reutilizar el repositorio para diferentes propósitos. Por ejemplo: es
posible integrar los POMs con Junit para las pruebas funcionales y el mismo
repositorio utlizarlo para UAT con Cucumber.
n 
El código queda más “corto” y optimizado, pues los POMs se reutilizan en
las demás clases.
n 
Los métodos pueden tener nombres más adecuados a las acciones de las
páginas (acciones de negocio) y pueden ser mapeados fácilmente con la
operación descripta en la UX. Por ejemplo: luego de hacer click en un botón
que navega a la home page, el método puede llamarse 'gotoHomePage()'.
+
Seleno Automation Framework
Scripts simples de crear
+
¿Qué es Seleno?
n 
Seleno is an open source project from TestStack which helps
you write automated UI tests with Selenium.
n 
It focuses on the use of Page Objects and Page Components
and by reading from and writing to web pages using strongly
typed view models.
+
¿Cómo trabajar con Seleno?
MVC Apps (.Net) / Other apps
MVC Apps
Other apps
El diseño del modelo de test se integra al modelo
de desarrollo.
Es necesario generar el mapping entre el modelo
de objetos desarrollo (páginas, clases) y los
objetos de Seleno.
Lee el modelo de desarrollo directamente, y a
partir de ahí mantiene los objetos dinámicamente
(refactor).
No lee el código fuente, tabaja sobre la app
compilada .
Necesita acceso al código fuente.
+
make it work!
Lab 5: Observar Seleno en acción – [15 min]
①  Demo de implementación de Seleno con app no MVC.
n 
Herencia de clases provistas por el fwk.
n 
Properties y métodos.
n 
Test script usando Seleno.
②  Demo de implementación de Seleno con app MVC.
n 
Herencia de clases provistas por el fwk.
n 
Properties y métodos.
n 
Test script usando Seleno.
+
¿Cómo trabajar con Seleno?
MVC Apps (.Net)
n 
Seleno desarrolla su máximo potencial cuando se utiliza
como framework de automatización para aplicaciones
desarrolladas con MVC(r) de Microsoft (r).
n 
Seleno se integra al código fuente, y los objetos de prueba
se leen directamente desde la definición del modelo.
n 
Al trabajar con un modelo fuertemente tipado, Seleno
permite manejar las páginas como objetos, definiendo
propiedades y métodos.
n 
Es posible intanciar durante las pruebas una instancia
“populated” del modelo, e ingresar esa información en una
página web utilizando el método “Input()”.
+
Conclusiones
n 
Permite incorporar elementos y lenguaje de negocio en los
tests.
n 
n 
El código es más legible.
Se hace más sencillo el mantenimiento de los scripts.
n 
La lógica de las pruebas queda separada, pero integrada al
modelo de desarrollo (MVC).
n 
Permite trabajar con modelos y patrones (patterns), lo cual
hace más sólido el diseño del modelo de pruebas.
+
Algunos resultados (3 proyectos)
n 
A partir del segundo ciclo de automatización, el tiempo
promedio de las pruebas de humo de negocio se redujo a la
mitad.
n 
Tiempo promedio de implementación del primer ciclo: entre
2 y 3 meses (análisis, implementación y ejecución).
Automated test
initial estimation
Maual test
initial estimation
Automated test
duration after
one cycle
+
¡Gracias!
n 
[email protected]
n 
[email protected]
n 
[email protected]