SlideShare ist ein Scribd-Unternehmen logo
1 von 41
AUTOMATIZACIÓN DE
         PRUEBAS
     FUNCIONALES
VICENÇ GARCÍA ALTÉS

• Development Advisor en PlainConcepts
• Professional Scrum Developer y Certified Scrum Master
• Microsoft Certified Professional


     vigarcia@plainconcepts.com

    @vgaltes

    www.plainconcepts.com

    geeks.ms/blogs/devnettips
TESTEO FUNCIONAL

Definición:
  – Asegura que el software desarrollado está haciendo
    para lo que fue concebido, que cumple los
    requerimientos.


No deben ser nuestros únicos tests.
LA PIRÁMIDE INVERTIDA
LA PIRÁMIDE INVERTIDA

La base de la pirámide está construida por tests de
interfaz de usuario
  – Frágiles
  – Complejos
  – Lentos
LA PIRÁMIDE INVERTIDA

• Mantener muchos tests “end-to-end” es duro:
  – Tardan en ejecutarse
  – Pueden necesitar muchos recursos
  – Hay caminos difíciles de testear
  – Cuando fallan, no sabemos exactamente donde o
    porqué lo han hecho
  – Están más acoplados con el entorno y tienen
    dependencias externas
  – Desde un punto de vista de refactorización, no dan la
    misma sensación de seguridad que los tests unitarios
INVIRTIENDO LA PIRÁMIDE
AUTOMATIZACIÓN

• La repetición de los tests (de cualquier tipo) es
  necesaria ya que elimina regresiones.
• Con la automatización eliminamos el desperdicio
  asociado a la repetición.
AUTOMATIZACIÓN

• La automatización es muy difícil
  – Requiere disciplina
     • Es muy tentador no escribir tests
     • Es muy tentador ver los tests como desperdicio
     • Les tests no son algo intuitivo
  – Requiere vigilancia
     • Alguien tiene que observar los resultados en rojo
     • Alguien tiene que reparar los ‘cristales rotos’
     • Alguien tiene que evitar que la ‘tensión’ decline
¿DÓNDE SON BUENOS LOS TESTS DE UI
AUTOMATIZADOS?
Suite de regresión automatizada
Suite de regresión automatizada

• Automatizar pruebas manuales que hayan pasado
  con éxito
• Convertir una grabación de Test Manager en
  Coded UI y añadirle aserciones.
Suite de regresión automatizada

• Cuidado!
  – No tomar como sustituto de otras pruebas
  – No invertir la pirámide
Pruebas de regresión automatizadas de bugs
Pruebas de regresión automatizadas de bugs

• Al resolver un bug se crea una prueba
  automatizada que se lanza en una build para
  asegurarse que no vuelve a aparecer
• Sobretodo útil en entornos “brownfield”
Pruebas de la GUI
Pruebas de humo automatizadas
Pruebas de humo automatizadas

• Una prueba de humo comprueba que unas
  cuantas interacciones clave con el sistema se
  hacen bien justo después de un despliegue.
• Si se automatizan es mucho más rápido, cómodo y
  menos propenso a errores
Refactorizando
Refactorizando

• Rescribiendo una parte del sistema que se tenga
  que seguir comportando externamente igual.
• Podemos cubrirlo de pruebas de GUI y ponerlas en
  una build para refactorizar con más seguridad.
• No es substituto de pruebas unitarias.
• Útil en desarrollo brownfield.
¿CUANDO NO ES BUENO?
¿CUANDIO NO ES BUENO?

• Para substituir otro tipo de pruebas que no se
  hacen por pereza o porque son complicadas.
  – Mejor pensar en como puedo poner pruebas unitarias
• Si la GUI está en continuo cambio
  – Prototipando
  – Metiendo mucha funcionalidad nueva que afecta a la
    GUI
PLANIFICAR LA AUTOMATIZACIÓN
Identificación de casos

• Los identificaremos marcándo el Automation
  Status como planned en el MTM.
• Los escenarios comunes los pondremos como
  shared steps en el MTM.
• El orden lo marcamos con el campo order.
Prueba de concepto

• Hay que asegurarse que los tests seleccionados
  están soportados por Coded UI
• Pueden haber controles personalizados que no lo
  estén y que hacerlos automatizables sea muy
  costoso.
DEMO
Recomendaciones

