Diseño y automatización de pruebas software en entornos gráficos
Introducción a automatización de pruebas web
-
Upload
francisco-moreno-sanz -
Category
Software
-
view
270 -
download
0
Transcript of Introducción a automatización de pruebas web
Automatización pruebas web
Escuela Politécnica de Ingeniería Gijón - Diciembre 2015
Francisco Moreno (@morvader) Responsable QA en Atiun Comunicaciones [email protected]
Francisco Moreno (@morvader) Responsable QA en Atiun Comunicaciones [email protected]
He visto cosas que no creeríais
#Intro
¿Por qué son necesarias las pruebas?
¿Por qué son necesarias las pruebas?
Las personas cometen errores
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Sin miedo a cambios
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos Clientes satisfechos
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos Clientes satisfechos
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos Clientes satisfechos
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos Clientes satisfechos
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos Clientes satisfechos
¿Por qué son necesarias las pruebas?
Las personas cometen errores
Verificar cumplimiento expectativas
Sin fallos ≠Funcional
Feedback temprano interno = avance rápido
Sin miedo a cambios
Rápidos y robustos Clientes satisfechos
#EstaPasando #TrueStory
En alguna empresa del mundo...
¡¡NUEVO PROYECTO!!
En alguna empresa del mundo...
Esta vez queremos hacer las cosas bien de verdad
¡¡NUEVO PROYECTO!!
En alguna empresa del mundo...
Esta vez queremos hacer las cosas bien de verdad
¡¡NUEVO PROYECTO!!
En alguna empresa del mundo...
Esta vez queremos hacer las cosas bien de verdad
· Vamos a usar la última tecnología
¡¡NUEVO PROYECTO!!
En alguna empresa del mundo...
Esta vez queremos hacer las cosas bien de verdad
· Vamos a usar la última tecnología
· Vamos a usar Scrum: Desarrollo ágil e iterativo
¡¡NUEVO PROYECTO!!
En alguna empresa del mundo...
Esta vez queremos hacer las cosas bien de verdad
· Vamos a usar la última tecnología
· Vamos a usar Scrum: Desarrollo ágil e iterativo
· Vamos a cumplir plazos
¡¡NUEVO PROYECTO!!
En alguna empresa del mundo...
Esta vez queremos hacer las cosas bien de verdad
· Vamos a usar la última tecnología
· Vamos a usar Scrum: Desarrollo ágil e iterativo
· Vamos a cumplir plazos
¿Y las pruebas?
¡¡NUEVO PROYECTO!!
En alguna empresa del mundo...
Esta vez queremos hacer las cosas bien de verdad
· Vamos a usar la última tecnología
· Vamos a usar Scrum: Desarrollo ágil e iterativo
· Vamos a cumplir plazos
¿Y las pruebas? Por supuesto, tenemos un tester que hará las pruebas al final de cada iteración como hasta ahora
¡¡NUEVO PROYECTO!!
Primeras iteraciones Empresa
Primeras iteraciones Empresa
Primeras iteraciones Empresa
Devs
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
QA
Primeras iteraciones Empresa
Devs
Primeras iteraciones Empresa
Devs
Primeras iteraciones Empresa
Devs
· El trabajo de pruebas aumenta con cada iteración. Nunca disminuye
· El feedback a desarrollo comienza a ralentizarse
Siguientes iteraciones Empresa
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
Devs
Siguientes iteraciones Empresa
· Las pruebas completas llevan mucho tiempo: ¿Centrarse en lo nuevo o que todo siga funcionando? · No hay tiempo para testing de calidad. Además aumentan las probabilidades de errores humanos · Feedback lento. Cambio contexto ralentiza desarrollos. Propenso a errores · Cliente comienza recibir desarrollos sin probar
Devs
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
Últimas iteraciones Empresa
· Tiempos de pruebas inmanejables. Sin testing de calidad, sólo checking · Entrega de versiones completas sin probar. Fallos de regresión · Coste de corrección de errores disparado y descontrolado
Un momento de reflexión
Análisis de la situación
¿Qué quiere cada parte?
¿Qué quiere cada parte?
Desarrollo
✓ Feedback rápido y
claro
✓ Confianza en las
pruebas
✓ Red de seguridad
¿Qué quiere cada parte?
Desarrollo
✓ Feedback rápido y
claro
✓ Confianza en las
pruebas
✓ Red de seguridad
QA
✓ Más tiempo para
testing de calidad
✓ Mayor trazabilidad
✓ Trabajo menos
repetitivo
¿Qué quiere cada parte?
Desarrollo
✓ Feedback rápido y
claro
✓ Confianza en las
pruebas
✓ Red de seguridad
QA
✓ Más tiempo para
testing de calidad
✓ Mayor trazabilidad
✓ Trabajo menos
repetitivo
Cliente
✓ Entregas rápidas
✓ Versiones sin errores
✓ Lo que antes
funcionaba todavía lo
hace
¿Qué trabajo está haciendo QA?
Test Plan
Lista verificación
Regresión
Excel
Post-its
….
¿Qué trabajo está haciendo QA?
Secuencia de pasos definida
Resultado esperado especificado
Ejecutado una y otra vez
Test Plan
Lista verificación
Regresión
Excel
Post-its
….
¿Qué trabajo está haciendo QA?
Secuencia de pasos definida
Resultado esperado especificado
Ejecutado una y otra vez
¿Qué podría hacer alguien con conocimientos de programación ante una tarea repetitiva, con una secuencia de pasos de definida y conociendo el resultado esperado ?
Test Plan
Lista verificación
Regresión
Excel
Post-its
….
Como mínimo: “Todo va bien”
Automatizar checkeos de funcionalidad básica del sistema
✓ En cualquier momento. También para monitorizar producción
✓ Feedback temprano rápido: Podemos seguir, no hemos roto nada
✓ Confianza en los resultados: Reproducible y sin errores humanos
✓ Deja tiempo para Testing de calidad
#AutomatedTesting #Selenium
Automatización web con Selenium
Emular interacciones de un usuario sobre el navegador
API para varios lenguajes
Multinavegador
Automatización web con Selenium
Emular interacciones de un usuario sobre el navegador
API para varios lenguajes
Multinavegador
Java, .Net, Python ...
Web Driver
Nociones básicas
JUnit
@Test - Métodos que se
ejecutan independientemente
Asserts - Comprobaciones
@Before y @After
Nociones básicas
JUnit
@Test - Métodos que se
ejecutan independientemente
Asserts - Comprobaciones
@Before y @After
Código sin verificar
Nociones básicas
JUnit
@Test - Métodos que se
ejecutan independientemente
Asserts - Comprobaciones
@Before y @After
Tips
KISS:
@Test {
//ARRANGE – Given
//ACT – When
//ASSERT – Then
}
Nombres representativos
Clean code
¿Pruebas de pruebas?
Código sin verificar
#Demo #Selenium #Java
#Conclusiones
Conclusiones
· Un verdadero desarrollo ágil e iterativo requiere automatización de pruebas
· Checking vs Testing
· ¡No sustituye al testing manual!
· El código de test debe ser tratado con cariño
· Automatizar con sentido común
Conclusiones
· Un verdadero desarrollo ágil e iterativo requiere automatización de pruebas
· Checking vs Testing
· ¡No sustituye al testing manual!
· El código de test debe ser tratado con cariño
· Automatizar con sentido común
Nº Pruebas
Usuario
Código
#TheEnd
Francisco Moreno (@morvader)
Diciembre 2015