1 / 51

Testing , Testing , Testing

Testing , Testing , Testing. Ricardo.Minguez@microsoft.com http://blogs.msdn.com/rido. Gestión de pruebas de aplicaciones empresariales con Visual Studio 2005. 061127. Agenda. Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales

Download Presentation

Testing , Testing , Testing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Testing, Testing, Testing Ricardo.Minguez@microsoft.com http://blogs.msdn.com/rido Gestión de pruebas de aplicaciones empresariales con Visual Studio 2005 061127

  2. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas de Integración • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  3. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  4. Metodologías Ágiles • El código es el entregable más importante • Tiene que ejecutarse a menudo • Calidad del código • Soportable / Insoportable • Testeable / Detestable(*) • CleanCodethat Works (**) • Prácticas recomendadas • Refactoring • Pruebas Unitarias / TDD • Pruebas Automatizadas • Diseño bottom-up *Fuente: Martin Fowler ** Fuente: Kent Beck

  5. Relación entre las prácticas El plan de juego Cliente disponible 40 horas Metáfora Diseño Simple Refactoring Versiones reducidas Parejas Pruebas • Estándares Propiedad repartida Integración Continua

  6. Relación entre las prácticas El plan de juego Cliente disponible 40 horas Metáfora Diseño Simple Refactoring Versiones reducidas Parejas Pruebas Estándares Integración Continua Propiedad repartida Fuente: Kent Beck

  7. Mínimos MSF-Agile Diseño Simple Refactoring Pruebas Parejas * Integración Continua Estándares

  8. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas de Integración • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  9. Tipos de Pruebas • Unitarias (DeveloperTests) • Integración • Rendimiento (Carga, Fatiga..) • Funcionales(CustomerTests)

  10. Pruebas Unitarias • Se realizan por y para los desarrolladores • Nivel de clase/método • Ayudan a resolver defectos • Disminuyen el tiempo de desarrollo • Desarrollo guiado por pruebas (TDD) • Cobertura de código

  11. Pruebas de Integración • Aseguran que todos los componentes funcionan en conjunto • No sólo se prueba el código… • Sólo atacan a los interfaces públicos • Datos de prueba “suficientes”

  12. Pruebas Funcionales • Aseguran que se cumple la funcionalidad pactada • Escenarios de pruebas • Escritas por testers para el cliente • Dependen de un producto instalado • Datos de prueba “reales” • A veces no es rentable la automatización

  13. Pruebas de Rendimiento • Dependiendo del sistema • Carga de usuarios • Carga de datos • Fatiga • Plan de capacidad • Tamaño de Datos aproximado o superior • Nunca ejecutar las pruebas al final !!

  14. Code Coverage Code Profiler Change Management Work Item Tracking Reporting Project Site Integration Services Project Management Static Code Analyzer Class Designer Unit Testing Dynamic Code Analyzer Visio and UML Modeling Deployment Designer Big Build Application Designer Test Case Management Logical Infra. Designer Load Testing Visual Studio Professional Edition Team Foundation Client (includes CAL) Manual Testing Process and Architecture Guidance Visual Studio Industry Partners Visual Studio Team System Visual StudioTeam Architect Visual StudioTeam Developer Visual StudioTeam Test Visual StudioTeam Foundation

  15. Pruebas en el ciclo de vida Cada Hora Cada Día Cada Iteración Cada Versión

  16. Especificación Gestionar los usuarios de una aplicación web: Registro de usuarios (Nombre, contraseña, Email) Almacén en SQLServer Cifrar contraseñas Validar Credenciales Contraseñas Fuertes Validar email Comprobar que el email existe Si falla el registro indicar porqué Validación de usuarios Usuario/Contraseña

  17. Código::Esqueleto de la Solución • Crear Solución • TFS • BBDD Gestionar los usuarios de una aplicación web: Registro de usuarios (Nombre, contraseña, Email) Almacén en SQLServer Cifrar contraseñas Validar Credenciales Contraseñas Fuertes Validar email Comprobar que el email existe Si falla el registro indicar porqué Validación de usuarios Usuario/Contraseña

  18. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas de Integración • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  19. Características de las pruebas Unitarias • Prueban una única funcionalidad • Son rápidas • Se ejecutan en todas las máquinas • Se ejecutan muchas veces (build+)

  20. ¿Qué probar? • La lógica de negocio • Código Frágil (xpath,regex …) • ¿Bases de datos? • Patrones pruebas CRUD • ¿Código Generado? • (DataSets, Web References)

  21. Anatomía de una prueba • El patrón de las 3 A [TestMethod] publicvoidCreateUser() { stringuserName = “rido”; User u = newUser(userName); Assert.AreEqual(“rido”, u.Name); }

  22. Código::Visual Studio Test Projects • Demos • VS TestProjects • Test Windows • TestRuns, TestResults • SimpelUnit Test • RegEx

  23. Test DrivenDevelopment (I) • Problema • Cambios en el código crean defectos • Miedo a realizar cambios, diseño deteriorado • Un buen diseño OO es difícil a la primera • Más tiempo probando que escribiendo código • Solución • Establecer un proceso que permita: • Modificar cambios con confianza • Mejorar el diseño incrementalmente

  24. Test DrivenDevelopment (II) • Los dos gorras • Añadir funcionalidad • Mejorar el diseño • Secuencia TDD • Escribir una prueba que falle • Hacer que el código compile • Ejecutar la prueba (falla) • Añadir el código para que pase • Mejorar el código (Refactoring)

  25. Test DrivenDevelopment (III) • Escribir las pruebas antes que el código a probar • Las pruebas unitarias hacen de “mini-spec” • Sirven como pruebas de regresión

  26. Las 6 reglas • Escribir primero la prueba • Nunca escribir una prueba que pasa la primera vez • Empezar con el caso “nulo” • Realizar la “mínima” implementación para pasar la prueba • Pruebas repetibles • Usar MockObjects cuando hay dependencias

  27. Código::TDD en acción • Cifrado • Validar datos de entrada • Capa de acceso a datos Gestionar los usuarios de una aplicación web: Registro de usuarios (Nombre, contraseña, Email) Almacén en SQLServer • Cifrar contraseñas Validar Credenciales Contraseñas Fuertes Validar email Comprobar que el email existe Si falla el registro indicar porqué Validación de usuarios Usuario/Contraseña

  28. Beneficios • El código funciona(*) !! • Facilidad para realizar cambios • Diseño Emergente( Refactoring ) • Funcionales • Defectos • Documentación • Ejemplos • Cobertura de código • Reducción de tiempo desarrollo • Mantenimiento

  29. Código::Integrar • Validar contraseña • Detallar problemas al registrar usuario Gestionar los usuarios de una aplicación web: Registro de usuarios (Nombre, contraseña, Email) Almacén en SQLServer • Cifrar contraseñas Validar Credenciales Contraseñas Fuertes Validar email Comprobar que el email existe Si falla el registro indicar porqué Validación de usuarios Usuario/Contraseña

  30. Patrones de pruebas unitarias • Objetivo • Aislarse de las dependencias • Evitar código duplicado • Patrones • Fakeobjects • Stubs • Inversion del Control (IoC) • MockObjects

  31. Código::MockObjects • Comprobar si existe un mail (usar WebService) Gestionar los usuarios de una aplicación web: Registro de usuarios (Nombre, contraseña, Email) Almacén en SQLServer • Cifrar contraseñas Validar Credenciales Contraseñas Fuertes Validar email Comprobar que el email existe Si falla el registro indicar porqué Validación de usuarios Usuario/Contraseña

  32. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas de Integración • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  33. Pruebas de Integración • Diferencias entre unitarias e integración • Depende de la “altura a la que se mire” • Entendibles por un analista • Ejecutar las pruebas en su contenedor • ASPNet Host • Configuración • Servicios Externos Simuladores

  34. Gestión de casos de prueba • Configuración de las pruebas • Casos de prueba == Datos de prueba • BBDD con datos de prueba • DataBinding • Evolucionar con la funcionalidad • Listas de pruebas

  35. Código::Última Integración • Integrar todos los componentes Gestionar los usuarios de una aplicación web: Registro de usuarios (Nombre, contraseña, Email) Almacén en SQLServer • Cifrar contraseñas Validar Credenciales Contraseñas Fuertes Validar email Comprobar que el email existe Si falla el registro indicar porqué Validación de usuarios Usuario/Contraseña

  36. Herramientas • Cobertura de Código • Trx2html • NMock2 • Integración con TeamBuild

  37. Break • 15 minutos para un café

  38. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas de Integración • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  39. Pruebas funcionales • Probar lo que va a ver (usar) el cliente • Entorno de Preproducción • Se prueba el código y además: • Configuración • Red • Seguridad • Plataforma • Interfaz de Usuario • Se valida el diseño

  40. Pruebas Web • Simular el uso desde el punto de vista del usuario • No se requiere el mismo detalle • Automatización más complicada • Dependen de una instalación • Grabación desde IE • Nivel HTTP • Otras plataformas de prueba se basan en automatizar el cliente • Nivel JS

  41. Pruebas Manuales • Requieren rellenar un documento • No se pueden automatizar!! • Pero están integradas en VS (TestRuns, TestResults) • Incluso se puede medir la cobertura

  42. Herramientas adicionales • Convertir las pruebas a código • Fiddler

  43. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas de Integración • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  44. Pruebas de Rendimiento • Asegurar tiempo de respuesta en situaciones críticas • Volumen de datos • Usuarios concurrentes • Fatiga • Reutilizar otras pruebas • Unitarias • Integración • Web

  45. Lab

  46. Almacén de los resultados • Base de datos (SQLExpress) • Configurable • Desde VS • Desde el Controller • Exportar los resultados

  47. Agenda • Introducción a las pruebas • Tipos de Pruebas • Pruebas Unitarias • Pruebas de Integración • Pruebas Funcionales • Pruebas de Rendimiento • Integración con TeamFoundation

  48. TeamFoundation • Integración con el ciclo de vida • Gestión de casos de prueba • Integración con WorkItems • TeamBuild • Ejecuta una lista de pruebas • ProcessTemplate • Reports • Indicadores de Calidad

  49. Conclusiones • Las pruebas afectan otras disciplinas • No sólo a los testers • Diseño • Desarrollo • Gestión de proyecto • Relación con el cliente • VS no sólo para programadores • Integración con VS • Integración con TFS

  50. Tipos de prueba • Características

More Related