• Utilizar múltiples mapas de UI
  – Cada mapa se puede asociar con una parte lógica de la
    aplicación
  – Cada tester puede trabajar en una sección de la
    aplicación sin interferir en el trabajo de los demás.
  – Los añadidos a la UI se pueden escalar
    incrementalmente con efectos mínimos en los otros
    tests.
Recomendaciones

• Extraer las funcionalidades comunes de los mapas
  UI a librerías comunes.
Recomendaciones

• Utilizar sincronización de objetos antes que
  wait/sleep estáticos
  – Asegurarse que tenemos puntos de sincronización que
    esperan que el objeto exista/esté disponible/esté
    activado/etc antes de realizar una operación crítica
     • WaitForControlReady(),WaitForControlExist()
  – Preferir la sincronización anterior antes que
    Playback.Wait() y antes que Thread.Sleep()
Recomendaciones

• Tratamiento de errores
  – Asegurarse que utilizamos captura de excepciones en
    todos los métodos de test
Recomendaciones

• Logging
  – Asegurarse que logueamos mensajes importantes
  – Console.WriteLine y Console.Error.WriteLine
     • Se redirijen al StandardOutput y al StandardError.
     • Se recomienda no utilizarlos
Recomendaciones

 – Trace.WriteLine
    • Se muestra en la pantalla de Output de VS durante la fase de
      depuración, con lo que se puede perder entre los otros
      mensajes que se muestran.
    • Se recomienda utilizarlo en código de producción, pero no de
      test.
 – Debug.WriteLine
    • Lo mismo que el anterior, pero solo en compilaciones Debug
Recomendaciones

 – TestContext.WriteLine
    • Se muestra en una sección a parte en el resultado de los
      tests.
    • La desventaja es que tenemos que pasar el TestContext allí
      donde queramos loguear.
    • Para los proyectos de test, es la solución preferida.
Recomendaciones

• Utilizar scripts de inicio y fin
   – [TestInitialize] y [TestCleanup]
   – [ClassInitialize] y [ClassCleanup]
   – [AssemblyInitialize] y [AssemblyCleanup]
DEMO
Do’s and Don’ts of UI Automation

• Do(s)
  – Cada método grabado tiene que actuar sobre una
    página, formulario, dialog box, etc.
  – Utilizar el Coded UI Test Builder siempre que sea
    posible.
  – Poner el foco explícitamente en la ventana donde el
    test va a introducir datos.
  – Cuando sea posible, limitar cada método grabado a
    pocas acciones, a poder ser a una.
Do’s and Don’ts of UI Automation

 – Crear un UIMap para cada modulo de nuestra
   aplicación e incluso para cada página.
 – Si estamos creando aserciones crear un método por
   cada aserción en el fichero UIMap.cs
 – Capturar screenshots en los fallos.
 – Dejar la UI en un estado conocido cuando un test ha
   terminado.
 – Loguear antes de hacer algo, no después (o ambas)
Do’s and Don’ts of UI Automation

 – Loguear el origen del mensaje (framework, código de
   producción, test).
 – Loguear cada operación válida realizada por el test
 – Utilizar tests dirigidos por datos siempre que se pueda
 – Refactorizar siempre que sea posible
Do’s and Don’ts of UI Automation

• Don’t(s)
  – No modificar el fichero UIMap.designer.cs
    directamente. Los cambios se perderían.
  – No hacer un sleep después de cada operación de UI
  – No lanzar la aplicación cada vez que se ejecuta un test
    porque se gasta mucho tiempo.
  – No hardcodear strings en los tests. Esto incluye
    ID’s, rutas, etc.
DEMO
MUCHAS GRACIAS




 vigarcia@plainconcepts.com

 @vgaltes

 www.plainconcepts.com

 geeks.ms/blogs/devnettips

Weitere ähnliche Inhalte

Was ist angesagt?

Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
Juan Ravi
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones web
paulinaaillon
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo software
Laura M. Castro
 

Was ist angesagt? (20)

Mejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicacionesMejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicaciones
 
Calidad del software cap3
Calidad del software   cap3Calidad del software   cap3
Calidad del software cap3
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Testing en aplicaciones móviles iOS, Android
Testing en aplicaciones móviles iOS, AndroidTesting en aplicaciones móviles iOS, Android
Testing en aplicaciones móviles iOS, Android
 
