Automatización de interfaces e introducción a bdd
-
Upload
jorge-ortiz -
Category
Technology
-
view
506 -
download
0
description
Transcript of Automatización de interfaces e introducción a bdd
![Page 1: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/1.jpg)
Pruebas de interfaz automatizadas
e introducción a BDD
Santiago Rodríguez Sordo
@santiagorodsor
![Page 2: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/2.jpg)
introducción a BDD
![Page 3: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/3.jpg)
YAGNI
1/234
![Page 4: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/4.jpg)
Aproximacióncumplir las especificacioneslenguaje coloquial
evalúan el código continuamente con las especificaciones
2/234
![Page 5: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/5.jpg)
BDD
Proceso de desarrollo de software
Specification by Example.
Son casos reales3/234
![Page 6: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/6.jpg)
BDD
¿¿¿ 3/234 ???
![Page 7: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/7.jpg)
BDDRequisitos y comportamientos
Historia de usuario
Criterio de aceptación
![Page 8: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/8.jpg)
BDD, ¿qué requisitos?
Historia de usuario Criterio de aceptación
Escenario
![Page 9: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/9.jpg)
BDD, ¿cómo los expreso?
Escenario: Veré mi nombre al entrar en la app.
Como usuario
Quiero entrar en la aplicación
De manera que vea mi nombre
![Page 10: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/10.jpg)
BDD, ¿cómo los expreso?
Escenario: <Descripción de la historia>Como <rol>Quiero <acción>De manera que <suceda algo>
![Page 11: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/11.jpg)
BDD, ¿cómo los expreso?Escenario: Un usuario ve todos los mensajes nuevos
Cómo usuario de la aplicación llego a la pantalla de notificaciones
Dado que veo que tengo 3 notificaciones de mensaje.
Cuando entro en la página de mensajes.
Observo que hay 3 mensajes nuevos.
Dado que entro en cada uno de ellos.
Entonces veo que no tengo ningún mensaje.
![Page 12: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/12.jpg)
BDD, ¿cómo los expreso?Gherkin
![Page 13: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/13.jpg)
GherkinFeatureBackground:Scenario: Some determinable business situation Given some precondition And some other precondition When some action by the actor And some other action And yet another action Then some testable outcome is achieved And something else we can check happens too
![Page 14: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/14.jpg)
Cheatsheet
Given (“dado”), llevará al sistema a un estado conocido
When (“cuando”), describe la acción clave
Then (“entonces”), describe salidas observables
And (“ y ”) But (“ pero “)
https://github.com/cucumber/cucumber/wiki/Given-When-Then
![Page 15: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/15.jpg)
Tus features tu implementación guiar deben,
no esta reflejar.
![Page 16: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/16.jpg)
¿funcionará?
![Page 17: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/17.jpg)
Proceso
1. Se elige un escenario.2. Se implementa el código 3. ¿Pasa la prueba?
No -> Vuelve al paso 24. Cuando pase el test se da por bueno.5. Escenario Done!
![Page 18: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/18.jpg)
Evolutivo1. Se hace una modificación.2. Se pasa un test: ERROR
A: Si escenario correcto, he metido un bug.B: Si la prueba no se ajusta al código, modifico la prueba y
vuelvo a evaluar.C: Si la especificación a cambiado, desecho la prueba.
![Page 19: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/19.jpg)
Todo el procesoHistoria de usuario feature
Feature 1● Scenario1● Scenario2● Scenario3
Feature 2● Scenario1● Scenario2● Scenario3
Feature 3● Scenario1● Scenario2● Scenario3
![Page 20: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/20.jpg)
… pero … … son muchos escenarios ...
… utiliza la fuerza ...
![Page 21: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/21.jpg)
Automatización de interfaz
![Page 22: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/22.jpg)
Disponemos de máquinas, que hagan el trabajo repetitivo.
La fuerz… AUTOMATIZACIÓN
![Page 23: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/23.jpg)
La solución única no existeScenario:
As a Mobile Developer BDD-lover quiero adelantar trabajo.
Given no hay manera buena de desarrollar para Android e iOS a la vez.
When busco una prueba única Android e iOS
Then encuentro una manera buena de automatizar Android e iOS a la vez. FAIL
PASS
PASS
:( :(
![Page 24: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/24.jpg)
AUTOMATIZACIÓNNativo
Instruments - UIAutomation ”.js”UIAutomator (Android) “.java”Appium - Webdriver (iOS, Android).js, ( lento :( y poco fiable)
![Page 25: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/25.jpg)
Apply: Appium http://appium.io/
PROs:- Utiliza las herramientas nativas de cada plataforma.- La interfaz es común (Android e iOS)
CONTRAs:- Lento.- Poco fiable.- No tiene waits bien soportados.
![Page 26: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/26.jpg)
AUTOMATIZACIÓNiOS
Cedar http://pivotallabs.com/test-driven-iphone-development-with-cedar/
KiwiKIF
![Page 27: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/27.jpg)
AUTOMATIZACIÓNCucumber
CalabashFrankiCuke
![Page 28: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/28.jpg)
Apply: Calabash http://calaba.sh/
PROs:- tiene muchos gestos soportados- utiliza una interfaz “común” para iOS y Android.- hay referencias de que se usa
CONTRAs:- intrusivo en iOS Projects- utiliza comandos de muy bajo nivel para muchas cosas
![Page 29: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/29.jpg)
Apply: iCuke https://github.com/unboxed/icuke
PROs:- acceso directo al runtime de la app vía HTTP- acciones inside iOS APIS- podría integrarse con calabash o cucumber
CONTRAs:- parece anticuado (2010)- demasiado incompleto
![Page 30: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/30.jpg)
Apply: Frank http://www.testingwithfrank.com/
PROs:- fácil de cargar entorno- “buena” experiencia simulator/idevice- no “intrusivo” en iOS projects- symbiote
CONTRAs:- mejorables gestos- utiliza comandos de muy bajo nivel para muchas cosas
![Page 31: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/31.jpg)
¿Cómo lo hacen?
![Page 32: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/32.jpg)
Cucumberfeatures/myfeature.feature
features/steps/myfeature_step.rb
![Page 33: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/33.jpg)
Cucumber
![Page 34: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/34.jpg)
Cucumber
![Page 35: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/35.jpg)
Step by step
![Page 36: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/36.jpg)
Step by step
![Page 37: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/37.jpg)
Make your own steps
![Page 38: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/38.jpg)
1. gem server2. browser, localhost:88083. frank-cucumber4.
Make your own steps
![Page 39: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/39.jpg)
selector + comando + parámetro
- (Array) frankly_map(selector, method_name, *method_args)
Ask Frank to execute an arbitrary Objective-C method on each view which matches the specified selector.
![Page 40: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/40.jpg)
Cucumber Wrap Up
Gherkin Steps
Frank
Calabash
iCuke
![Page 41: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/41.jpg)
![Page 42: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/42.jpg)
Si no lo veo no lo creo
![Page 43: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/43.jpg)
Ya lo veo claro ...
Probaré ...
![Page 44: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/44.jpg)
Ya lo veo claro ...
Probaré ...
![Page 45: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/45.jpg)
Ya lo veo claro ...
Probaré ...
![Page 46: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/46.jpg)
Ya lo veo claro ...
Probaré ...
Hasta el infinitoooo ...
![Page 47: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/47.jpg)
![Page 48: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/48.jpg)
No perdamos la especificación
Aplíquese:- no sólo como automatización- no en todas las combinaciones- con criterio- en el desarrollo- sin pensar que va a hacerte el código. ^_^
![Page 49: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/49.jpg)
Entonces... ¡ Cucumber es BDD!
NO !!!!
![Page 50: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/50.jpg)
Se usa Cucumber para BDD
En BDD se tienen las pruebas alineadas con los requerimientos.
Para ayudarnos usamos Cucumber.
![Page 51: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/51.jpg)
Some tricks
![Page 52: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/52.jpg)
Cuidado, pruebas automatizadas
El desarrollo cambia a menudo los puntos en los que se apoyan,hay que fijarlos en el desarrollo y todo el equipo debe responsabilizarse.
![Page 53: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/53.jpg)
Punto de apoyo = identificadorUIAccessibilityIdentification
“protocol used to associate a unique identifier with elements in your user interface”
@property(nonatomic, copy) NSString *accessibilityIdentifier
![Page 54: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/54.jpg)
Page Object Pattern
![Page 55: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/55.jpg)
Page Object Pattern
![Page 56: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/56.jpg)
Page Object Pattern
![Page 57: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/57.jpg)
Page Object Pattern
![Page 58: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/58.jpg)
Queries
![Page 59: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/59.jpg)
Queries
![Page 60: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/60.jpg)
Queries
![Page 61: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/61.jpg)
Queries
![Page 62: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/62.jpg)
wait
![Page 63: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/63.jpg)
wait
![Page 64: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/64.jpg)
wait
![Page 65: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/65.jpg)
services
![Page 66: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/66.jpg)
services
![Page 67: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/67.jpg)
Wrap up:
![Page 68: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/68.jpg)
![Page 69: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/69.jpg)
![Page 70: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/70.jpg)
![Page 71: Automatización de interfaces e introducción a bdd](https://reader034.fdocuments.co/reader034/viewer/2022052315/556387a3d8b42acc128b4a44/html5/thumbnails/71.jpg)
http://www.testingwithfrank.com/
http://cukes.info/
https://cucumber.pro/
@santiagorodsor