ASP.NET MVC Workshop Día 2

38
Workshop ASP.NET MVC Día 2 Rodolfo Finochietti MVP ASP.NET/IIS Lagash Systems [email protected] @rodolfof

description

Introducción a ASP.NET y otras tecnologías asociadas

Transcript of ASP.NET MVC Workshop Día 2

Page 1: ASP.NET MVC Workshop Día 2

WorkshopASP.NET MVC

Día 2

Rodolfo FinochiettiMVP ASP.NET/IISLagash [email protected]@rodolfof

Page 2: ASP.NET MVC Workshop Día 2

Agenda

• Diseño guiado por pruebas– Unit Testing– Mocking– Inyección de dependencias– TDD

• Data Validation

Page 3: ASP.NET MVC Workshop Día 2

Diseño guiado por pruebas

Page 4: ASP.NET MVC Workshop Día 2

¿Qué es un Test?

Page 5: ASP.NET MVC Workshop Día 2

Tipos de Tests

Unitario Integración

Page 6: ASP.NET MVC Workshop Día 2

Test unitario

• Prueba los componentes por separado

• Independiente

• Prueba un solo aspecto / funcionalidad

• Atómico y transaccional

Page 7: ASP.NET MVC Workshop Día 2

Test de Integración

• Prueba integración entre varios componentes

• Independiente

• Prueba un solo aspecto / funcionalidad

• Atómico y transaccional

Page 8: ASP.NET MVC Workshop Día 2

Scope Test de Integración

Vista Controller Servicio Entidad Repositorio

Scope Test Unitario

Scope Test Unitario

Scope Test Unitario

La diferencia esta en el scope

Vista Controller Servicio Entidad Repositorio

Page 9: ASP.NET MVC Workshop Día 2

Test Scope

¿Como limitar el scope?

Controller

Servicio

Page 10: ASP.NET MVC Workshop Día 2

Test Scope

¿Como limitar el scope?

Controller

Servicio

Repositorio Falso

Page 11: ASP.NET MVC Workshop Día 2

Inyección de dependencia

Page 12: ASP.NET MVC Workshop Día 2

Inyección de dependencia

Page 13: ASP.NET MVC Workshop Día 2

Inyección de dependencia

Page 14: ASP.NET MVC Workshop Día 2

Inyección de dependencia

Page 15: ASP.NET MVC Workshop Día 2

Inyección de dependencia

Page 16: ASP.NET MVC Workshop Día 2

Unit Test Pattern

Setup

Ejecución

Verificación

Page 17: ASP.NET MVC Workshop Día 2

Anti-patterns

• Test que prueben mas de una situación

• Test dependientes / ejecución en orden

• Test con aserciones débiles / humanas

• Try Catch

Page 18: ASP.NET MVC Workshop Día 2

TDD

“En el largo plazo todos estaremos muertos”

John Maynard Keynes

Page 19: ASP.NET MVC Workshop Día 2

¿Que es TDD?

• Es una técnica en la que se escriben los casos de prueba primero y luego el código aplicativo

• Las pruebas guían o dictan el código que se desarrolla

• Las pruebas son una indicación de intención– Son un especificación de que es lo que hace el

código– Son un parte importante de la documentación

Page 20: ASP.NET MVC Workshop Día 2

Orígenes

• Ambientes de objetos puros– Reducir el tiempo invertido de pruebas

• Metodologías agiles• Proceso de pruebas– Falta de metodologías de pruebas de caja blanca– Necesidad de asegurar la calidad desde el

comienzo– Métricas mas difíciles de obtener

Page 21: ASP.NET MVC Workshop Día 2

Red, Green, RefactorEscribir un test

Compilar

Hacer que compile

Ejecutar el test,y ver como falla

Escribir solo códigonecesario para pasar el

test

Ejecutar el test,y ver como pasa

Refactorizar el código

Page 22: ASP.NET MVC Workshop Día 2

Reglas Generales

• Siempre se programan las pruebas y luego se programan el código que satisface las pruebas– Solo se escribe código si evita que algún test falle– Un test unitario solo debe interactuar con el código– Si se detecta un bug, su reporte debe referenciar a una prueba

que falle• Las prueba deben poder ejecutarse y evaluarse

automáticamente• El código de las pruebas tiene la misma importancia que

el código de la aplicación– Evoluciona, se versiona, etc.

• TDD no reemplaza al testing tradicional

Page 23: ASP.NET MVC Workshop Día 2

Ciclo de vida abstracto

Planificar

Diseñar

Ejecutar

Evaluar

Page 24: ASP.NET MVC Workshop Día 2

Modelos de ciclo de vida

PlanificarDiseñar

EjecutarEvaluar

Planificar

Diseñar

Ejecutar

Evaluar

Ejecutar

Evaluar

Cascada Prototipos

Planificar

Diseñar

Ejecutar

Evaluar

Cíclico

Page 25: ASP.NET MVC Workshop Día 2

Diseña

Etapas en TDDEscribir un test

Compilar

Hacer que compile

Ejecutar el test,y ver como falla

Escribir solo códigonecesario para pasar los

tests que fallan

Ejecutar el test,y ver como pasa

Refactorizar el código

Diseñar

Ejecutar Diseñar

Evaluar

Page 26: ASP.NET MVC Workshop Día 2

¿Qué es el refactoring?

• "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure“ Martin Fowler

• Típicamente se hace en pequeños pasos• Hay menos riesgo de que el sistema se

“rompa”• Esta técnica evita las “parálisis”

Page 27: ASP.NET MVC Workshop Día 2

Refactorings• Add Parameter • Change Bidirectional Association to

Unidirectional • Change Reference to Value • Change Unidirectional Association to

Bidirectional • Change Value to Reference • Collapse Hierarchy • Consolidate Conditional Expression • Consolidate Duplicate Conditional

Fragments • Convert Dynamic to Static

Construction• Convert Static to Dynamic

Construction

•Form Template Method •Hide Delegate •Decompose Conditional •Duplicate Observed Data •Encapsulate Collection •Encapsulate Downcast •Encapsulate Field •Extract Class •Extract Interface •Extract Method •Extract Package•Extract Subclass •Extract Superclass

Page 28: ASP.NET MVC Workshop Día 2

Demo

Unit TestInyección de dependencias

MockingTDD

Page 29: ASP.NET MVC Workshop Día 2

Work Time

Page 30: ASP.NET MVC Workshop Día 2

Data Validation

Page 31: ASP.NET MVC Workshop Día 2

Todo se especifica en el modelo

Page 32: ASP.NET MVC Workshop Día 2

Todo se especifica en el modelo

Page 33: ASP.NET MVC Workshop Día 2

Código en la vista

Page 34: ASP.NET MVC Workshop Día 2

Que se transforma en HTML y JavaScript no intrusivo

Page 35: ASP.NET MVC Workshop Día 2

Demo

Data Validation

Page 36: ASP.NET MVC Workshop Día 2

Work Time

Page 37: ASP.NET MVC Workshop Día 2

Contacto

• Mail:– [email protected]

• Blogs:– http://shockbyte.net

• Twitter:– @rodolfof

Page 38: ASP.NET MVC Workshop Día 2

¡Gracias!