Test unitarios
Test unitariosTest unitarios
Test unitarios
 
Las mejores herramientas para realizar pruebas de software
Las mejores herramientas para realizar pruebas de softwareLas mejores herramientas para realizar pruebas de software
Las mejores herramientas para realizar pruebas de software
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
 
Mejores prácticas para testing de apps móviles
Mejores prácticas para testing de apps móvilesMejores prácticas para testing de apps móviles
Mejores prácticas para testing de apps móviles
 
Pruebas de Software
Pruebas de SoftwarePruebas de Software
Pruebas de Software
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Calidad del software cap2
Calidad del software   cap2Calidad del software   cap2
Calidad del software cap2
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones web
 
PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Testing - Ing. Gabriela Muñoz
Testing - Ing. Gabriela MuñozTesting - Ing. Gabriela Muñoz
Testing - Ing. Gabriela Muñoz
 
Pruebas del software
Pruebas del softwarePruebas del software
Pruebas del software
 
Pruebas funcionales
Pruebas funcionalesPruebas funcionales
Pruebas funcionales
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo software
 

Andere mochten auch

Uvm organizacion clase 2
Uvm organizacion clase 2Uvm organizacion clase 2
Uvm organizacion clase 2
Aramir14
 
Presentación corporativa testhouse consultores - v 3.9.1
Presentación corporativa   testhouse consultores - v 3.9.1Presentación corporativa   testhouse consultores - v 3.9.1
Presentación corporativa testhouse consultores - v 3.9.1
Testhouse
 
¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!
GeneXus
 
15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líder15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líder
Software Guru
 

Andere mochten auch (20)

Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Automatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareAutomatizacion De Pruebas De Software
Automatizacion De Pruebas De Software
 
Testing automatizado de aplicaciones web
Testing automatizado de aplicaciones webTesting automatizado de aplicaciones web
Testing automatizado de aplicaciones web
 
Niveles de la automatización, factores que la hacen destacar
Niveles de la automatización, factores que la hacen destacarNiveles de la automatización, factores que la hacen destacar
Niveles de la automatización, factores que la hacen destacar
 
Uvm organizacion clase 2
Uvm organizacion clase 2Uvm organizacion clase 2
Uvm organizacion clase 2
 
Automatizacion de pruebas de software
Automatizacion de pruebas de softwareAutomatizacion de pruebas de software
Automatizacion de pruebas de software
 
Taller cultura de calidad chimbote final
Taller cultura de calidad   chimbote finalTaller cultura de calidad   chimbote final
Taller cultura de calidad chimbote final
 
Presentación corporativa testhouse consultores - v 3.9.1
Presentación corporativa   testhouse consultores - v 3.9.1Presentación corporativa   testhouse consultores - v 3.9.1
Presentación corporativa testhouse consultores - v 3.9.1
 
Automatización para todos los presupuestos - Sebastián Grattarola
Automatización para todos los presupuestos - Sebastián GrattarolaAutomatización para todos los presupuestos - Sebastián Grattarola
Automatización para todos los presupuestos - Sebastián Grattarola
 
Build and test all, lo nuevo de GXtest para Desarrolladores
Build and test all, lo nuevo de GXtest para DesarrolladoresBuild and test all, lo nuevo de GXtest para Desarrolladores
Build and test all, lo nuevo de GXtest para Desarrolladores
 
GX23 - GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
GX23 - 	GXtest 2.0: Automatización de pruebas para la nueva generación de apl...GX23 - 	GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
GX23 - GXtest 2.0: Automatización de pruebas para la nueva generación de apl...
 
Testing automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
Testing automatizado, ¿qué futuro me espera? - Gonzalo ManceboTesting automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
Testing automatizado, ¿qué futuro me espera? - Gonzalo Mancebo
 
Gestión de proyectos guiada por los beneficios
Gestión de proyectos guiada por los beneficiosGestión de proyectos guiada por los beneficios
Gestión de proyectos guiada por los beneficios
 
¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!¡Esta prueba tiene que automatizarse!
¡Esta prueba tiene que automatizarse!
 
El Juego De Los Colores
El Juego De Los ColoresEl Juego De Los Colores
El Juego De Los Colores
 
Prueba yamarie
Prueba yamariePrueba yamarie
Prueba yamarie
 
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
 
La micea en la universidad cooperativa de colombia
La micea en la universidad cooperativa de colombiaLa micea en la universidad cooperativa de colombia
La micea en la universidad cooperativa de colombia
 
15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líder15 16 keynote transición-desarrollador_líder
15 16 keynote transición-desarrollador_líder
 
Web driver selenium simplified
Web driver selenium simplifiedWeb driver selenium simplified
Web driver selenium simplified
 

Ähnlich wie Automatización de pruebas funcionales

Introducción a testing en php
Introducción a testing en phpIntroducción a testing en php
Introducción a testing en php
Ismael Ambrosi
 

Ähnlich wie Automatización de pruebas funcionales (20)

Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2
 
Automatizacion de Pruebas
Automatizacion de PruebasAutomatizacion de Pruebas
Automatizacion de Pruebas
 
Ingeniería del software y metodologías ágiles
Ingeniería del software y metodologías ágilesIngeniería del software y metodologías ágiles
Ingeniería del software y metodologías ágiles
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 
Introducción a testing en php
Introducción a testing en phpIntroducción a testing en php
Introducción a testing en php
 
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animaciónLenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
 
Pruebas unitarias 7mo -b
Pruebas unitarias   7mo -bPruebas unitarias   7mo -b
Pruebas unitarias 7mo -b
 
Cómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCMCómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCM
 
Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Testing en equipos ágiles con Microsoft Test Manager y Lab Manager 2010
Testing en equipos ágiles con Microsoft Test Manager y Lab Manager 2010Testing en equipos ágiles con Microsoft Test Manager y Lab Manager 2010
Testing en equipos ágiles con Microsoft Test Manager y Lab Manager 2010
 
Buenos Aires Meetup - Lifecycle Tools
Buenos Aires Meetup - Lifecycle ToolsBuenos Aires Meetup - Lifecycle Tools
Buenos Aires Meetup - Lifecycle Tools
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 
TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
TestingAR V - Una Nueva Visión - Nicolas Arkhipenko - Estrategias y Controve...
 
Modelo Integración Continua en entornos de QA
Modelo Integración Continua en entornos de QAModelo Integración Continua en entornos de QA
Modelo Integración Continua en entornos de QA
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end Drupal
 
Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para Azure
 

Mehr von Vicenç García-Altés

Construcciones automatizadas multiplataforma con TFS2010
Construcciones automatizadas multiplataforma con TFS2010Construcciones automatizadas multiplataforma con TFS2010
Construcciones automatizadas multiplataforma con TFS2010
Vicenç García-Altés
 

Mehr von Vicenç García-Altés (15)

Operational Serverless
Operational ServerlessOperational Serverless
Operational Serverless
 
Architecture, architects and other mythological creatures
Architecture, architects and other mythological creaturesArchitecture, architects and other mythological creatures
Architecture, architects and other mythological creatures
 
Elm 101
Elm 101Elm 101
Elm 101
 
Your code as a crime scene
Your code as a crime sceneYour code as a crime scene
Your code as a crime scene
 
Gestión del ciclo de vida de aplicaciones Web. Continuous deployment.
Gestión del ciclo de vida de aplicaciones Web. Continuous deployment.Gestión del ciclo de vida de aplicaciones Web. Continuous deployment.
Gestión del ciclo de vida de aplicaciones Web. Continuous deployment.
 
Owin, katana y WebAPI
Owin, katana y WebAPIOwin, katana y WebAPI
Owin, katana y WebAPI
 
Bdd beyond testing
Bdd beyond testingBdd beyond testing
Bdd beyond testing
 
Novedades Visual Studio 2013
Novedades Visual Studio 2013Novedades Visual Studio 2013
Novedades Visual Studio 2013
 
Plain Concepts ALM Tour 2013 - Estamos construyendo lo que el cliente espera
Plain Concepts ALM Tour 2013 - Estamos construyendo lo que el cliente esperaPlain Concepts ALM Tour 2013 - Estamos construyendo lo que el cliente espera
Plain Concepts ALM Tour 2013 - Estamos construyendo lo que el cliente espera
 
Plain Concepts ALM Tour 2013 - Maximizando la productividad de nuestros equipos
Plain Concepts ALM Tour 2013 - Maximizando la productividad de nuestros equiposPlain Concepts ALM Tour 2013 - Maximizando la productividad de nuestros equipos
Plain Concepts ALM Tour 2013 - Maximizando la productividad de nuestros equipos
 
Especificaciones ejecutables, acercando negocio y desarrollo
Especificaciones ejecutables, acercando negocio y desarrolloEspecificaciones ejecutables, acercando negocio y desarrollo
Especificaciones ejecutables, acercando negocio y desarrollo
 
Retrospective’s retrospective (extended version)
Retrospective’s retrospective (extended version)Retrospective’s retrospective (extended version)
Retrospective’s retrospective (extended version)
 
Lo que nadie te va a contar sobre Scrum
Lo que nadie te va a contar sobre ScrumLo que nadie te va a contar sobre Scrum
Lo que nadie te va a contar sobre Scrum
 
Agile Inception
Agile InceptionAgile Inception
Agile Inception
 
Construcciones automatizadas multiplataforma con TFS2010
Construcciones automatizadas multiplataforma con TFS2010Construcciones automatizadas multiplataforma con TFS2010
Construcciones automatizadas multiplataforma con TFS2010
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (12)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

Automatización de pruebas funcionales

  • 1. AUTOMATIZACIÓN DE PRUEBAS FUNCIONALES
  • 2. VICENÇ GARCÍA ALTÉS • Development Advisor en PlainConcepts • Professional Scrum Developer y Certified Scrum Master • Microsoft Certified Professional vigarcia@plainconcepts.com @vgaltes www.plainconcepts.com geeks.ms/blogs/devnettips
  • 3. TESTEO FUNCIONAL Definición: – Asegura que el software desarrollado está haciendo para lo que fue concebido, que cumple los requerimientos. No deben ser nuestros únicos tests.
  • 5. LA PIRÁMIDE INVERTIDA La base de la pirámide está construida por tests de interfaz de usuario – Frágiles – Complejos – Lentos
  • 6. LA PIRÁMIDE INVERTIDA • Mantener muchos tests “end-to-end” es duro: – Tardan en ejecutarse – Pueden necesitar muchos recursos – Hay caminos difíciles de testear – Cuando fallan, no sabemos exactamente donde o porqué lo han hecho – Están más acoplados con el entorno y tienen dependencias externas – Desde un punto de vista de refactorización, no dan la misma sensación de seguridad que los tests unitarios
  • 8. AUTOMATIZACIÓN • La repetición de los tests (de cualquier tipo) es necesaria ya que elimina regresiones. • Con la automatización eliminamos el desperdicio asociado a la repetición.
  • 9. AUTOMATIZACIÓN • La automatización es muy difícil – Requiere disciplina • Es muy tentador no escribir tests • Es muy tentador ver los tests como desperdicio • Les tests no son algo intuitivo – Requiere vigilancia • Alguien tiene que observar los resultados en rojo • Alguien tiene que reparar los ‘cristales rotos’ • Alguien tiene que evitar que la ‘tensión’ decline
  • 10. ¿DÓNDE SON BUENOS LOS TESTS DE UI AUTOMATIZADOS?
  • 11. Suite de regresión automatizada
  • 12. Suite de regresión automatizada • Automatizar pruebas manuales que hayan pasado con éxito • Convertir una grabación de Test Manager en Coded UI y añadirle aserciones.
  • 13. Suite de regresión automatizada • Cuidado! – No tomar como sustituto de otras pruebas – No invertir la pirámide
  • 14. Pruebas de regresión automatizadas de bugs
  • 15. Pruebas de regresión automatizadas de bugs • Al resolver un bug se crea una prueba automatizada que se lanza en una build para asegurarse que no vuelve a aparecer • Sobretodo útil en entornos “brownfield”
  • 17. Pruebas de humo automatizadas
  • 18. Pruebas de humo automatizadas • Una prueba de humo comprueba que unas cuantas interacciones clave con el sistema se hacen bien justo después de un despliegue. • Si se automatizan es mucho más rápido, cómodo y menos propenso a errores
  • 20. Refactorizando • Rescribiendo una parte del sistema que se tenga que seguir comportando externamente igual. • Podemos cubrirlo de pruebas de GUI y ponerlas en una build para refactorizar con más seguridad. • No es substituto de pruebas unitarias. • Útil en desarrollo brownfield.
  • 21. ¿CUANDO NO ES BUENO?
  • 22. ¿CUANDIO NO ES BUENO? • Para substituir otro tipo de pruebas que no se hacen por pereza o porque son complicadas. – Mejor pensar en como puedo poner pruebas unitarias • Si la GUI está en continuo cambio – Prototipando – Metiendo mucha funcionalidad nueva que afecta a la GUI
  • 24. Identificación de casos • Los identificaremos marcándo el Automation Status como planned en el MTM. • Los escenarios comunes los pondremos como shared steps en el MTM. • El orden lo marcamos con el campo order.
  • 25. Prueba de concepto • Hay que asegurarse que los tests seleccionados están soportados por Coded UI • Pueden haber controles personalizados que no lo estén y que hacerlos automatizables sea muy costoso.
  • 26. DEMO
  • 27. Recomendaciones • Utilizar múltiples mapas de UI – Cada mapa se puede asociar con una parte lógica de la aplicación – Cada tester puede trabajar en una sección de la aplicación sin interferir en el trabajo de los demás. – Los añadidos a la UI se pueden escalar incrementalmente con efectos mínimos en los otros tests.
  • 28. Recomendaciones • Extraer las funcionalidades comunes de los mapas UI a librerías comunes.
  • 29. Recomendaciones • Utilizar sincronización de objetos antes que wait/sleep estáticos – Asegurarse que tenemos puntos de sincronización que esperan que el objeto exista/esté disponible/esté activado/etc antes de realizar una operación crítica • WaitForControlReady(),WaitForControlExist() – Preferir la sincronización anterior antes que Playback.Wait() y antes que Thread.Sleep()
  • 30. Recomendaciones • Tratamiento de errores – Asegurarse que utilizamos captura de excepciones en todos los métodos de test
  • 31. Recomendaciones • Logging – Asegurarse que logueamos mensajes importantes – Console.WriteLine y Console.Error.WriteLine • Se redirijen al StandardOutput y al StandardError. • Se recomienda no utilizarlos
  • 32. Recomendaciones – Trace.WriteLine • Se muestra en la pantalla de Output de VS durante la fase de depuración, con lo que se puede perder entre los otros mensajes que se muestran. • Se recomienda utilizarlo en código de producción, pero no de test. – Debug.WriteLine • Lo mismo que el anterior, pero solo en compilaciones Debug
  • 33. Recomendaciones – TestContext.WriteLine • Se muestra en una sección a parte en el resultado de los tests. • La desventaja es que tenemos que pasar el TestContext allí donde queramos loguear. • Para los proyectos de test, es la solución preferida.
  • 34. Recomendaciones • Utilizar scripts de inicio y fin – [TestInitialize] y [TestCleanup] – [ClassInitialize] y [ClassCleanup] – [AssemblyInitialize] y [AssemblyCleanup]
  • 35. DEMO
  • 36. Do’s and Don’ts of UI Automation • Do(s) – Cada método grabado tiene que actuar sobre una página, formulario, dialog box, etc. – Utilizar el Coded UI Test Builder siempre que sea posible. – Poner el foco explícitamente en la ventana donde el test va a introducir datos. – Cuando sea posible, limitar cada método grabado a pocas acciones, a poder ser a una.
  • 37. Do’s and Don’ts of UI Automation – Crear un UIMap para cada modulo de nuestra aplicación e incluso para cada página. – Si estamos creando aserciones crear un método por cada aserción en el fichero UIMap.cs – Capturar screenshots en los fallos. – Dejar la UI en un estado conocido cuando un test ha terminado. – Loguear antes de hacer algo, no después (o ambas)
  • 38. Do’s and Don’ts of UI Automation – Loguear el origen del mensaje (framework, código de producción, test). – Loguear cada operación válida realizada por el test – Utilizar tests dirigidos por datos siempre que se pueda – Refactorizar siempre que sea posible
  • 39. Do’s and Don’ts of UI Automation • Don’t(s) – No modificar el fichero UIMap.designer.cs directamente. Los cambios se perderían. – No hacer un sleep después de cada operación de UI – No lanzar la aplicación cada vez que se ejecuta un test porque se gasta mucho tiempo. – No hardcodear strings en los tests. Esto incluye ID’s, rutas, etc.
  • 40. DEMO
  • 41. MUCHAS GRACIAS vigarcia@plainconcepts.com @vgaltes www.plainconcepts.com geeks.ms/blogs/devnettips